Force destruction of downloader before curl_global_cleanup
See: https://github.com/Sude-/lgogdownloader/commit/6ce6aeb1dc06f8af1508c5ce6ee71775b8d188b3
Index: LGOGDownloader-3.9/main.cpp
===================================================================
--- LGOGDownloader-3.9.orig/main.cpp
+++ LGOGDownloader-3.9/main.cpp
@@ -607,9 +607,10 @@ int main(int argc, char *argv[])
         std::cerr << std::endl;
     }
 
+    int res = 0;
     // Init curl globally
     curl_global_init(CURL_GLOBAL_ALL);
-
+    {
     Downloader downloader;
 
     int iLoginTries = 0;
@@ -636,8 +637,8 @@ int main(int argc, char *argv[])
     // Login failed, cleanup
     if (!bLoginOK && !bIsLoggedin)
     {
-        curl_global_cleanup();
-        return 1;
+        res = 1;
+        goto end;
     }
 
     // Make sure that config file and cookie file are only readable/writable by owner
@@ -699,15 +700,14 @@ int main(int argc, char *argv[])
                 Util::setFilePermissions(Globals::globalConfig.sConfigFilePath, boost::filesystem::owner_read | boost::filesystem::owner_write);
             if (Globals::globalConfig.bSaveConfig)
             {
-                curl_global_cleanup();
-                return 0;
+                goto end;
             }
         }
         else
         {
             std::cerr << "Failed to create config: " << Globals::globalConfig.sConfigFilePath << std::endl;
-            curl_global_cleanup();
-            return 1;
+            res = 1;
+            goto end;
         }
     }
     else if (Globals::globalConfig.bResetConfig)
@@ -719,26 +719,23 @@ int main(int argc, char *argv[])
             if (!Globals::globalConfig.bRespectUmask)
                 Util::setFilePermissions(Globals::globalConfig.sConfigFilePath, boost::filesystem::owner_read | boost::filesystem::owner_write);
 
-            curl_global_cleanup();
-            return 0;
+            goto end;
         }
         else
         {
             std::cerr << "Failed to create config: " << Globals::globalConfig.sConfigFilePath << std::endl;
-            curl_global_cleanup();
-            return 1;
+            res = 1;
+            goto end;
         }
     }
 
     bool bInitOK = downloader.init();
     if (!bInitOK)
     {
-        curl_global_cleanup();
-        return 1;
+        res = 1;
+        goto end;
     }
 
-    int res = 0;
-
     if (Globals::globalConfig.bShowWishlist)
         downloader.showWishlist();
     else if (Globals::globalConfig.bUpdateCache)
@@ -801,7 +798,8 @@ int main(int argc, char *argv[])
     // Orphan check was called at the same time as download. Perform it after download has finished
     if (!Globals::globalConfig.sOrphanRegex.empty() && Globals::globalConfig.bDownload)
         downloader.checkOrphans();
-
+    }
+end:
     curl_global_cleanup();
 
     return res;
