91 lines
2.8 KiB
Diff
91 lines
2.8 KiB
Diff
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;
|