Give filename (where possible) when image file decoding fails.
authorCarl Hetherington <cth@carlh.net>
Tue, 14 Aug 2018 21:55:06 +0000 (22:55 +0100)
committerCarl Hetherington <cth@carlh.net>
Tue, 14 Aug 2018 21:55:18 +0000 (22:55 +0100)
src/lib/magick_image_proxy.cc
src/lib/magick_image_proxy.h

index b12a81db554e0ddbdb8ebe5d7532d2945bb2845a..cd5749bb67fd85735f73a2c97f951f69c8287499 100644 (file)
@@ -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());
index df90c7723594143687dab225bf8c1b531ff42b92..668f40736d2150e166bfdaa647dc58f117a86937 100644 (file)
@@ -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;
 };