From a63bbb7f847496a98a5c1f7045b1c8c89de7f3dc Mon Sep 17 00:00:00 2001 From: paul Date: Mon, 14 Sep 2009 23:44:35 +0000 Subject: [PATCH] components: chmhelp: fix few memory leaks git-svn-id: trunk@21705 - --- .../chmhelp/packages/help/lhelpcontrol.pas | 60 ++++++++++--------- 1 file changed, 33 insertions(+), 27 deletions(-) diff --git a/components/chmhelp/packages/help/lhelpcontrol.pas b/components/chmhelp/packages/help/lhelpcontrol.pas index da7e48405d..545d80bafe 100644 --- a/components/chmhelp/packages/help/lhelpcontrol.pas +++ b/components/chmhelp/packages/help/lhelpcontrol.pas @@ -95,7 +95,6 @@ begin fServerOut.Free; fServerIn.Free; inherited Destroy; - end; function TLHelpConnection.ServerRunning: Boolean; @@ -121,6 +120,7 @@ begin with TProcessUTF8.Create(nil) do begin CommandLine := ServerExe + ' --ipcname ' + NameForServer; Execute; + Free; end; // give the server some time to get started for X := 0 to 40 do begin @@ -135,47 +135,53 @@ end; function TLHelpConnection.OpenURL(HelpFileName: String; Url: String): TLHelpResponse; var -UrlRequest: TUrlRequest; -Stream: TMemoryStream; + UrlRequest: TUrlRequest; + Stream: TMemoryStream; begin Stream := TMemoryStream.Create; - UrlRequest.FileRequest.FileName := HelpFileName+#0; - UrlRequest.FileRequest.RequestType := rtURL; - UrlRequest.Url := Url+#0; - Stream.Write(UrlRequest,SizeOf(UrlRequest)); - Result := SendMessage(Stream); - - // Do I need to free the stream?? the example doesn't - - + try + UrlRequest.FileRequest.FileName := HelpFileName+#0; + UrlRequest.FileRequest.RequestType := rtURL; + UrlRequest.Url := Url+#0; + Stream.Write(UrlRequest,SizeOf(UrlRequest)); + Result := SendMessage(Stream); + finally + Stream.Free; + end; end; function TLHelpConnection.OpenContext(HelpFileName: String; Context: THelpContext) : TLHelpResponse; var -ContextRequest: TContextRequest; -Stream: TMemoryStream; + ContextRequest: TContextRequest; + Stream: TMemoryStream; begin Stream := TMemoryStream.Create; - ContextRequest.FileRequest.FileName := HelpFileName+#0; - ContextRequest.FileRequest.RequestType := rtContext; - ContextRequest.HelpContext := Context; - Stream.Write(ContextRequest, SizeOf(ContextRequest)); - Result := SendMessage(Stream); - // Do I need to free the stream?? the example doesn't + try + ContextRequest.FileRequest.FileName := HelpFileName+#0; + ContextRequest.FileRequest.RequestType := rtContext; + ContextRequest.HelpContext := Context; + Stream.Write(ContextRequest, SizeOf(ContextRequest)); + Result := SendMessage(Stream); + finally + Stream.Free; + end; end; function TLHelpConnection.OpenFile(HelpFileName: String): TLHelpResponse; var -FileRequest : TFileRequest; -Stream: TMemoryStream; + FileRequest : TFileRequest; + Stream: TMemoryStream; begin Stream := TMemoryStream.Create; - FileRequest.RequestType := rtFile; - FileRequest.FileName := HelpFileName+#0; - Stream.Write(FileRequest, SizeOf(FileRequest)); - Result := SendMessage(Stream); - // Do I need to free the stream?? the example doesn't + try + FileRequest.RequestType := rtFile; + FileRequest.FileName := HelpFileName+#0; + Stream.Write(FileRequest, SizeOf(FileRequest)); + Result := SendMessage(Stream); + finally + Stream.Free; + end; end; end.