summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2018-08-14 22:55:06 +0100
committerCarl Hetherington <cth@carlh.net>2018-08-14 22:55:06 +0100
commit39c880731c36cffd8310ea536509313de9f5fbd6 (patch)
tree50ab708f34c1808255842679f24bf740d7b97fd7 /src
parentbf9fee2e9e95b199aa35b005f980fcd3d345d613 (diff)
Give filename (where possible) when image file decoding fails.
Diffstat (limited to 'src')
-rw-r--r--src/lib/magick_image_proxy.cc7
-rw-r--r--src/lib/magick_image_proxy.h4
2 files changed, 10 insertions, 1 deletions
diff --git a/src/lib/magick_image_proxy.cc b/src/lib/magick_image_proxy.cc
index b12a81db5..cd5749bb6 100644
--- a/src/lib/magick_image_proxy.cc
+++ b/src/lib/magick_image_proxy.cc
@@ -39,6 +39,7 @@ using boost::optional;
using boost::dynamic_pointer_cast;
MagickImageProxy::MagickImageProxy (boost::filesystem::path path)
+ : _path (path)
{
/* Read the file into a Blob */
@@ -101,7 +102,11 @@ MagickImageProxy::image (optional<dcp::NoteHandler>, optional<dcp::Size>) const
/* If we failed both an auto-detect and a forced-Targa we give the error from
the auto-detect.
*/
- throw DecodeError (String::compose (_("Could not decode image file (%1)"), error));
+ if (_path) {
+ throw DecodeError (String::compose (_("Could not decode image file %1 (%2)"), _path->string(), error));
+ } else {
+ throw DecodeError (String::compose (_("Could not decode image file (%1)"), error));
+ }
}
unsigned char const * data = static_cast<unsigned char const *>(_blob.data());
diff --git a/src/lib/magick_image_proxy.h b/src/lib/magick_image_proxy.h
index 7d2b69afe..62f3afa2e 100644
--- a/src/lib/magick_image_proxy.h
+++ b/src/lib/magick_image_proxy.h
@@ -42,6 +42,10 @@ public:
private:
Magick::Blob _blob;
+ /** Path of a file that this image came from, if applicable; stored so that
+ failed-decode errors can give more detail.
+ */
+ boost::optional<boost::filesystem::path> _path;
mutable boost::shared_ptr<Image> _image;
mutable boost::mutex _mutex;
};