Browse Source

Fix double free fault, and ensure that objects are freed on shutdown

Jakob Truelsen 16 years ago
parent
commit
dcfeff1955
3 changed files with 12 additions and 10 deletions
  1. 6 4
      src/multipageloader.cc
  2. 1 1
      src/multipageloader_p.hh
  3. 5 5
      src/wkhtmltopdf.cc

+ 6 - 4
src/multipageloader.cc

@@ -134,14 +134,16 @@ MultiPageLoaderPrivate::MultiPageLoaderPrivate(Settings & s, MultiPageLoader & o
 	connect(&networkAccessManager, SIGNAL(authenticationRequired(QNetworkReply*, QAuthenticator *)),this,
 	        SLOT(authenticationRequired(QNetworkReply *, QAuthenticator *)));
 
-	networkAccessManager.setCookieJar(&cookieJar);
+	cookieJar = new MyCookieJar();
+
+	networkAccessManager.setCookieJar(cookieJar);
 
 	if (!settings.cookieJar.isEmpty()) 
-		cookieJar.loadFromFile(settings.cookieJar);
+		cookieJar->loadFromFile(settings.cookieJar);
 	
 	typedef QPair<QString, QString> SSP;
 	foreach (const SSP & pair, settings.cookies)
-		cookieJar.addGlobalCookie(pair.first, pair.second);
+		cookieJar->addGlobalCookie(pair.first, pair.second);
 		
 	//If we must use a proxy, create a host of objects
 	if (!settings.proxy.host.isEmpty()) {
@@ -313,7 +315,7 @@ void MultiPageLoaderPrivate::loadFinished(bool ok) {
 void MultiPageLoaderPrivate::timedFinished() {
 	if(loadingPages == 0) {
 		if (!settings.cookieJar.isEmpty())
-			cookieJar.saveToFile(settings.cookieJar);
+			cookieJar->saveToFile(settings.cookieJar);
 		emit outer.loadFinished(!error);
 	}
 }

+ 1 - 1
src/multipageloader_p.hh

@@ -36,7 +36,7 @@ public:
 class MultiPageLoaderPrivate: public QObject {
 	Q_OBJECT
 public:
-	MyCookieJar cookieJar;
+	MyCookieJar * cookieJar;
 	MultiPageLoader & outer;
 	Settings & settings;
 	int httpErrorCode;

+ 5 - 5
src/wkhtmltopdf.cc

@@ -159,15 +159,15 @@ int main(int argc, char * argv[]) {
 	ProgressFeedback feedback(converter);
 	
 	if (!converter.convert())
-		exit(EXIT_FAILURE);
+		return EXIT_FAILURE;
 	switch(converter.httpErrorCode()) {
 	case 401:
-		exit(3);
+		return 3;
 	case 404: 
-		exit(2);
+		return 2;
 	case 0:
-		exit(EXIT_SUCCESS);
+		return EXIT_SUCCESS;
 	default:
-		exit(EXIT_FAILURE);
+		return EXIT_FAILURE;
 	}
 }