From 1c4d230a64c54fd66095fa40d325a610df7121db Mon Sep 17 00:00:00 2001 From: "Robert C. Helling" Date: Wed, 25 Mar 2015 14:28:36 +0100 Subject: [PATCH 1/2] Protect writing to image hashes with a mutex Hopefully... fixes #861 Signed-off-by: Robert C. Helling --- qthelper.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/qthelper.cpp b/qthelper.cpp index 8ca15f7..eb0d5e4 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()); -- 1.9.5 (Apple Git-50.3)