Memory leaks fixed

git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@5697 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
gbamber
2017-01-25 09:33:15 +00:00
parent 7b7bf9aa54
commit ca3030d268
7 changed files with 440 additions and 360 deletions

View File

@ -23,10 +23,10 @@
<VersionInfo>
<UseVersionInfo Value="True"/>
<MinorVersionNr Value="1"/>
<RevisionNr Value="13"/>
<RevisionNr Value="14"/>
<StringTable CompanyName="minesadorada" FileDescription="Tray app that works with LazAutoUpdate apps" InternalName="lazautoupdater" LegalCopyright="LGPLv2" LegalTrademarks="(c)2014 Gordon Bamber" OriginalFilename="trayupdater" ProductName="Lazarus 1.x FPC 2.6.x" ProductVersion="0.1.11.2"/>
</VersionInfo>
<BuildModes Count="4">
<BuildModes Count="5">
<Item1 Name="Win32 Release" Default="True"/>
<Item2 Name="Win64 Release">
<CompilerOptions>
@ -101,6 +101,9 @@
</Linking>
<Other>
<CustomOptions Value="-FcUTF8"/>
<OtherDefines Count="1">
<Define0 Value="DEBUGMODE"/>
</OtherDefines>
</Other>
</CompilerOptions>
</Item3>
@ -143,6 +146,58 @@
</Other>
</CompilerOptions>
</Item4>
<Item5 Name="Win64 Debug">
<CompilerOptions>
<Version Value="11"/>
<PathDelim Value="\"/>
<Target>
<Filename Value="compiled\win64debug\lautraynotifywin64"/>
</Target>
<SearchPaths>
<IncludeFiles Value="$(ProjOutDir)"/>
<OtherUnitFiles Value="..\packagesource"/>
<UnitOutputDirectory Value="lib\$(TargetCPU)-$(TargetOS)"/>
</SearchPaths>
<Parsing>
<SyntaxOptions>
<IncludeAssertionCode Value="True"/>
</SyntaxOptions>
</Parsing>
<CodeGeneration>
<SmartLinkUnit Value="True"/>
<Checks>
<IOChecks Value="True"/>
<RangeChecks Value="True"/>
<OverflowChecks Value="True"/>
<StackChecks Value="True"/>
</Checks>
<VerifyObjMethodCallValidity Value="True"/>
<TargetCPU Value="x86_64"/>
<TargetOS Value="win64"/>
<Optimizations>
<OptimizationLevel Value="3"/>
</Optimizations>
</CodeGeneration>
<Linking>
<Debugging>
<UseHeaptrc Value="True"/>
</Debugging>
<LinkSmart Value="True"/>
<Options>
<Win32>
<GraphicApplication Value="True"/>
</Win32>
</Options>
</Linking>
<Other>
<CustomOptions Value="-FcUTF8
-dDEBUGMODE"/>
<OtherDefines Count="1">
<Define0 Value="DEBUGMODE"/>
</OtherDefines>
</Other>
</CompilerOptions>
</Item5>
</BuildModes>
<PublishOptions>
<Version Value="2"/>

View File

