From d400a7e51a3a254054c71a2ae473292ca944495c Mon Sep 17 00:00:00 2001 From: mattias Date: Mon, 20 Jun 2011 19:42:25 +0000 Subject: [PATCH] chmhelp: fixed mem leak git-svn-id: trunk@31314 - --- .../chmhelp/packages/idehelp/chmlcl.pas | 41 +++++++++++++++---- 1 file changed, 32 insertions(+), 9 deletions(-) diff --git a/components/chmhelp/packages/idehelp/chmlcl.pas b/components/chmhelp/packages/idehelp/chmlcl.pas index e8a7158510..426274a0eb 100644 --- a/components/chmhelp/packages/idehelp/chmlcl.pas +++ b/components/chmhelp/packages/idehelp/chmlcl.pas @@ -5,31 +5,38 @@ unit ChmLcl; interface uses - LazHelpIntf, HelpFPDoc; + Classes, LazHelpIntf, HelpFPDoc; const sLclUnits = 'LCL - Lazarus component library'; +type + + { TLclChmHelpDatabase } + + TLclChmHelpDatabase = class(TFPDocHTMLHelpDatabase) + private + FBaseURL: THelpBaseURLObject; + public + constructor Create(TheOwner: TComponent); override; + destructor Destroy; override; + end; + procedure RegisterLclHelpDatabase; var - LCLHelpDatabase: TFPDocHTMLHelpDatabase = nil; + LCLHelpDatabase: TLclChmHelpDatabase = nil; implementation procedure RegisterLclHelpDatabase; var FPDocNode: THelpNode; - BaseURL: THelpBaseURLObject; DirItem: THelpDBISourceDirectory; begin if Assigned(LCLHelpDatabase) then Exit; - LCLHelpDatabase := TFPDocHTMLHelpDatabase( - HelpDatabases.CreateHelpDatabase(sLclUnits, TFPDocHTMLHelpDatabase, True)); - - BaseURL := THelpBaseURLObject.Create; - BaseURL.BaseURL := 'lcl.chm://'; - LCLHelpDatabase.BasePathObject := BaseURL; + LCLHelpDatabase := TLclChmHelpDatabase( + HelpDatabases.CreateHelpDatabase(sLclUnits, TLclChmHelpDatabase, True)); // FPDoc nodes for units in the LCL FPDocNode := THelpNode.CreateURL(LCLHelpDatabase, @@ -41,5 +48,21 @@ begin LCLHelpDatabase.RegisterItem(DirItem); end; +{ TLclChmHelpDatabase } + +constructor TLclChmHelpDatabase.Create(TheOwner: TComponent); +begin + inherited Create(TheOwner); + FBaseURL := THelpBaseURLObject.Create; + FBaseURL.BaseURL := 'lcl.chm://'; + BasePathObject := FBaseURL; +end; + +destructor TLclChmHelpDatabase.Destroy; +begin + FBaseURL.Free; + inherited Destroy; +end; + end.