From 0cc6b3bcf715e553222c93cdca760692b4dda72a Mon Sep 17 00:00:00 2001 From: Felix Kauselmann Date: Sat, 26 May 2018 12:20:53 +0200 Subject: [PATCH] SendComic: Connect finished signal to deleteLater slot BEFORE the finished signal is emitted so it is actually processed and we don't get dangling pointers. Use modern signal slot syntax so that the compiler and source check tools can verify we actually fixed the problem. --- YACReader/main_window_viewer.cpp | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/YACReader/main_window_viewer.cpp b/YACReader/main_window_viewer.cpp index 7a4f3c81..1539a589 100644 --- a/YACReader/main_window_viewer.cpp +++ b/YACReader/main_window_viewer.cpp @@ -1682,6 +1682,7 @@ void MainWindowViewer::decreasePageZoomLevel() void MainWindowViewer::sendComic() { YACReaderLocalClient * client = new YACReaderLocalClient; + connect(client, &YACReaderLocalClient::finished, client, &YACReaderLocalClient::deleteLater); currentComicDB.info.lastTimeOpened = QDateTime::currentSecsSinceEpoch(); viewer->updateComic(currentComicDB); @@ -1692,15 +1693,12 @@ void MainWindowViewer::sendComic() ComicDB & nextComic = siblingComics[currentIndex+1]; nextComic.info.hasBeenOpened = true; int retries = 1; - while(!client->sendComicInfo(libraryId,currentComicDB,nextComic.id) && retries!=0) + while(!client->sendComicInfo(libraryId, currentComicDB, nextComic.id) && retries!=0) retries--; - connect(client,SIGNAL(finished()),client,SLOT(deleteLater())); } } else { int retries = 1; - while(!client->sendComicInfo(libraryId,currentComicDB) && retries!=0) + while(!client->sendComicInfo(libraryId, currentComicDB) && retries!=0) retries--; - connect(client,SIGNAL(finished()),client,SLOT(deleteLater())); } - //delete client; }