@ -3,16 +3,17 @@
<ProjectSession>
<PathDelim Value="\"/>
<Version Value="10"/>
<BuildModes Active="Win64 Release"/>
<BuildModes Active="Win64 Debug"/>
<Units Count="30">
<Unit0>
<Filename Value="trayupdater.lpr"/>
<IsPartOfProject Value="True"/>
<IsVisibleTab Value="True"/>
<EditorIndex Value="2"/>
<WindowIndex Value="1"/>
<TopLine Value="21"/>
<CursorPos X="58" Y="41"/>
<UsageCount Value="181"/>
<TopLine Value="3"/>
<CursorPos X="19" Y="10"/>
<UsageCount Value="182"/>
<Loaded Value="True"/>
</Unit0>
<Unit1>
@ -21,14 +22,18 @@
<ComponentName Value="mainform"/>
<HasResources Value="True"/>
<ResourceBaseClass Value="Form"/>
<IsVisibleTab Value="True"/>
<WindowIndex Value="1"/>
<TopLine Value="540"/>
<CursorPos X="50" Y="552"/>
<CursorPos Y="23"/>
<ExtraEditorCount Value="1"/>
<ExtraEditor1>
<IsVisibleTab Value="True"/>
<TopLine Value="92"/>
<CursorPos X="52" Y="119"/>
</ExtraEditor1>
<ComponentState Value="1"/>
<UsageCount Value="181"/>
<UsageCount Value="182"/>
<Bookmarks Count="1">
<Item0 X="3" Y="480" ID="2"/>
<Item0 X="3" Y="481" ID="2"/>
</Bookmarks>
<Loaded Value="True"/>
<LoadedDesigner Value="True"/>
@ -41,9 +46,8 @@
<ResourceBaseClass Value="Form"/>
<EditorIndex Value="3"/>
<WindowIndex Value="1"/>
<TopLine Value="150"/>
<CursorPos X="37" Y="224"/>
<UsageCount Value="177"/>
<CursorPos X="2" Y="22"/>
<UsageCount Value="178"/>
<Loaded Value="True"/>
<LoadedDesigner Value="True"/>
</Unit2>
@ -251,126 +255,129 @@
<OtherDefines Count="1">
<Define0 Value="DEBUGMODE"/>
</OtherDefines>
<General>
<ActiveWindowIndexAtStart Value="1"/>
</General>
<JumpHistory Count="30" HistoryIndex="29">
<Position1>
<Filename Value="trayupdater.lpr"/>
<Caret Line="63" TopLine="14"/>
<Filename Value="..\ulazautoupdate.pas"/>
<Caret Column="17"/>
</Position1>
<Position2>
<Filename Value="trayupdater.lpr"/>
<Caret Line="57" Column="30" TopLine="19"/>
<Filename Value="..\ulazautoupdate.pas"/>
<Caret Line="852" Column="20" TopLine="814"/>
</Position2>
<Position3>
<Filename Value="umainform.pas"/>
<Caret Line="593" Column="31" TopLine="587"/>
<Filename Value="..\ulazautoupdate.pas"/>
<Caret Line="932" Column="16" TopLine="894"/>
</Position3>
<Position4>
<Filename Value="..\ulazautoupdate.pas"/>
<Caret Line="1482" Column="40" TopLine="1460"/>
<Caret Line="1120" Column="18" TopLine="1083"/>
</Position4>
<Position5>
<Filename Value="umainform.pas"/>
<Caret Line="137" TopLine="109"/>
<Filename Value="..\ulazautoupdate.pas"/>
<Caret Line="1327" Column="18" TopLine="1290"/>
</Position5>
<Position6>
<Filename Value="..\ulazautoupdate.pas"/>
<Caret Line="2296" Column="87" TopLine="2285"/>
<Caret Line="1460" Column="16" TopLine="1422"/>
</Position6>
<Position7>
<Filename Value="..\ulazautoupdate.pas"/>
<Caret Column="17"/>
<Caret Line="1528" Column="16" TopLine="1490"/>
</Position7>
<Position8>
<Filename Value="..\ulazautoupdate.pas"/>
<Caret Line="852" Column="20" TopLine="814"/>
<Caret Line="1572" Column="20" TopLine="1535"/>
</Position8>
<Position9>
<Filename Value="..\ulazautoupdate.pas"/>
<Caret Line="932" Column="16" TopLine="894"/>
<Caret Line="1611" Column="20" TopLine="1573"/>
</Position9>
<Position10>
<Filename Value="..\ulazautoupdate.pas"/>
<Caret Line="1120" Column="18" TopLine="1083"/>
<Caret Line="1696" Column="16" TopLine="1659"/>
</Position10>
<Position11>
<Filename Value="..\ulazautoupdate.pas"/>
<Caret Line="1327" Column="18" TopLine="1290"/>
<Caret Line="1729" Column="20" TopLine="1692"/>
</Position11>
<Position12>
<Filename Value="..\ulazautoupdate.pas"/>
<Caret Line="1460" Column="16" TopLine="1422"/>
<Caret Line="1820" Column="22" TopLine="1783"/>
</Position12>
<Position13>
<Filename Value="..\ulazautoupdate.pas"/>
<Caret Line="1528" Column="16" TopLine="1490"/>
<Caret Line="1857" Column="25" TopLine="1820"/>
</Position13>
<Position14>
<Filename Value="..\ulazautoupdate.pas"/>
<Caret Line="1572" Column="20" TopLine="1535"/>
<Caret Line="1892" Column="27" TopLine="1855"/>
</Position14>
<Position15>
<Filename Value="..\ulazautoupdate.pas"/>
<Caret Line="1611" Column="20" TopLine="1573"/>
<Caret Line="1976" Column="22" TopLine="1939"/>
</Position15>
<Position16>
<Filename Value="..\ulazautoupdate.pas"/>
<Caret Line="1696" Column="16" TopLine="1659"/>
<Caret Line="2030" Column="25" TopLine="1993"/>
</Position16>
<Position17>
<Filename Value="..\ulazautoupdate.pas"/>
<Caret Line="1729" Column="20" TopLine="1692"/>
<Caret Line="2071" Column="27" TopLine="2034"/>
</Position17>
<Position18>
<Filename Value="..\ulazautoupdate.pas"/>
<Caret Line="1820" Column="22" TopLine="1783"/>
<Filename Value="umainform.pas"/>
<Caret Line="407" Column="36" TopLine="386"/>
</Position18>
<Position19>
<Filename Value="..\ulazautoupdate.pas"/>
<Caret Line="1857" Column="25" TopLine="1820"/>
<Filename Value="umainform.pas"/>
<Caret Line="496" Column="46" TopLine="468"/>
</Position19>
<Position20>
<Filename Value="..\ulazautoupdate.pas"/>
<Caret Line="1892" Column="27" TopLine="1855"/>
<Filename Value="umainform.pas"/>
<Caret Line="497" Column="37" TopLine="468"/>
</Position20>
<Position21>
<Filename Value="..\ulazautoupdate.pas"/>
<Caret Line="1976" Column="22" TopLine="1939"/>
<Filename Value="umainform.pas"/>
<Caret Line="502" Column="46" TopLine="468"/>
</Position21>
<Position22>
<Filename Value="..\ulazautoupdate.pas"/>
<Caret Line="2030" Column="25" TopLine="1993"/>
<Filename Value="umainform.pas"/>
<Caret Line="73" Column="12" TopLine="50"/>
</Position22>
<Position23>
<Filename Value="..\ulazautoupdate.pas"/>
<Caret Line="2071" Column="27" TopLine="2034"/>
<Filename Value="umainform.pas"/>
<Caret Line="563" Column="9" TopLine="540"/>
</Position23>
<Position24>
<Filename Value="umainform.pas"/>
<Caret Line="407" Column="36" TopLine="386"/>
<Caret Line="572" Column="15" TopLine="540"/>
</Position24>
<Position25>
<Filename Value="umainform.pas"/>
<Caret Line="496" Column="46" TopLine="468"/>
<Caret Line="735" Column="27" TopLine="715"/>
</Position25>
<Position26>
<Filename Value="umainform.pas"/>
<Caret Line="497" Column="37" TopLine="468"/>
<Caret Line="77" Column="73" TopLine="50"/>
</Position26>
<Position27>
<Filename Value="umainform.pas"/>
<Caret Line="502" Column="46" TopLine="468"/>
<Caret Line="664" Column="3" TopLine="677"/>
</Position27>
<Position28>
<Filename Value="umainform.pas"/>
<Caret Line="73" Column="12" TopLine="50"/>
<Caret Line="746" Column="26" TopLine="715"/>
</Position28>
<Position29>
<Filename Value="umainform.pas"/>
<Caret Line="563" Column="9" TopLine="540"/>
<Filename Value="trayupdater.lpr"/>
<Caret Line="36" Column="30" TopLine="21"/>
</Position29>
<Position30>
<Filename Value="umainform.pas"/>
<Caret Line="572" Column="15" TopLine="540"/>
<Caret Line="743" Column="48" TopLine="719"/>
</Position30>
</JumpHistory>
</ProjectSession>

