From 57192063c45db1e943bda9ff284f85570a2efd0d Mon Sep 17 00:00:00 2001 From: "Robert C. Helling" Date: Wed, 25 Mar 2015 14:28:36 +0100 Subject: Protect writing to image hashes with a mutex Hopefully... Fixes #861 Signed-off-by: Robert C. Helling Signed-off-by: Dirk Hohndel --- qthelper.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/qthelper.cpp b/qthelper.cpp index 8ca15f7aa..eb0d5e41a 100644 --- a/qthelper.cpp +++ b/qthelper.cpp @@ -805,6 +805,7 @@ extern "C" void reverseGeoLookup(degrees_t latitude, degrees_t longitude, uint32 } QHash hashOf; +QMutex hashOfMutex; QHash localFilenameOf; extern "C" char * hashstring(char * filename) @@ -836,6 +837,7 @@ void write_hashes() void add_hash(const QString filename, QByteArray hash) { + QMutexLocker locker(&hashOfMutex); hashOf[filename] = hash; localFilenameOf[hash] = filename; } @@ -853,6 +855,7 @@ QByteArray hashFile(const QString filename) void learnHash(struct picture *picture, QByteArray hash) { free(picture->hash); + QMutexLocker locker(&hashOfMutex); hashOf[QString(picture->filename)] = hash; picture->hash = strdup(hash.toHex()); } @@ -869,6 +872,7 @@ QString fileFromHash(char *hash) void updateHash(struct picture *picture) { QByteArray hash = hashFile(fileFromHash(picture->hash)); + QMutexLocker locker(&hashOfMutex); hashOf[QString(picture->filename)] = hash; char *old = picture->hash; picture->hash = strdup(hash.toHex()); -- cgit v1.2.3-70-g09d2