diff --git a/msvc/exiv2lib/exiv2lib.vcproj b/msvc/exiv2lib/exiv2lib.vcproj index bfdbf0fb..c2540569 100644 --- a/msvc/exiv2lib/exiv2lib.vcproj +++ b/msvc/exiv2lib/exiv2lib.vcproj @@ -127,6 +127,21 @@ + + + + + + + + + + + + + + + + + + diff --git a/msvc/exivsimple/exivsimple.cpp b/msvc/exivsimple/exivsimple.cpp index 59b177f1..4accd48d 100644 --- a/msvc/exivsimple/exivsimple.cpp +++ b/msvc/exivsimple/exivsimple.cpp @@ -42,23 +42,32 @@ struct ImageWrapper EXIVSIMPLE_API HIMAGE OpenFileImage(const char *file) { assert(file); - ImageWrapper *imgWrap = new ImageWrapper; // See if file exists. Sorry for very bad error handling if (INVALID_FILE_ATTRIBUTES == GetFileAttributes(file)) { return 0; } - imgWrap->image = Exiv2::ImageFactory::open(file); - if (imgWrap->image.get() == 0) { - return 0; - } - + ImageWrapper *imgWrap = new ImageWrapper; + try { + imgWrap->image = Exiv2::ImageFactory::open(file); + } + catch(const Exiv2::AnyError&) { + delete imgWrap; + return 0; + } + if (imgWrap->image.get() == 0) { + delete imgWrap; + return 0; + } // Load existing metadata - if (imgWrap->image->readMetadata()) { - delete imgWrap; - imgWrap = 0; - } + try { + imgWrap->image->readMetadata(); + } + catch(const Exiv2::AnyError&) { + delete imgWrap; + return 0; + } return (HIMAGE)imgWrap; } @@ -68,16 +77,25 @@ EXIVSIMPLE_API HIMAGE OpenMemImage(const BYTE *data, unsigned int size) assert(data); ImageWrapper *imgWrap = new ImageWrapper; - imgWrap->image = Exiv2::ImageFactory::open(data, size); - if (imgWrap->image.get() == 0) { - return 0; - } - - // Load existing metadata - if (imgWrap->image->readMetadata()) { + try { + imgWrap->image = Exiv2::ImageFactory::open(data, size); + } + catch(const Exiv2::AnyError&) { + delete imgWrap; + return 0; + } + if (imgWrap->image.get() == 0) { delete imgWrap; - imgWrap = 0; + return 0; } + // Load existing metadata + try { + imgWrap->image->readMetadata(); + } + catch(const Exiv2::AnyError&) { + delete imgWrap; + return 0; + } return (HIMAGE)imgWrap; } @@ -95,7 +113,13 @@ EXIVSIMPLE_API int SaveImage(HIMAGE img) { assert(img); ImageWrapper *imgWrap = (ImageWrapper*)img; - return imgWrap->image->writeMetadata(); + try { + imgWrap->image->writeMetadata(); + } + catch(const Exiv2::AnyError&) { + return 1; + } + return 0; } // Note that if you have modified the metadata in any way and want the @@ -155,7 +179,7 @@ EXIVSIMPLE_API int ReadMeta(HIMAGE img, const char *key, char *buff, int buffsiz rc = 0; } } - catch(const Exiv2::Error&) { + catch(const Exiv2::AnyError&) { } if (rc) { @@ -170,7 +194,7 @@ EXIVSIMPLE_API int ReadMeta(HIMAGE img, const char *key, char *buff, int buffsiz rc = 0; } } - catch(const Exiv2::Error&) { + catch(const Exiv2::AnyError&) { } } @@ -215,7 +239,7 @@ EXIVSIMPLE_API int ModifyMeta(HIMAGE img, const char *key, const char *val, DllT rc = iptcData.add(iptcKey, value.get()); } } - catch(const Exiv2::Error&) { + catch(const Exiv2::AnyError&) { } if (rc) { @@ -240,7 +264,7 @@ EXIVSIMPLE_API int ModifyMeta(HIMAGE img, const char *key, const char *val, DllT rc = 0; } } - catch(const Exiv2::Error&) { + catch(const Exiv2::AnyError&) { } } @@ -278,7 +302,7 @@ EXIVSIMPLE_API int AddMeta(HIMAGE img, const char *key, const char *val, DllType rc = iptcData.add(iptcKey, value.get()); } - catch(const Exiv2::Error&) { + catch(const Exiv2::AnyError&) { } if (rc) { @@ -296,7 +320,7 @@ EXIVSIMPLE_API int AddMeta(HIMAGE img, const char *key, const char *val, DllType exifData.add(exifKey, value.get()); rc = 0; } - catch(const Exiv2::Error&) { + catch(const Exiv2::AnyError&) { } } @@ -325,7 +349,7 @@ EXIVSIMPLE_API int RemoveMeta(HIMAGE img, const char *key) rc = 0; } } - catch(const Exiv2::Error&) { + catch(const Exiv2::AnyError&) { } if (rc) { @@ -339,7 +363,7 @@ EXIVSIMPLE_API int RemoveMeta(HIMAGE img, const char *key) rc = 0; } } - catch(const Exiv2::Error&) { + catch(const Exiv2::AnyError&) { } }