Forráskód Böngészése

Memory leak

Caused by 71ea2a97

Source commit: cc00c4f0789476839c1a7be9ca8e26c0f28e8b9b
Martin Prikryl 2 éve
szülő
commit
b1121ad72f
1 módosított fájl, 10 hozzáadás és 2 törlés
  1. 10 2
      source/core/HierarchicalStorage.cpp

+ 10 - 2
source/core/HierarchicalStorage.cpp

@@ -1637,8 +1637,15 @@ TIniFileStorage * __fastcall TIniFileStorage::CreateNul()
 __fastcall TIniFileStorage::TIniFileStorage(const UnicodeString & AStorage, TCustomIniFile * IniFile):
   TCustomIniFileStorage(AStorage, IniFile)
 {
-  FOriginal = new TStringList();
-  dynamic_cast<TMemIniFile *>(FIniFile)->GetStrings(FOriginal);
+  if (!FIniFile->FileName.IsEmpty())
+  {
+    FOriginal = new TStringList();
+    dynamic_cast<TMemIniFile *>(FIniFile)->GetStrings(FOriginal);
+  }
+  else
+  {
+    FOriginal = NULL;
+  }
   ApplyOverrides();
 }
 //---------------------------------------------------------------------------
@@ -1648,6 +1655,7 @@ void __fastcall TIniFileStorage::Flush()
   {
     FMasterStorage->Flush();
   }
+  // This does not seem correct, if storage is written after it is flushed (though we probably never do that currently)
   if ((FOriginal != NULL) && !FIniFile->FileName.IsEmpty())
   {
     std::unique_ptr<TStrings> Strings(new TStringList);