From 1b1ab2387e70194d79e6ce54b993203519e3a680 Mon Sep 17 00:00:00 2001 From: Albert S Date: Sat, 22 Oct 2022 15:08:26 +0200 Subject: [PATCH] gui: PreviewGeneratorPdf: Guard cache lookup with mutex No guarantes the read-only lookup is thread-safe so better just lock there too --- gui/previewgeneratorpdf.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/gui/previewgeneratorpdf.cpp b/gui/previewgeneratorpdf.cpp index 175a934..8c1b5a9 100644 --- a/gui/previewgeneratorpdf.cpp +++ b/gui/previewgeneratorpdf.cpp @@ -7,10 +7,12 @@ static QMutex cacheMutex; Poppler::Document *PreviewGeneratorPdf::document(QString path) { + QMutexLocker locker(&cacheMutex); if(documentcache.contains(path)) { return documentcache.value(path); } + locker.unlock(); Poppler::Document *result = Poppler::Document::load(path); if(result == nullptr) { @@ -19,7 +21,7 @@ Poppler::Document *PreviewGeneratorPdf::document(QString path) } result->setRenderHint(Poppler::Document::TextAntialiasing); - QMutexLocker locker(&cacheMutex); + locker.relock(); documentcache.insert(path, result); locker.unlock(); return result;