Browse Source

Use New/Dispose for FileLocationEntryExtraInfos instead of AllocMem/SEFreeRec so that the string counts arent needed. Still keep it a TLowFragList.

Martijn Laan 4 months ago
parent
commit
7aeedacb94
1 changed files with 28 additions and 26 deletions
  1. 28 26
      Projects/Src/Compiler.SetupCompiler.pas

+ 28 - 26
Projects/Src/Compiler.SetupCompiler.pas

@@ -308,10 +308,6 @@ type
     Name, Command: String;
   end;
 
-const
-  FileLocationEntryExtraInfoStrings = 1;
-  FileLocationEntryExtraInfoAnsiStrings = 0;
-type
   TFileLocationSign = (fsNoSetting, fsYes, fsOnce, fsCheck);
   PFileLocationEntryExtraInfo = ^TFileLocationEntryExtraInfo;
   TFileLocationEntryExtraInfo = record
@@ -4844,7 +4840,7 @@ type
         end;
         if NewFileLocationEntry = nil then begin
           NewFileLocationEntry := AllocMem(SizeOf(TSetupFileLocationEntry));
-          NewFileLocationEntryExtraInfo := AllocMem(SizeOf(TFileLocationEntryExtraInfo));
+          New(NewFileLocationEntryExtraInfo);
           SetupHeader.CompressMethod := CompressMethod;
           FileLocationEntries.Add(NewFileLocationEntry);
           FileLocationEntryExtraInfos.Add(NewFileLocationEntryExtraInfo);
@@ -6523,16 +6519,22 @@ procedure TSetupCompiler.Compile;
     end;
   end;
 
-  procedure FreeListItems(const List: TList; const NumStrings, NumAnsiStrings: Integer);
-  var
-    I: Integer;
+  procedure FreeSEListItems(const List: TList; const NumStrings, NumAnsiStrings: Integer);
   begin
-    for I := List.Count-1 downto 0 do begin
+    for var I := List.Count-1 downto 0 do begin
       SEFreeRec(List[I], NumStrings, NumAnsiStrings);
       List.Delete(I);
     end;
   end;
 
+  procedure FreeListItems(const List: TList);
+  begin
+    for var I := List.Count-1 downto 0 do begin
+      Dispose(List[I]);
+      List.Delete(I);
+    end;
+  end;
+
   procedure FreePreLangData;
   var
     I: Integer;
@@ -8026,24 +8028,24 @@ begin
     SetupE32.Free;
     WizardSmallImages.Free;
     WizardImages.Free;
-    FreeListItems(LanguageEntries, SetupLanguageEntryStrings, SetupLanguageEntryAnsiStrings);
-    FreeListItems(CustomMessageEntries, SetupCustomMessageEntryStrings, SetupCustomMessageEntryAnsiStrings);
-    FreeListItems(PermissionEntries, SetupPermissionEntryStrings, SetupPermissionEntryAnsiStrings);
-    FreeListItems(TypeEntries, SetupTypeEntryStrings, SetupTypeEntryAnsiStrings);
-    FreeListItems(ComponentEntries, SetupComponentEntryStrings, SetupComponentEntryAnsiStrings);
-    FreeListItems(TaskEntries, SetupTaskEntryStrings, SetupTaskEntryAnsiStrings);
-    FreeListItems(DirEntries, SetupDirEntryStrings, SetupDirEntryAnsiStrings);
-    FreeListItems(FileEntries, SetupFileEntryStrings, SetupFileEntryAnsiStrings);
-    FreeListItems(FileLocationEntries, SetupFileLocationEntryStrings, SetupFileLocationEntryAnsiStrings);
-    FreeListItems(IconEntries, SetupIconEntryStrings, SetupIconEntryAnsiStrings);
-    FreeListItems(IniEntries, SetupIniEntryStrings, SetupIniEntryAnsiStrings);
-    FreeListItems(RegistryEntries, SetupRegistryEntryStrings, SetupRegistryEntryAnsiStrings);
-    FreeListItems(InstallDeleteEntries, SetupDeleteEntryStrings, SetupDeleteEntryAnsiStrings);
-    FreeListItems(UninstallDeleteEntries, SetupDeleteEntryStrings, SetupDeleteEntryAnsiStrings);
-    FreeListItems(RunEntries, SetupRunEntryStrings, SetupRunEntryAnsiStrings);
-    FreeListItems(UninstallRunEntries, SetupRunEntryStrings, SetupRunEntryAnsiStrings);
+    FreeSEListItems(LanguageEntries, SetupLanguageEntryStrings, SetupLanguageEntryAnsiStrings);
+    FreeSEListItems(CustomMessageEntries, SetupCustomMessageEntryStrings, SetupCustomMessageEntryAnsiStrings);
+    FreeSEListItems(PermissionEntries, SetupPermissionEntryStrings, SetupPermissionEntryAnsiStrings);
+    FreeSEListItems(TypeEntries, SetupTypeEntryStrings, SetupTypeEntryAnsiStrings);
+    FreeSEListItems(ComponentEntries, SetupComponentEntryStrings, SetupComponentEntryAnsiStrings);
+    FreeSEListItems(TaskEntries, SetupTaskEntryStrings, SetupTaskEntryAnsiStrings);
+    FreeSEListItems(DirEntries, SetupDirEntryStrings, SetupDirEntryAnsiStrings);
+    FreeSEListItems(FileEntries, SetupFileEntryStrings, SetupFileEntryAnsiStrings);
+    FreeSEListItems(FileLocationEntries, SetupFileLocationEntryStrings, SetupFileLocationEntryAnsiStrings);
+    FreeSEListItems(IconEntries, SetupIconEntryStrings, SetupIconEntryAnsiStrings);
+    FreeSEListItems(IniEntries, SetupIniEntryStrings, SetupIniEntryAnsiStrings);
+    FreeSEListItems(RegistryEntries, SetupRegistryEntryStrings, SetupRegistryEntryAnsiStrings);
+    FreeSEListItems(InstallDeleteEntries, SetupDeleteEntryStrings, SetupDeleteEntryAnsiStrings);
+    FreeSEListItems(UninstallDeleteEntries, SetupDeleteEntryStrings, SetupDeleteEntryAnsiStrings);
+    FreeSEListItems(RunEntries, SetupRunEntryStrings, SetupRunEntryAnsiStrings);
+    FreeSEListItems(UninstallRunEntries, SetupRunEntryStrings, SetupRunEntryAnsiStrings);
     FileLocationEntryFilenames.Clear;
-    FreeListItems(FileLocationEntryExtraInfos, FileLocationEntryExtraInfoStrings, FileLocationEntryExtraInfoAnsiStrings);
+    FreeListItems(FileLocationEntryExtraInfos);
     FreeLineInfoList(ExpectedCustomMessageNames);
     FreeLangData;
     FreePreLangData;