Recent

Author Topic: TCHMHelpDatabase+TLHelpConnector memory leaks  (Read 883 times)

Mr.Madguy

  • Sr. Member
  • ****
  • Posts: 447
TCHMHelpDatabase+TLHelpConnector memory leaks
« on: October 11, 2018, 02:44:43 pm »
So, my project works perfectly. Only one thing left - cross-platform help. I wanted to add LHelp.exe support to my program - the same help viewer, Lazarus itself uses. It works properly, but heaptrc reports several memory leaks in LazHelpCHM and LHelpControl, when I close my application, if I show any help. I've done everything according to this article and \lazarus\components\chmhelp\democontrol\ContextHelpDemo demo project. This project also causes exactly the same memory leaks. Do I miss something? Or it's known bug?

Windows 7 Pro 64bit
Lazarus 1.8.4 + FPC 3.0.4 64bit
« Last Edit: October 11, 2018, 02:50:35 pm by Mr.Madguy »
DynamicData 3.0 is released!
Since now development is frozen - only optimization passes will be made at some point.
Lack of multiple inheritance turns it into abomination.

wp

  • Hero Member
  • *****
  • Posts: 6158
Re: TCHMHelpDatabase+TLHelpConnector memory leaks
« Reply #1 on: October 11, 2018, 03:08:55 pm »
It looks to me that TLHelpConnector (unit LazHelpCHM) creates the internal FConnection in TLHelpConnectonr.ShowHelp, but does not destroy it any more.

It helps for me to add this destructor:
Code: Pascal  [Select]
  1. destructor TLHelpConnector.Destroy;
  2. begin
  3.   FConnection.Free;
  4.   inherited;
  5. end;

Please modify LazHelpCHM this way, recompile the lhelpcontrolpkg and test. If it works for you, too, I'll apply this to trunk.
Lazarus trunk / fpc 3.0.4 / all 32-bit on Win-10

Mr.Madguy

  • Sr. Member
  • ****
  • Posts: 447
Re: TCHMHelpDatabase+TLHelpConnector memory leaks
« Reply #2 on: October 11, 2018, 03:20:25 pm »
It looks to me that TLHelpConnector (unit LazHelpCHM) creates the internal FConnection in TLHelpConnectonr.ShowHelp, but does not destroy it any more.

It helps for me to add this destructor:
Code: Pascal  [Select]
  1. destructor TLHelpConnector.Destroy;
  2. begin
  3.   FConnection.Free;
  4.   inherited;
  5. end;

Please modify LazHelpCHM this way, recompile the lhelpcontrolpkg and test. If it works for you, too, I'll apply this to trunk.

Yeah, it works. Thanks.
DynamicData 3.0 is released!
Since now development is frozen - only optimization passes will be made at some point.
Lack of multiple inheritance turns it into abomination.

wp

  • Hero Member
  • *****
  • Posts: 6158
Re: TCHMHelpDatabase+TLHelpConnector memory leaks
« Reply #3 on: October 11, 2018, 03:30:35 pm »
Fixed in r59289. Will be in Laz 2.0.
Lazarus trunk / fpc 3.0.4 / all 32-bit on Win-10