bunch of cleanup

This commit is contained in:
Dark Byte 2016-06-22 12:12:11 +02:00
parent b3cf0005ac
commit b507b45343
18 changed files with 128 additions and 320 deletions

View File

@ -437,6 +437,7 @@ begin
x[bufsize]:=#0;
result:=x;
freemem(x);
x:=nil;
end;
8: //array of bytes
@ -1891,6 +1892,7 @@ var
user, domain: string;
begin
Result := '';
pUser:=nil;
ProcessHandle := OpenProcess(PROCESS_QUERY_INFORMATION, False, ProcessId);
if ProcessHandle <> 0 then
begin
@ -1920,43 +1922,16 @@ begin
end;
end;
if bSuccess then FreeMem(pUser);
end;
CloseHandle(ProcessHandle);
end;
end;
{
procedure GetProcessList(ProcessList: TListBox; NoPID: boolean=false);
var sl: tstringlist;
i: integer;
pli: PProcessListInfo;
begin
sl:=tstringlist.create;
try
processlist.Sorted:=false;
for i:=0 to processlist.Items.count-1 do
if processlist.Items.Objects[i]<>nil then
begin
pli:=pointer(processlist.Items.Objects[i]);
if pli.processIcon>0 then
DestroyIcon(pli.processIcon);
freemem(pli);
end;
processlist.Items.Clear;
GetProcessList(sl, NoPID);
processlist.Items.AddStrings(sl);
finally
sl.free;
if puser<>nil then
begin
FreeMem(pUser);
pUser:=nil;
end;
end;
}
procedure GetModuleList(ModuleList: TStrings; withSystemModules: boolean);
var ths: thandle;
@ -2021,24 +1996,7 @@ begin
ModuleList.Clear;
end;
{
procedure cleanProcessList(processlist: TStrings);
var
i: integer;
ProcessListInfo: PProcessListInfo;
begin
for i:=0 to processlist.count-1 do
if processlist.Objects[i]<>nil then
begin
ProcessListInfo:= pointer( processlist.Objects[i]);
if ProcessListInfo.processIcon>0 then
DestroyIcon(ProcessListInfo.processIcon);
freemem(ProcessListInfo);
end;
processlist.clear;
end; }
procedure GetThreadList(threadlist: TStrings);
var
@ -2058,96 +2016,7 @@ begin
closehandle(ths);
end;
{
procedure GetProcessList(ProcessList: TStrings; NoPID: boolean=false; noProcessInfo: boolean=false);
var SNAPHandle: THandle;
ProcessEntry: PROCESSENTRY32;
Check: Boolean;
HI: HICON;
ProcessListInfo: PProcessListInfo;
i,j: integer;
s: string;
begin
HI:=0;
j:=0;
cleanProcessList(ProcessList);
if processhandler.isNetwork then
noProcessInfo:=true;
SNAPHandle:=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
If SnapHandle>0 then
begin
ZeroMemory(@ProcessEntry, sizeof(ProcessEntry));
ProcessEntry.dwSize:=SizeOf(ProcessEntry);
Check:=Process32First(SnapHandle,ProcessEntry);
while check do
begin
if (noprocessinfo=false) and getprocessicons then
begin
s:='';
HI:=ExtractIcon(hinstance,ProcessEntry.szExeFile,0);
if HI=0 then
begin
i:=getlasterror;
//alternative method:
if (processentry.th32ProcessID>0) and (uppercase(copy(ExtractFileName(ProcessEntry.szExeFile), 1,3))<>'AVG') then //february 2014: AVG freezes processes that do createtoolhelp32snapshot on it's processes for several seconds. AVG has multiple processes...
begin
s:=GetFirstModuleName(processentry.th32ProcessID);
OutputDebugString(s);
HI:=ExtractIcon(hinstance,pchar(s),0);
end;
end;
end;
if (noprocessinfo) or (not (ProcessesWithIconsOnly and (hi=0))) and ((not ProcessesCurrentUserOnly) or (GetUserNameFromPID(processentry.th32ProcessID)=username)) then
begin
if processentry.th32ProcessID<>0 then
begin
if noprocessinfo=false then
begin
// get some processinfo
getmem(ProcessListInfo,sizeof(TProcessListInfo));
ProcessListInfo.processID:=processentry.th32ProcessID;
ProcessListInfo.processIcon:=HI;
end;
if noPID then
s:=''
else
s:=IntTohex(processentry.th32ProcessID,8)+'-';
s:=s+ExtractFilename(processentry.szExeFile);
if noprocessinfo then
ProcessList.Add(AnsiToUtf8(s))
else
ProcessList.AddObject(AnsiToUtf8(s), TObject(ProcessListInfo));
end;
end;
check:=Process32Next(SnapHandle,ProcessEntry);
end;
closehandle(snaphandle);
end else raise exception.Create(rsICanTGetTheProcessListYouArePropablyUsingWindowsNT);
end; }
procedure GetWindowList(ProcessList: TStrings; showInvisible: boolean=true);
var previouswinhandle, winhandle: Hwnd;
@ -2173,6 +2042,7 @@ begin
DestroyIcon(ProcessListInfo.processIcon);
freemem(ProcessListInfo);
ProcessListInfo:=nil;
end;
processlist.clear;
@ -2236,6 +2106,7 @@ begin
processlist.Assign(x);
finally
freemem(temp);
temp:=nil;
end;
end;
@ -2252,83 +2123,6 @@ var previouswinhandle, winhandle: Hwnd;
tempdword: dword;
begin
GetWindowList(ProcessListBox.Items, showInvisible);
{
getmem(temp,101);
try
x:=tstringlist.Create;
for i:=0 to processlist.items.count-1 do
if processlist.items.Objects[i]<>nil then
begin
ProcessListInfo:=PProcessListInfo(processlist.items.Objects[i]);
if ProcessListInfo.processIcon>0 then
DestroyIcon(ProcessListInfo.processIcon);
freemem(ProcessListInfo);
end;
processlist.clear;
winhandle:=getwindow(getforegroundwindow,GW_HWNDFIRST);
i:=0;
while (winhandle<>0) and (i<10000) do
begin
if showInvisible or IsWindowVisible(winhandle) then
begin
GetWindowThreadProcessId(winhandle,addr(winprocess));
temp[0]:=#0;
getwindowtext(winhandle,temp,100);
temp[100]:=#0;
wintitle:=temp;
if ((not ProcessesCurrentUserOnly) or (GetUserNameFromPID(winprocess)=username)) and (length(wintitle)>0) then
begin
getmem(ProcessListInfo,sizeof(TProcessListInfo));
ProcessListInfo.processID:=winprocess;
ProcessListInfo.processIcon:=0;
if formsettings.cbProcessIcons.checked then
begin
tempdword:=0;
if SendMessageTimeout(winhandle,WM_GETICON,ICON_SMALL,0,SMTO_ABORTIFHUNG, 100, tempdword )<>0 then
begin
ProcessListInfo.processIcon:=tempdword;
if ProcessListInfo.processIcon=0 then
begin
if SendMessageTimeout(winhandle,WM_GETICON,ICON_SMALL2,0,SMTO_ABORTIFHUNG, 100, tempdword )<>0 then
ProcessListInfo.processIcon:=tempdword;
if ProcessListInfo.processIcon=0 then
if SendMessageTimeout(winhandle,WM_GETICON,ICON_BIG,0,SMTO_ABORTIFHUNG, 100, tempdword )<>0 then
ProcessListInfo.processIcon:=tempdword;
end;
end else
begin
inc(i,100); //at worst case scenario this causes the list to wait 10 seconds
end;
end;
x.AddObject(IntTohex(winprocess,8)+'-'+AnsiToUtf8(wintitle),TObject(ProcessListInfo));
end;
end;
previouswinhandle:=winhandle;
winhandle:=getwindow(winhandle,GW_HWNDNEXT);
if winhandle=previouswinhandle then break;
inc(i);
end;
x.Sort;
processlist.Items.Assign(x);
finally
freemem(temp);
end; }
end;
function GetCEdir:string;
@ -2365,6 +2159,7 @@ begin
WindowsDir:=x;
end;
freemem(x);
x:=nil;
end;
Procedure Shutdown;
@ -2375,6 +2170,7 @@ begin
deletefile(CheatEngineDir+'Memory.UNDO');
deletefile(CheatEngineDir+'Addresses.UNDO');
freemem(memory);
memory:=nil;
// Closehandle(processhandle);
end;
@ -2437,26 +2233,8 @@ begin
begin
result:=rewritedata(processhandle,address,buffer,size);
FlushInstructionCache(processhandle,pointer(address),size);
{
else
begin
//go through a loop of single pages and write as much as possible
bytesleft:=size;
size:=0;
//do the first part
init:=min(size, bytesleft);
writeprocessmemory(
FlushInstructionCache(processhandle,pointer(address),size);
end;
}
end;
end;
@ -2493,6 +2271,7 @@ begin
end;
finally
freemem(l);
l:=nil;
end;
end;
@ -2669,7 +2448,10 @@ begin
end;
finally
if buf<>nil then
begin
freemem(buf);
buf:=nil;
end;
reg.free;
end;
@ -3091,10 +2873,12 @@ begin
finally
freemem(drivername);
drivername:=nil;
end;
end;
finally
freemem(x);
x:=nil;
end;
end;
@ -3233,7 +3017,7 @@ begin
end;
freemem(buf);
buf:=nil;
end;
end;
@ -3313,7 +3097,10 @@ initialization
finalization
if tempdir<>nil then
begin
freemem(tempdir);
tempdir:=nil;
end;
end.

View File

@ -282,8 +282,13 @@ begin
while not mi.EOM do
begin
mi.GetData(al);
freemem(al.a);
freemem(al);
if al<>nil then
begin
if al.a<>nil then
freemem(al.a);
freemem(al);
end;
mi.Next;
end;

View File

@ -118,7 +118,10 @@ uses CEFuncProc, CEDebugger,debughelper, debugeventhandler, MemoryBrowserFormUni
destructor TCodeRecord.Destroy;
begin
if stack.stack<>nil then
begin
freemem(stack.stack);
stack.stack:=nil;
end;
inherited destroy;
end;

View File

@ -1172,6 +1172,8 @@ begin
frmLuaTableScript.assemblescreen.ClearAll;
frmLuaTableScript.Free;
frmLuaTableScript:=TfrmAutoInject(tcustomform(mainform));
end;
end;
@ -1712,6 +1714,7 @@ begin
begin
MessageDlg(err, mtError, [mbOK], 0);
freemem(err);
err:=nil;
end
else
MessageDlg('Unspecified error', mtError, [mbOK], 0);
@ -1938,6 +1941,7 @@ begin
if c = 500 then
begin
togglewindows.Free;
togglewindows:=nil;
raise Exception.Create(strWindowFailedToHide);
end;
sleep(10);
@ -2174,6 +2178,7 @@ begin
ScanType.Items.Add(strCompareToFirstScan);
t.Free;
t:=nil;
end;
@ -3222,6 +3227,7 @@ begin
LuaFiles.add(lf);
s.Free;
s:=nil;
end;
finally
@ -3277,6 +3283,7 @@ begin
f := TCEForm(LuaForms[TMenuItem(Sender).Tag]);
f.Free;
f:=nil;
LuaForms.Delete(TMenuItem(Sender).Tag);
@ -3360,7 +3367,7 @@ begin
if f.Execute then
lf.stream.SaveToFile(f.filename);
finally
f.Free;
freeandnil(f);
end;
end;
@ -3369,9 +3376,9 @@ var
lf: TLuafile;
begin
lf := LuaFiles[TMenuItem(Sender).Tag];
lf.Free;
LuaFiles.Delete(TMenuItem(Sender).Tag);
lf.Free;
UpdateMenu;
end;
@ -3693,9 +3700,9 @@ begin
end;
end;
CustomTypes.Free;
freeandnil(CustomTypes);
end;
reg.Free;
freeandnil(reg);
RefreshCustomTypes;
finally
vartype.OnChange := VarTypeChange; //set the onchange event back
@ -3785,7 +3792,7 @@ begin
//delete the old one
reg := Tregistry.Create;
reg.DeleteKey('\Software\Cheat Engine\CustomTypes\' + oldname);
reg.Free;
freeandnil(reg);
end;
end;
@ -3801,7 +3808,7 @@ begin
end;
reg.Free;
freeandnil(reg);
RefreshCustomTypes;
@ -4453,9 +4460,10 @@ begin
scantablist.RemoveTab(oldindex);
//now we can delete the tabdata
oldscanstate.foundlist.Free;
oldscanstate.memscan.Free;
freeandnil(oldscanstate.foundlist);
freeandnil(oldscanstate.memscan);
freemem(oldscanstate);
oldscanstate:=nil;
end;
end;
@ -4656,7 +4664,7 @@ begin
if reg.OpenKey('\Software\Cheat Engine\', true) then
reg.WriteBool('Show previous value column', miShowPreviousValue.checked);
finally
reg.free;
freeandnil(reg);
end;
end;
@ -4832,12 +4840,12 @@ begin
rs := TResourceStream.Create(HInstance, 'BUILDIN_ACTIVATE', RT_RCDATA);
InternalLuaFiles.Add(TLuaFile.Create('Activate', rs));
rs.free;
freeandnil(rs);
rs := TResourceStream.Create(HInstance, 'BUILDIN_DEACTIVATE', RT_RCDATA);
InternalLuaFiles.Add(TLuaFile.Create('Deactivate', rs));
rs.free;
freeandnil(rs);
@ -4860,7 +4868,7 @@ begin
end;
finally
reg.Free;
freeandnil(reg);
end;
application.OnHelp := onhelp;
@ -5447,8 +5455,7 @@ begin
end;
end;
updatelist.free;
freeandnil(updatelist);
addresslist.ReinterpretAddresses;
end;
@ -5511,7 +5518,7 @@ begin
lblcompareToSavedScan.Caption := rsComparingToF;
end;
finally
s.Free;
freeandnil(s);
end;
scantype.Items[scantype.ItemIndex] := strCompareToLastScan;
@ -6032,12 +6039,7 @@ begin
freeandnil(groupconfigbutton);
end;
{ tc:=tbitmap.Create;
tc.canvas.Font:=cbHexadecimal.Font;
hexwidth:=tc.canvas.TextWidth(hextext)+22;
tc.free;
cbHexadecimal.width:=hexwidth;
cbHexadecimal.left:=scanvalue.Left-cbHexadecimal.width; }
cbHexadecimal.Visible := hexvis;
rbdec.Visible := decbitvis;
rbbit.Visible := decbitvis;
@ -7835,6 +7837,7 @@ begin
//load back and free memory
freemem(offsets);
offsets:=nil;
//using my own var instead the user is lame enough to mess up the pointer
addresslist.selectedRecord.ReinterpretAddress;
end;
@ -8139,14 +8142,11 @@ begin
end;
procedure TMainForm.Label59Click(Sender: TObject);
var r: TMapMemoryResult;
begin
r:=MapMemory($00400000, 4096, 0,0);
showmessage(inttohex(r.address,8));
UnmapMemory(r);
end;
procedure ChangeIcon(hModule: HModule; restype: PChar; resname: PChar;
@ -8253,6 +8253,7 @@ begin
if pli.processIcon > 0 then
DestroyIcon(pli.processIcon);
freemem(pli);
pli:=nil;
end;
pl.Free;
@ -8660,9 +8661,10 @@ begin
if scantablist.SelectedTab <> i then
begin
oldscanstate := scantablist.TabData[i];
oldscanstate.foundlist.Free;
oldscanstate.memscan.Free;
freeandnil(oldscanstate.foundlist);
freeandnil(oldscanstate.memscan);
freemem(oldscanstate);
oldscanstate:=nil;
end;
end;
FreeAndNil(scantablist);

View File

@ -1222,6 +1222,7 @@ begin
end;
finally
freemem(buf);
buf:=nil;
end;
end;
end;
@ -3459,6 +3460,7 @@ begin
end;
finally
freemem(header);
header:=nil;
end;
end;
modulelist.free;
@ -3708,6 +3710,7 @@ begin
lvstacktracedata.Items.Count:=strace.Count;
finally
freemem(s);
s:=nil;
end;
end else
begin

View File

@ -1473,6 +1473,7 @@ begin
mapsline:=mappedfilename;
freemem(mappedfilename);
mappedfilename:=nil;
end;
end;
{$endif}

View File

@ -767,8 +767,9 @@ begin
memfile.WriteBuffer(buf^,size);
end else messagedlg(Format(rsTheRegionAtWasPartiallyOrCompletlyUnreadable, [IntToHex(address, 8)]), mterror, [mbok], 0);
finally
memfile.free;
freeandnil(memfile);
freemem(buf);
buf:=nil;
end;
end;
@ -801,7 +802,10 @@ begin
end else raise exception.Create(Format(rsDoesnTContainNeededInformationWhereToPlaceTheMemor, [filename]));
finally
freemem(check);
check:=nil;
memfile.free;
memfile:=nil;
end;
end;
@ -1229,6 +1233,7 @@ begin
end;
finally
freemem(b);
b:=nil;
end;
end;
end
@ -1252,11 +1257,15 @@ begin
finally
freemem(b);
b:=nil;
end;
end;
d.free;
f.free;
if d<>nil then
freeandnil(d);
if f<>nil then
freeandnil(f);
end;
procedure protecttrainer(filename: string);
@ -1287,8 +1296,8 @@ begin
i:=f.size;
c.write(i, sizeof(i));
c.write(f.Memory^, f.size);
c.free;
f.free;
freeandnil(c);
freeandnil(f);
k:=$ce;
@ -1309,7 +1318,7 @@ begin
f2.SaveToFile(filename);
f2.free;
freeandnil(f2);
end;

View File

@ -229,6 +229,7 @@ begin
ValueText.text:=ws;
freemem(ws);
ws:=nil;
end
else
@ -244,6 +245,7 @@ begin
ValueText.text:=s;
freemem(s);
s:=nil;
end;
cbunicode.visible:=true;

View File

@ -1530,6 +1530,7 @@ begin
end else raise exception.Create(Format(rsTheMemoryAtCanNotBeRead, [s1]));
finally
freemem(bytebuf);
bytebuf:=nil;
end;
end
@ -1796,7 +1797,10 @@ begin
on e:exception do
begin
if bytebuf<>nil then
begin
freemem(bytebuf);
bytebuf:=nil;
end;
raise exception.create(e.Message);
end;
@ -3022,7 +3026,10 @@ begin
for i:=0 to length(readmems)-1 do
if readmems[i].bytes<>nil then
begin
freemem(readmems[i].bytes);
readmems[i].bytes:=nil;
end;
setlength(readmems,0);

View File

@ -89,6 +89,7 @@ begin
end;
finally
freemem(ba);
ba:=nil;
end;
setlength(b,0);
@ -144,6 +145,7 @@ begin
end;
finally
freemem(ba);
ba:=nil;
end;
end;
end;
@ -249,6 +251,7 @@ begin
result:=ws;
finally
freemem(ws);
ws:=nil;
end;
end;
@ -342,6 +345,7 @@ begin
result:=readAndParsePointer(address, buf2, variabletype, customtype, showashexadecimal, showAsSigned, bytesize);
finally
freemem(buf2);
buf2:=nil;
end;
end;
@ -355,7 +359,8 @@ begin
finally
freemem(buf2)
freemem(buf2);
buf2:=nil;
end;
end;
@ -368,6 +373,7 @@ begin
result:=readAndParsePointer(address, buf2, variabletype, customtype, showashexadecimal, showAsSigned, bytesize);
finally
freemem(buf2);
buf2:=nil;
end;
end;
@ -382,6 +388,7 @@ begin
finally
freemem(buf2);
buf2:=nil;
end;
end;
end;
@ -414,6 +421,7 @@ begin
result:=pchar(tempbuf);
finally
freemem(tempbuf);
tempbuf:=nil;
end;
end;
@ -430,6 +438,7 @@ begin
finally
freemem(tempbuf);
tempbuf:=nil;
end;
end;

View File

@ -545,7 +545,9 @@ begin
if frmModuleSafety<>nil then //modified
begin
freemem(modulelist);
if modulelist<>nil then
freemem(modulelist);
modulelist:=tempmodulelist;
modulelistsize:=tempmodulelistsize;
tempmodulelist:=nil;

View File

@ -290,10 +290,11 @@ begin
finally
memoryfile.free;
outaddress.free;
outmemory.free;
freeandnil(memoryfile);
freeandnil(outaddress);
freeandnil(outmemory);
freemem(buf);
buf:=nil;
end;
//still here, not crashed, so out with the old, in with the new...

View File

@ -232,6 +232,7 @@ begin
end;
finally
freemem(processname);
processname:=nil;
end;
end;

View File

@ -1001,6 +1001,7 @@ begin
end;
freemem(originalcodebuffer);
originalcodebuffer:=nil;

View File

@ -507,6 +507,7 @@ begin
//cleanup the memory as well while we're at it
freemem(temphotkey);
temphotkey:=nil;
end;
activeHotkeyList.clear;

View File

@ -4630,7 +4630,10 @@ begin
if oldmemory<>nil then virtualfree(oldmemory,0,MEM_RELEASE);
if oldaddressesGroup<>nil then
begin
freemem(oldaddressesGroup);
oldaddressesGroup:=nil;
end;
end;
end;
@ -4917,18 +4920,19 @@ begin
if AddressFile<>nil then //can be made nil by the scancontroller
begin
Addressfile.free;
freeandnil(Addressfile);
DeleteFile(scandir+'ADDRESSES-'+inttostr(ThreadID)+'.TMP');
end;
if MemoryFile<>nil then
begin
MemoryFile.free;
freeandnil(MemoryFile);
DeleteFile(scandir+'MEMORY-'+inttostr(ThreadID)+'.TMP');
end;
if scanwriter<>nil then
scanwriter.free;
freeandnil(scanwriter);
if CurrentFoundBuffer<>nil then freemem(CurrentFoundBuffer);
@ -4936,9 +4940,12 @@ begin
if CurrentAddressBuffer<>nil then freemem(CurrentAddressBuffer);
if SecondaryAddressBuffer<>nil then freemem(SecondaryAddressBuffer);
if savedscanhandler<>nil then savedscanhandler.free;
CurrentFoundBuffer:=nil;
SecondaryFoundBuffer:=nil;
CurrentAddressBuffer:=nil;
SecondaryAddressBuffer:=nil;
outputdebugstring('Destroyed a scanner');
if savedscanhandler<>nil then freeandnil(savedscanhandler);
inherited destroy;
end;

View File

@ -2473,49 +2473,11 @@ begin
result:=sl;
end;
if pp<>nil then
freemem(pp);
{
var
PT : PTypeData;
PI : PTypeInfo;
I,J : Longint;
PP : PPropList;
prI : PPropInfo;
s: string;
begin
memo1.clear;
s:='alBottom';
pp:=nil;
j:=GetPropList(button2, pp);
//memo1.lines.add(format('Ordinal property Count : %d',[j]));
For I:=0 to J-1 do
begin
memo1.lines.add(pp^[i].Name);
if pp^[i].name='Top' then
begin
if pp^[i].PropType^.Kind<>tkMethod then
SetPropValue(button2,'Align',2);
//TSetPropValue(pp^[i].SetProc)(button2, 'Top', 500);
// memo1.lines.add(format('Property %d : name=%s',[i, ]));
//Write('Property ',i+1:3,': ',name:30);
// writeln(' Type: ',TypeNames[typinfo.PropType(O,Name)]);
end;
freemem(pp);
pp:=nil;
end;
FreeMem(PP);
}
except
end;
end;

View File

@ -447,10 +447,12 @@ begin
end;
finally
freemem(modulename);
modulename:=nil;
end;
end;
finally
freemem(x);
x:=nil;
end;
{$endif}
@ -480,10 +482,12 @@ begin
end;
finally
freemem(drivername);
drivername:=nil;
end;
end;
finally
freemem(x);
x:=nil;
end;
{$ENDIF}
end;
@ -1115,6 +1119,7 @@ begin
fprogress:=ceil((i/modulecount)*100);
freemem(modinfo);
modinfo:=nil;
end;