Hi,

this patch should fix a problem reported by Glance on IRC.

Best
Robert

From 78756efdbadc5fca9601e5be9bca7b4cb7c624b8 Mon Sep 17 00:00:00 2001
From: "Robert C. Helling" <[email protected]>
Date: Thu, 15 Dec 2016 14:31:20 +0100
Subject: [PATCH] Fix picture hashing logic for pictures on the web.
To: [email protected]

Signed-off-by: Robert C. Helling <[email protected]>
---
 core/imagedownloader.cpp | 2 ++
 core/qthelper.cpp        | 6 +++++-
 2 files changed, 7 insertions(+), 1 deletion(-)

diff --git a/core/imagedownloader.cpp b/core/imagedownloader.cpp
index d4dd859..16c48a0 100644
--- a/core/imagedownloader.cpp
+++ b/core/imagedownloader.cpp
@@ -100,6 +100,8 @@ SHashedImage::SHashedImage(struct picture *picture) : 
QImage()
                // This did not load anything. Let's try to get the image from 
other sources
                // Let's try to load it locally via its hash
                QString filename = fileFromHash(picture->hash);
+               if (filename.isNull())
+                       filename = QString(picture->filename);
                if (filename.isNull()) {
                        // That didn't produce a local filename.
                        // Try the cloud server
diff --git a/core/qthelper.cpp b/core/qthelper.cpp
index e0a5b15..c9763ac 100644
--- a/core/qthelper.cpp
+++ b/core/qthelper.cpp
@@ -1075,6 +1075,8 @@ QByteArray hashFile(const QString filename)
 
 void learnHash(struct picture *picture, QByteArray hash)
 {
+       if (hash.isNull())
+               return;
        if (picture->hash)
                free(picture->hash);
        QMutexLocker locker(&hashOfMutex);
@@ -1100,6 +1102,8 @@ QString localFilePath(const QString originalFilename)
 
 QString fileFromHash(char *hash)
 {
+       if (!hash || !*hash)
+               return "";
        QMutexLocker locker(&hashOfMutex);
 
        return localFilenameOf[QByteArray::fromHex(hash)];
@@ -1120,7 +1124,7 @@ void hashPicture(struct picture *picture)
        if (!picture)
                return;
        char *oldHash = copy_string(picture->hash);
-       learnHash(picture, hashFile(QString(picture->filename)));
+       learnHash(picture, hashFile(localFilePath(picture->filename)));
        if (!same_string(picture->hash, "") && !same_string(picture->hash, 
oldHash))
                mark_divelist_changed((true));
        free(oldHash);
-- 
2.10.1 (Apple Git-78)

Attachment: signature.asc
Description: Message signed with OpenPGP using GPGMail

_______________________________________________
subsurface mailing list
[email protected]
http://lists.subsurface-divelog.org/cgi-bin/mailman/listinfo/subsurface

Reply via email to