removed for..in loops cause of several U.B in release mode

This commit is contained in:
Basile Burg 2014-08-07 19:54:01 +02:00
parent 2ca12fa046
commit df8c816086
1 changed files with 30 additions and 22 deletions

View File

@ -335,6 +335,7 @@ procedure TCEMainForm.InitPlugins;
var var
pth: string; pth: string;
fname: string; fname: string;
i: NativeInt;
lst: TStringList; lst: TStringList;
hdl: TLibHandle; hdl: TLibHandle;
plg: PPlugDescriptor; plg: PPlugDescriptor;
@ -344,8 +345,9 @@ begin
lst := TStringList.Create; lst := TStringList.Create;
try try
listFiles(lst, pth, false); listFiles(lst, pth, false);
for fname in lst do for i := 0 to lst.Count-1 do
begin begin
fname := lst.Strings[i];
if extractFileExt(fname) <> '.' + SharedSuffix then if extractFileExt(fname) <> '.' + SharedSuffix then
continue; continue;
hdl := LoadLibrary(fname); hdl := LoadLibrary(fname);
@ -674,6 +676,7 @@ var
itm: TMenuItem; itm: TMenuItem;
fname: string; fname: string;
clickTrg: TNotifyEvent; clickTrg: TNotifyEvent;
i: NativeInt;
begin begin
srcLst := TMruFileList(Sender); srcLst := TMruFileList(Sender);
if srcLst = nil then exit; if srcLst = nil then exit;
@ -697,8 +700,9 @@ begin
trgMnu.Add(itm); trgMnu.Add(itm);
trgMnu.AddSeparator; trgMnu.AddSeparator;
for fname in srcLst do for i:= 0 to srcLst.Count-1 do
begin begin
fname := srcLst.Strings[i];
itm := TMenuItem.Create(trgMnu); itm := TMenuItem.Create(trgMnu);
itm.Hint := fname; itm.Hint := fname;
itm.Caption := shortenPath(fname, 50); itm.Caption := shortenPath(fname, 50);
@ -935,10 +939,10 @@ end;
procedure TCEMainForm.FormDropFiles(Sender: TObject;const FileNames: array of String); procedure TCEMainForm.FormDropFiles(Sender: TObject;const FileNames: array of String);
var var
fname: string; i: NativeInt;
begin begin
for fname in FileNames do for i:= low(FileNames) to high(FileNames) do
openFile(fname); openFile(FileNames[i]);
end; end;
{$ENDREGION} {$ENDREGION}
@ -1055,6 +1059,7 @@ var
readSz: LongInt; readSz: LongInt;
ioBuffSz: LongInt; ioBuffSz: LongInt;
dt: PMessageItemData; dt: PMessageItemData;
i: NativeInt;
msg: string; msg: string;
begin begin
If not (poUsePipes in aProcess.Options) then exit; If not (poUsePipes in aProcess.Options) then exit;
@ -1072,7 +1077,8 @@ begin
until readCnt = 0; until readCnt = 0;
Str.SetSize(readSz); Str.SetSize(readSz);
lns.LoadFromStream(Str); lns.LoadFromStream(Str);
for msg in lns do begin for i:= 0 to lns.Count-1 do begin
msg := lns.Strings[i];
dt := newMessageData; dt := newMessageData;
dt^.ctxt := aCtxt; dt^.ctxt := aCtxt;
dt^.project := fProject; dt^.project := fProject;
@ -1403,10 +1409,10 @@ end;
{$REGION project ---------------------------------------------------------------} {$REGION project ---------------------------------------------------------------}
procedure TCEMainForm.projChange(sender: TObject); procedure TCEMainForm.projChange(sender: TObject);
var var
widg: TCEWidget; i: NativeInt;
begin begin
for widg in WidgetList do for i := 0 to WidgetList.Count-1 do
widg.projChange(fProject); WidgetList.widget[i].projChange(fProject);
end; end;
procedure TCEMainForm.saveProjSource(const aEditor: TCESynMemo); procedure TCEMainForm.saveProjSource(const aEditor: TCESynMemo);
@ -1420,20 +1426,22 @@ end;
procedure TCEMainForm.closeProj; procedure TCEMainForm.closeProj;
var var
widg: TCEWidget; i: NativeInt;
begin begin
for widg in WidgetList do widg.projClose(fProject); for i := 0 to WidgetList.Count-1 do
WidgetList.widget[i].projClose(fProject);
fProject.Free; fProject.Free;
fProject := nil; fProject := nil;
end; end;
procedure TCEMainForm.newProj; procedure TCEMainForm.newProj;
var var
widg: TCEWidget; i: NativeInt;
begin begin
fProject := TCEProject.Create(nil); fProject := TCEProject.Create(nil);
fProject.Name := 'CurrentProject'; fProject.Name := 'CurrentProject';
for widg in WidgetList do widg.projNew(fProject); for i := 0 to WidgetList.Count-1 do
WidgetList.widget[i].projNew(fProject);
fProject.onChange := @projChange; fProject.onChange := @projChange;
fProject.libraryManager := fLibMan; fProject.libraryManager := fLibMan;
end; end;
@ -1631,17 +1639,17 @@ end;
procedure TCEOptions.defineProperties(Filer: TFiler); procedure TCEOptions.defineProperties(Filer: TFiler);
var var
widg: TCEWidget; i: NativeInt;
begin begin
inherited; inherited;
// Filer is either a TReader or a TWriter // Filer is either a TReader or a TWriter
for widg in CEMainForm.WidgetList do for i := 0 to CEMainForm.WidgetList.Count-1 do
widg.declareProperties(Filer); CEMainForm.WidgetList.widget[i].declareProperties(Filer);
end; end;
procedure TCEOptions.beforeSave; procedure TCEOptions.beforeSave;
var var
widg: TCEWidget; i: NativeInt;
begin begin
fLeft := CEMainForm.Left; fLeft := CEMainForm.Left;
fTop := CEMainForm.Top; fTop := CEMainForm.Top;
@ -1651,8 +1659,8 @@ begin
fFileMru.Assign(CEMainForm.fFileMru); fFileMru.Assign(CEMainForm.fFileMru);
fProjMru.Assign(CEMainForm.fProjMru); fProjMru.Assign(CEMainForm.fProjMru);
// //
for widg in CEMainForm.WidgetList do for i := 0 to CEMainForm.WidgetList.Count-1 do
widg.beforeSave(nil); CEMainForm.WidgetList.widget[i].beforeSave(nil);
end; end;
procedure TCEOptions.saveToFile(const aFilename: string); procedure TCEOptions.saveToFile(const aFilename: string);
@ -1671,7 +1679,7 @@ end;
procedure TCEOptions.afterLoad; procedure TCEOptions.afterLoad;
var var
widg: TCEWidget; i: NativeInt;
begin begin
CEMainForm.Left := fLeft; CEMainForm.Left := fLeft;
CEMainForm.Top := fTop; CEMainForm.Top := fTop;
@ -1685,8 +1693,8 @@ begin
CEMainForm.fFileMru.Assign(fFileMru); CEMainForm.fFileMru.Assign(fFileMru);
CEMainForm.fProjMru.Assign(fProjMru); CEMainForm.fProjMru.Assign(fProjMru);
// //
for widg in CEMainForm.WidgetList do for i := 0 to CEMainForm.WidgetList.Count-1 do
widg.afterLoad(nil); CEMainForm.WidgetList.widget[i].afterLoad(nil);
end; end;
{$ENDREGION} {$ENDREGION}