From 2a1d53f0b02995949322706e878c324f1fc93ad1 Mon Sep 17 00:00:00 2001 From: Veloman Yunkan Date: Sun, 30 Jun 2024 13:14:22 +0400 Subject: [PATCH] Safer ContentManager::downloadDisappeared() --- src/contentmanager.cpp | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/contentmanager.cpp b/src/contentmanager.cpp index 5e8e970..4d47b56 100644 --- a/src/contentmanager.cpp +++ b/src/contentmanager.cpp @@ -467,7 +467,15 @@ void ContentManager::removeDownload(QString bookId) void ContentManager::downloadDisappeared(QString bookId) { removeDownload(bookId); - kiwix::Book bCopy(mp_library->getBookById(bookId)); + kiwix::Book bCopy; + try { + bCopy = mp_library->getBookById(bookId); + } catch ( const std::out_of_range& ) { + // If the download has disappeared as a result of some + // obscure chain of events, the book may have disappeared too. + return; + } + bCopy.setDownloadId(""); mp_library->getKiwixLibrary()->addOrUpdateBook(bCopy); mp_library->save();