View File

@ -172,7 +172,6 @@ object configform: Tconfigform
ClientHeight = 223
ClientWidth = 600
TabOrder = 1
OnClick = grp_updateintervalClick
object cmd_Close: TBitBtn
Left = 228
Height = 30

View File

@ -1,11 +1,31 @@
unit uconfigform;
{ LazAutoUpdater Tray Updater
Copyright (C)2014 Gordon Bamber minesadorada@charcodelvalle.com
An example of using LazAutoUpdate as a silent updater
This source is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free
Software Foundation; either version 2 of the License, or (at your option)
any later version.
This code is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
details.
A copy of the GNU General Public License is available on the World Wide Web
at <http://www.gnu.org/copyleft/gpl.html>. You can also obtain it by writing
to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
MA 02111-1307, USA.
}
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, Forms, Controls, Dialogs, Buttons,
SysUtils, Forms, Controls, Dialogs, Buttons,
StdCtrls, EditBtn;
type
@ -53,7 +73,6 @@ Tconfigform = class(TForm)
procedure cmb_IntervalTypeChange(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure grp_updateintervalClick(Sender: TObject);
private
{ private declarations }
procedure DoInitialiseCombobox;
@ -280,9 +299,4 @@ begin
bDetailsChanged := False;
end;
procedure Tconfigform.grp_updateintervalClick(Sender: TObject);
begin
end;
end.

View File

@ -7,7 +7,6 @@ object mainform: Tmainform
Caption = 'mainform'
OnCloseQuery = FormCloseQuery
OnCreate = FormCreate
OnShow = FormShow
OnWindowStateChange = FormWindowStateChange
Position = poScreenCenter
ShowInTaskBar = stNever
@ -80,7 +79,7 @@ object mainform: Tmainform
Left = 128
Top = 16
end
object EventLog1: TEventLog
object Logger: TEventLog
AppendContent = False
LogType = ltFile
Active = False

View File

@ -39,13 +39,15 @@ VERSION HISTORY
0.1.12: Commit to svn
0.1.13: Updated January 2017
Ini filename uses C_PFX
0.1.14: Memory leaks fixed
0.1.15: ??
}
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, LazFileUtils,Forms, Controls, Graphics, Dialogs, ExtCtrls,
Classes, SysUtils, FileUtil, LazFileUtils, Forms, Dialogs, ExtCtrls,
Menus, uLongTimer, ulazautoupdate, inifiles, eventlog, strUtils, uconfigform
{$IFDEF WINDOWS}, registry{$ENDIF};
@ -82,7 +84,6 @@ Tmainform = class(TForm)
TrayIcon1: TTrayIcon;
procedure FormCloseQuery(Sender: TObject; var CanClose: boolean);
procedure FormCreate(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure FormWindowStateChange(Sender: TObject);
procedure idleReminderTimer(Sender: TObject);
procedure LazAutoUpdate1DebugEvent(Sender: TObject; WhereAt, Message: string);
@ -125,7 +126,7 @@ end;
var
mainform: Tmainform;
Const
const
{$IFDEF WINDOWS}
C_OS = 'win';
{$ELSE}
@ -665,13 +666,15 @@ begin
DebugMode := True
else
DebugMode := False;
{$IFDEF DEBUGMODE}DebugMode := True;{$ENDIF}
{$IFDEF DEBUGMODE}
DebugMode := True;
{$ENDIF}
// Initialise the App's main INI file
Try
try
INI := TIniFile.Create(GetAppConfigDirUTF8(False) + C_INIFilename);
Except
except
sleep(4000);
If (INI = Nil) then
if (INI = nil) then
INI := TIniFile.Create(GetAppConfigDirUTF8(False) + C_INIFilename);
end;
INI.CacheUpdates := False;
@ -702,7 +705,8 @@ begin
// Logger.Identification := Application.Title;
// Fetch the location of any trayicon INI on the users system
szImportINIPath := GetAppConfigDirUTF8(False, True);
szImportINIPath := AnsiReplaceText(szImportINIPath, Application.Title, 'updatehm' + C_PFX);
szImportINIPath := AnsiReplaceText(szImportINIPath, Application.Title,
'updatehm' + C_PFX);
szImportINIPath := AppendPathDelim(szImportINIPath) + C_LAUTRayINI;
if DebugMode then
Logger.Debug('szImportINIPath=' + szImportINIPath);
@ -724,10 +728,6 @@ begin
mnu_SelfCheck.Visible := DebugMode;
end;
procedure Tmainform.FormShow(Sender: TObject);
begin
end;
procedure Tmainform.FormCloseQuery(Sender: TObject; var CanClose: boolean);
var
i: integer;
@ -738,11 +738,14 @@ begin
CanClose := False;
end
else
// Clean up memory No leaks (V0.1.14)
begin
if DebugMode then
begin
Logger.Log('User closed application');
if DebugMode then
Logger.Active := False;
FreeAndNil(Logger);
end;
CanClose := True;
end;
if CanClose then
@ -754,6 +757,9 @@ begin
LongTimerArray[i].Enabled := False;
FreeAndNil(LongTimerArray[i]);
end;
SetLength(AppRecArray, 0);
FreeAndNil(AppRecArray);
FreeAndNil(INI);
end;
end;