summaryrefslogtreecommitdiff
path: root/src/lib
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:18 +0100
commit5d2a839bf3018c63e781fd4a8661609f17039c7f (patch)
tree90294a61fbb15a6e43a328f529e021b0d9343592 /src/lib
parentbeaca4f5785ff05dc78a17f531a04f80c4927367 (diff)
Give filename (where possible) when image file decoding fails.
Diffstat (limited to 'src/lib')
-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 df90c7723..668f40736 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;
};