Переглянути джерело

Bug fix: Failure on startup when there are no temporary folder to cleanup and cleanup confirmation is disabled (caused by 15ce8199)

Source commit: 6a0c4f577d1ef722c2602fbe2108ca381772fee7
Martin Prikryl 5 роки тому
батько
коміт
9b369b2b01
1 змінених файлів з 25 додано та 35 видалено
  1. 25 35
      source/windows/Setup.cpp

+ 25 - 35
source/windows/Setup.cpp

@@ -717,52 +717,46 @@ void __fastcall LaunchAdvancedAssociationUI()
 //---------------------------------------------------------------------------
 void __fastcall TemporaryDirectoryCleanup()
 {
-  bool Continue = true;
-  TStrings * Folders = NULL;
-  try
+  std::unique_ptr<TStrings> Folders(WinConfiguration->FindTemporaryFolders());
+  if (Folders.get() != NULL)
   {
+    bool Continue = true;
     if (WinConfiguration->ConfirmTemporaryDirectoryCleanup)
     {
-      Folders = WinConfiguration->FindTemporaryFolders();
-      Continue = (Folders != NULL);
-
-      if (Continue)
-      {
-        Configuration->Usage->Inc(L"TemporaryDirectoryCleanupConfirmations");
+      Configuration->Usage->Inc(L"TemporaryDirectoryCleanupConfirmations");
 
-        TQueryButtonAlias Aliases[1];
-        Aliases[0].Button = qaRetry;
-        Aliases[0].Alias = LoadStr(OPEN_BUTTON);
-        TMessageParams Params(mpNeverAskAgainCheck);
-        Params.Aliases = Aliases;
-        Params.AliasesCount = LENOF(Aliases);
+      TQueryButtonAlias Aliases[1];
+      Aliases[0].Button = qaRetry;
+      Aliases[0].Alias = LoadStr(OPEN_BUTTON);
+      TMessageParams Params(mpNeverAskAgainCheck);
+      Params.Aliases = Aliases;
+      Params.AliasesCount = LENOF(Aliases);
 
-        unsigned int Answer = MoreMessageDialog(
-          FMTLOAD(CLEANTEMP_CONFIRM2, (Folders->Count)), Folders,
-          qtConfirmation, qaYes | qaNo | qaRetry, HELP_CLEAN_TEMP_CONFIRM, &Params);
+      unsigned int Answer = MoreMessageDialog(
+        FMTLOAD(CLEANTEMP_CONFIRM2, (Folders->Count)), Folders.get(),
+        qtConfirmation, qaYes | qaNo | qaRetry, HELP_CLEAN_TEMP_CONFIRM, &Params);
 
-        if (Answer == qaNeverAskAgain)
-        {
-          WinConfiguration->ConfirmTemporaryDirectoryCleanup = false;
-          Answer = qaYes;
-        }
-        else if (Answer == qaRetry)
+      if (Answer == qaNeverAskAgain)
+      {
+        WinConfiguration->ConfirmTemporaryDirectoryCleanup = false;
+        Answer = qaYes;
+      }
+      else if (Answer == qaRetry)
+      {
+        for (int Index = 0; Index < Folders->Count; Index++)
         {
-          for (int Index = 0; Index < Folders->Count; Index++)
-          {
-            ShellExecute(Application->Handle, NULL,
-              Folders->Strings[Index].c_str(), NULL, NULL, SW_SHOWNORMAL);
-          }
+          ShellExecute(Application->Handle, NULL,
+            Folders->Strings[Index].c_str(), NULL, NULL, SW_SHOWNORMAL);
         }
-        Continue = (Answer == qaYes);
       }
+      Continue = (Answer == qaYes);
     }
 
     if (Continue)
     {
       try
       {
-        WinConfiguration->CleanupTemporaryFolders(Folders);
+        WinConfiguration->CleanupTemporaryFolders(Folders.get());
       }
       catch (Exception &E)
       {
@@ -770,10 +764,6 @@ void __fastcall TemporaryDirectoryCleanup()
       }
     }
   }
-  __finally
-  {
-    delete Folders;
-  }
 }
 //-------------------------------------------- -------------------------------
 UnicodeString __fastcall VersionStrFromCompoundVersion(int Version)