1
0

gui: PreviewGeneratorPdf: Guard cache lookup with mutex

No guarantes the read-only lookup is thread-safe so better
just lock there too
Este cometimento está contido em:
Albert S. 2022-10-22 15:08:26 +02:00
ascendente 49a1a14009
cometimento 1b1ab2387e

Ver ficheiro

@ -7,10 +7,12 @@ static QMutex cacheMutex;
Poppler::Document *PreviewGeneratorPdf::document(QString path) Poppler::Document *PreviewGeneratorPdf::document(QString path)
{ {
QMutexLocker locker(&cacheMutex);
if(documentcache.contains(path)) if(documentcache.contains(path))
{ {
return documentcache.value(path); return documentcache.value(path);
} }
locker.unlock();
Poppler::Document *result = Poppler::Document::load(path); Poppler::Document *result = Poppler::Document::load(path);
if(result == nullptr) if(result == nullptr)
{ {
@ -19,7 +21,7 @@ Poppler::Document *PreviewGeneratorPdf::document(QString path)
} }
result->setRenderHint(Poppler::Document::TextAntialiasing); result->setRenderHint(Poppler::Document::TextAntialiasing);
QMutexLocker locker(&cacheMutex); locker.relock();
documentcache.insert(path, result); documentcache.insert(path, result);
locker.unlock(); locker.unlock();
return result; return result;