From be173412f15a6364393d5514ed3d680ea7520f5c Mon Sep 17 00:00:00 2001 From: Adam Reichold Date: Sun, 21 Feb 2016 16:44:21 +0100 Subject: [PATCH] Fix the key file write path which depends on exceptions from loading before writing being swalloed. --- rtengine/rtthumbnail.cc | 11 ++++++++--- rtgui/cacheimagedata.cc | 5 ++++- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/rtengine/rtthumbnail.cc b/rtengine/rtthumbnail.cc index fe45a85c0..fa9622a3e 100644 --- a/rtengine/rtthumbnail.cc +++ b/rtengine/rtthumbnail.cc @@ -1741,7 +1741,9 @@ bool Thumbnail::readData (const Glib::ustring& fname) try { MyMutex::MyLock thmbLock(thumbMutex); - if (!keyFile.load_from_file (fname)) { + try { + keyFile.load_from_file (fname); + } catch (Glib::Error&) { return false; } @@ -1836,7 +1838,10 @@ bool Thumbnail::writeData (const Glib::ustring& fname) try { Glib::KeyFile keyFile; - keyFile.load_from_file (fname); + + try { + keyFile.load_from_file (fname); + } catch (Glib::Error&) {} keyFile.set_double ("LiveThumbData", "CamWBRed", camwbRed); keyFile.set_double ("LiveThumbData", "CamWBGreen", camwbGreen); @@ -1857,7 +1862,7 @@ bool Thumbnail::writeData (const Glib::ustring& fname) keyData = keyFile.to_data (); - } catch (Glib::Error &err) { + } catch (Glib::Error& err) { if (options.rtSettings.verbose) { printf("Thumbnail::writeData / Error code %d while reading values from \"%s\":\n%s\n", err.code(), fname.c_str(), err.what().c_str()); } diff --git a/rtgui/cacheimagedata.cc b/rtgui/cacheimagedata.cc index 5cf33e1f0..04e51c4bb 100644 --- a/rtgui/cacheimagedata.cc +++ b/rtgui/cacheimagedata.cc @@ -199,7 +199,10 @@ int CacheImageData::save (const Glib::ustring& fname) try { Glib::KeyFile keyFile; - keyFile.load_from_file (fname); + + try { + keyFile.load_from_file (fname); + } catch (Glib::Error&) {} keyFile.set_string ("General", "MD5", md5); keyFile.set_string ("General", "Version", VERSION); // Application's version