summaryrefslogtreecommitdiff
path: root/exempi
diff options
context:
space:
mode:
Diffstat (limited to 'exempi')
-rw-r--r--exempi/exempi.cpp11
-rw-r--r--exempi/tests/testparse.cpp3
2 files changed, 11 insertions, 3 deletions
diff --git a/exempi/exempi.cpp b/exempi/exempi.cpp
index 5392047..6857df9 100644
--- a/exempi/exempi.cpp
+++ b/exempi/exempi.cpp
@@ -183,6 +183,13 @@ int xmp_get_error()
#endif
}
+// the error callback - force throwing exceptions
+static bool _xmp_error_callback(void* context, XMP_ErrorSeverity severity,
+ XMP_Int32 cause, XMP_StringPtr message)
+{
+ return false;
+}
+
bool xmp_init()
{
RESET_ERROR;
@@ -192,7 +199,9 @@ bool xmp_init()
// text
// conversion
// the one that was done in Exempi with libiconv.
- return SXMPFiles::Initialize(kXMPFiles_IgnoreLocalText);
+ bool result = SXMPFiles::Initialize(kXMPFiles_IgnoreLocalText);
+ SXMPMeta::SetDefaultErrorCallback(&_xmp_error_callback, nullptr, 1);
+ return result;
}
catch (const XMP_Error &e) {
set_error(e);
diff --git a/exempi/tests/testparse.cpp b/exempi/tests/testparse.cpp
index c979a89..f3a42df 100644
--- a/exempi/tests/testparse.cpp
+++ b/exempi/tests/testparse.cpp
@@ -62,8 +62,7 @@ int test_main(int argc, char *argv[])
XmpPtr xmp = xmp_new_empty();
- // TODO current xmp_parse will succeed with invalid XML
- BOOST_CHECK(xmp_parse(xmp, buffer, len));
+ BOOST_CHECK(!xmp_parse(xmp, buffer, len));
BOOST_CHECK(xmp != NULL);