git: 2e39de84e092 - main - graphics/gexiv2: update to 0.14.2

From: Christoph Moench-Tegeder <cmt_at_FreeBSD.org>
Date: Tue, 25 Jul 2023 16:48:42 UTC
The branch main has been updated by cmt:

URL: https://cgit.FreeBSD.org/ports/commit/?id=2e39de84e092e4eb00b074f4b4a22fe9dcc7dd65

commit 2e39de84e092e4eb00b074f4b4a22fe9dcc7dd65
Author:     Christoph Moench-Tegeder <cmt@FreeBSD.org>
AuthorDate: 2023-07-25 16:48:08 +0000
Commit:     Christoph Moench-Tegeder <cmt@FreeBSD.org>
CommitDate: 2023-07-25 16:48:08 +0000

    graphics/gexiv2: update to 0.14.2
    
    Release Notes:
      https://download.gnome.org/sources/gexiv2/0.14/gexiv2-0.14.2.news
---
 graphics/gexiv2/Makefile                 |    3 +-
 graphics/gexiv2/distinfo                 |    6 +-
 graphics/gexiv2/files/patch-06adc8fb70cb | 1296 ------------------------------
 graphics/gexiv2/pkg-plist                |    2 +-
 4 files changed, 5 insertions(+), 1302 deletions(-)

diff --git a/graphics/gexiv2/Makefile b/graphics/gexiv2/Makefile
index cc7e15391a35..599b1fa25e7f 100644
--- a/graphics/gexiv2/Makefile
+++ b/graphics/gexiv2/Makefile
@@ -1,6 +1,5 @@
 PORTNAME=	gexiv2
-PORTVERSION=	0.14.1
-PORTREVISION=	1
+PORTVERSION=	0.14.2
 CATEGORIES=	graphics
 MASTER_SITES=	GNOME
 
diff --git a/graphics/gexiv2/distinfo b/graphics/gexiv2/distinfo
index 73f57c59bd51..b2805a0933e0 100644
--- a/graphics/gexiv2/distinfo
+++ b/graphics/gexiv2/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1684522550
-SHA256 (gexiv2-0.14.1.tar.xz) = ec3ee3ec3860b9c78958a55da89cf76ae2305848e12f41945b7b52124d8f6cf9
-SIZE (gexiv2-0.14.1.tar.xz) = 387604
+TIMESTAMP = 1690302061
+SHA256 (gexiv2-0.14.2.tar.xz) = 2a0c9cf48fbe8b3435008866ffd40b8eddb0667d2212b42396fdf688e93ce0be
+SIZE (gexiv2-0.14.2.tar.xz) = 389488
diff --git a/graphics/gexiv2/files/patch-06adc8fb70cb b/graphics/gexiv2/files/patch-06adc8fb70cb
deleted file mode 100644
index b2a077346864..000000000000
--- a/graphics/gexiv2/files/patch-06adc8fb70cb
+++ /dev/null
@@ -1,1296 +0,0 @@
-commit 06adc8fb70cb8c77c0cd364195d8251811106ef8
-Author: Jens Georg <mail@jensge.org>
-Date:   Sat May 6 10:47:32 2023 +0000
-
-    Fix compatibility with exiv2 main branch
-
-diff --git .gitlab-ci.yml .gitlab-ci.yml
-index 8684b48..427e5ea 100644
---- .gitlab-ci.yml
-+++ .gitlab-ci.yml
-@@ -3,10 +3,11 @@
-     - flatpak
-   variables:
-       MANIFEST_PATH: "build-aux/org.gnome.GExiv2.json"
--  image: registry.gitlab.gnome.org/gnome/gnome-runtime-images/gnome:44
-+  image: quay.io/gnome_infrastructure/gnome-runtime-images:gnome-44
-   stage: build
-   only:
-     - schedules
-+    - merge_requests
-   script:
-     - flatpak-builder build-dir ${MANIFEST_PATH} --stop-at=gexiv2 --user --disable-rofiles-fuse
-     - flatpak build build-dir meson _build -Dtests=true
-diff --git gexiv2/gexiv2-metadata-exif.cpp gexiv2/gexiv2-metadata-exif.cpp
-index 1e62292..15237f9 100644
---- gexiv2/gexiv2-metadata-exif.cpp
-+++ gexiv2/gexiv2-metadata-exif.cpp
-@@ -8,6 +8,8 @@
-  * SPDX-License-Identifier: GPL-2.0-or-later
-  */
- 
-+#include <config.h>
-+
- #include "gexiv2-metadata.h"
- #include "gexiv2-metadata-private.h"
- #include <string>
-@@ -116,7 +118,7 @@ gchar* gexiv2_metadata_get_exif_tag_string (GExiv2Metadata *self, const gchar* t
-         if (it != exif_data.end())
-             return g_strdup (it->toString ().c_str ());
-     } catch (Exiv2::Error& e) {
--        g_set_error_literal (error, g_quark_from_string ("GExiv2"), e.code (), e.what ());
-+        g_set_error_literal(error, g_quark_from_string("GExiv2"), static_cast<int>(e.code()), e.what());
-     }
- 
-     return nullptr;
-@@ -146,7 +148,7 @@ gchar** gexiv2_metadata_get_exif_tag_multiple(GExiv2Metadata* self, const gchar*
-             return array;
-         }
-     } catch (Exiv2::Error& e) {
--        g_set_error_literal(error, g_quark_from_string("GExiv2"), e.code(), e.what());
-+        g_set_error_literal(error, g_quark_from_string("GExiv2"), static_cast<int>(e.code()), e.what());
-     }
- 
-     array = g_new(gchar*, 1);
-@@ -187,7 +189,7 @@ gboolean gexiv2_metadata_set_exif_tag_multiple(GExiv2Metadata* self,
-         }
-         return TRUE;
-     } catch (Exiv2::Error& e) {
--        g_set_error_literal(error, g_quark_from_string("GExiv2"), e.code(), e.what());
-+        g_set_error_literal(error, g_quark_from_string("GExiv2"), static_cast<int>(e.code()), e.what());
-     }
- 
-     return FALSE;
-@@ -214,7 +216,7 @@ gchar* gexiv2_metadata_get_exif_tag_interpreted_string (GExiv2Metadata *self, co
-             return g_strdup (os.str ().c_str ());
-         }
-     } catch (Exiv2::Error& e) {
--        g_set_error_literal(error, g_quark_from_string("GExiv2"), e.code(), e.what());
-+        g_set_error_literal(error, g_quark_from_string("GExiv2"), static_cast<int>(e.code()), e.what());
-     }
- 
-     return nullptr;
-@@ -232,7 +234,7 @@ gboolean gexiv2_metadata_set_exif_tag_string (GExiv2Metadata *self, const gchar*
-         
-         return TRUE;
-     } catch (Exiv2::Error& e) {
--        g_set_error_literal (error, g_quark_from_string ("GExiv2"), e.code (), e.what ());
-+        g_set_error_literal(error, g_quark_from_string("GExiv2"), static_cast<int>(e.code()), e.what());
-     }
-     
-     return FALSE;
-@@ -251,11 +253,15 @@ glong gexiv2_metadata_get_exif_tag_long (GExiv2Metadata *self, const gchar* tag,
-         Exiv2::ExifData::iterator it = exif_data.findKey(Exiv2::ExifKey(tag));
-         while (it != exif_data.end() && it->count() == 0)
-             it++;
--        
-+#ifdef EXIV2_EXIFDATUM_HAS_TO_LONG
-         if (it != exif_data.end())
-             return it->toLong ();
-+#else
-+        if (it != exif_data.end())
-+            return static_cast<glong>(it->toInt64());
-+#endif
-     } catch (Exiv2::Error& e) {
--        g_set_error_literal(error, g_quark_from_string("GExiv2"), e.code(), e.what());
-+        g_set_error_literal(error, g_quark_from_string("GExiv2"), static_cast<int>(e.code()), e.what());
-     }
-     
-     return 0;
-@@ -272,7 +278,7 @@ gboolean gexiv2_metadata_set_exif_tag_long (GExiv2Metadata *self, const gchar* t
-         
-         return TRUE;
-     } catch (Exiv2::Error& e) {
--        g_set_error_literal(error, g_quark_from_string("GExiv2"), e.code(), e.what());
-+        g_set_error_literal(error, g_quark_from_string("GExiv2"), static_cast<int>(e.code()), e.what());
-     }
-     
-     return FALSE;
-@@ -303,7 +309,7 @@ gboolean gexiv2_metadata_try_get_exif_tag_rational (GExiv2Metadata *self, const
-             return TRUE;
-         }
-     } catch (Exiv2::Error& e) {
--        g_set_error_literal(error, g_quark_from_string("GExiv2"), e.code(), e.what());
-+        g_set_error_literal(error, g_quark_from_string("GExiv2"), static_cast<int>(e.code()), e.what());
-     }
-     
-     return FALSE;
-@@ -324,7 +330,7 @@ gboolean gexiv2_metadata_try_set_exif_tag_rational (GExiv2Metadata *self, const
-         
-         return TRUE;
-     } catch (Exiv2::Error& e) {
--        g_set_error_literal(error, g_quark_from_string("GExiv2"), e.code(), e.what());
-+        g_set_error_literal(error, g_quark_from_string("GExiv2"), static_cast<int>(e.code()), e.what());
-     }
-     
-     return FALSE;
-@@ -413,7 +419,7 @@ const gchar* gexiv2_metadata_get_exif_tag_label (const gchar* tag, GError **erro
-         Exiv2::ExifKey key(tag);
-         return g_intern_string(key.tagLabel().c_str());
-     } catch (Exiv2::Error& e) {
--        g_set_error_literal(error, g_quark_from_string("GExiv2"), e.code(), e.what());
-+        g_set_error_literal(error, g_quark_from_string("GExiv2"), static_cast<int>(e.code()), e.what());
-     }
-     
-     return NULL;
-@@ -427,7 +433,7 @@ const gchar* gexiv2_metadata_get_exif_tag_description (const gchar* tag, GError
-         Exiv2::ExifKey key(tag);
-         return g_intern_string(key.tagDesc().c_str());
-     } catch (Exiv2::Error& e) {
--        g_set_error_literal(error, g_quark_from_string("GExiv2"), e.code(), e.what());
-+        g_set_error_literal(error, g_quark_from_string("GExiv2"), static_cast<int>(e.code()), e.what());
-     }
-     
-     return NULL;
-@@ -441,7 +447,7 @@ const gchar* gexiv2_metadata_get_exif_tag_type (const gchar* tag, GError **error
-         Exiv2::ExifKey key(tag);
-         return Exiv2::TypeInfo::typeName(key.defaultTypeId());
-     } catch (Exiv2::Error& e) {
--        g_set_error_literal(error, g_quark_from_string("GExiv2"), e.code(), e.what());
-+        g_set_error_literal(error, g_quark_from_string("GExiv2"), static_cast<int>(e.code()), e.what());
-     }
-     
-     return NULL;
-@@ -455,7 +461,7 @@ gboolean gexiv2_metadata_exif_tag_supports_multiple_values (const gchar* tag, GE
-     	// Exif does not support multiple values, but still check if @tag is valid
-         const Exiv2::ExifKey key(tag);
-     } catch (Exiv2::Error& e) {
--        g_set_error_literal(error, g_quark_from_string("GExiv2"), e.code(), e.what());
-+        g_set_error_literal(error, g_quark_from_string("GExiv2"), static_cast<int>(e.code()), e.what());
-     }
- 
-     return FALSE;
-@@ -484,7 +490,7 @@ GBytes* gexiv2_metadata_get_exif_tag_raw (GExiv2Metadata *self, const gchar* tag
-             }
-         }
-     } catch (Exiv2::Error& e) {
--        g_set_error_literal(error, g_quark_from_string ("GExiv2"), e.code(), e.what());
-+        g_set_error_literal(error, g_quark_from_string("GExiv2"), static_cast<int>(e.code()), e.what());
-     }
- 
-     return nullptr;
-@@ -522,7 +528,7 @@ GBytes * gexiv2_metadata_get_exif_data (GExiv2Metadata *self,
- 
-         return g_bytes_new_take (data, blob.size());
-     } catch (Exiv2::Error& e) {
--        g_set_error_literal(error, g_quark_from_string("GExiv2"), e.code(), e.what());
-+        g_set_error_literal(error, g_quark_from_string("GExiv2"), static_cast<int>(e.code()), e.what());
-     }
- 
-     return nullptr;
-diff --git gexiv2/gexiv2-metadata-gps.cpp gexiv2/gexiv2-metadata-gps.cpp
-index 815eb96..7cd7c6c 100644
---- gexiv2/gexiv2-metadata-gps.cpp
-+++ gexiv2/gexiv2-metadata-gps.cpp
-@@ -90,7 +90,7 @@ gboolean gexiv2_metadata_try_get_gps_longitude (GExiv2Metadata *self, gdouble *l
- 
-         return TRUE;
-     } catch (Exiv2::Error &e) {
--        g_set_error_literal(error, g_quark_from_string("GExiv2"), e.code(), e.what());
-+        g_set_error_literal(error, g_quark_from_string("GExiv2"), static_cast<int>(e.code()), e.what());
-     } catch (std::invalid_argument &e) {
-         g_set_error_literal(error, g_quark_from_string("GExiv2"), 0, e.what());
-     }
-@@ -141,7 +141,7 @@ gboolean gexiv2_metadata_try_get_gps_latitude (GExiv2Metadata *self, gdouble *la
- 
-         return TRUE;
-     } catch (Exiv2::Error &e) {
--        g_set_error_literal(error, g_quark_from_string("GExiv2"), e.code(), e.what());
-+        g_set_error_literal(error, g_quark_from_string("GExiv2"), static_cast<int>(e.code()), e.what());
-     } catch (std::invalid_argument &e) {
-         g_set_error_literal(error, g_quark_from_string("GExiv2"), 0, e.what());
-     }
-@@ -181,7 +181,7 @@ gboolean gexiv2_metadata_try_get_gps_altitude (GExiv2Metadata *self, gdouble *al
- 
-         return TRUE;
-     } catch (Exiv2::Error &e) {
--        g_set_error_literal(error, g_quark_from_string("GExiv2"), e.code(), e.what());
-+        g_set_error_literal(error, g_quark_from_string("GExiv2"), static_cast<int>(e.code()), e.what());
-     } catch (std::invalid_argument &e) {
-         g_set_error_literal(error, g_quark_from_string("GExiv2"), 0, e.what());
-     }
-@@ -300,7 +300,7 @@ gboolean gexiv2_metadata_try_set_gps_info (GExiv2Metadata *self, gdouble longitu
- 
-         return gexiv2_metadata_try_update_gps_info (self, longitude, latitude, altitude, error);
-     } catch (Exiv2::Error &e) {
--        g_set_error_literal(error, g_quark_from_string("GExiv2"), e.code(), e.what());
-+        g_set_error_literal(error, g_quark_from_string("GExiv2"), static_cast<int>(e.code()), e.what());
-     }
- 
-     return FALSE;
-@@ -393,7 +393,7 @@ gboolean gexiv2_metadata_try_update_gps_info (GExiv2Metadata *self, gdouble long
-         
-         return TRUE;
-     } catch (Exiv2::Error &e) {
--        g_set_error_literal(error, g_quark_from_string("GExiv2"), e.code(), e.what());
-+        g_set_error_literal(error, g_quark_from_string("GExiv2"), static_cast<int>(e.code()), e.what());
-     }
- 
-     return FALSE;
-@@ -434,7 +434,7 @@ void gexiv2_metadata_try_delete_gps_info (GExiv2Metadata *self, GError **error)
-                 ++exif_it;
-         }
-     } catch (Exiv2::Error& e) {
--        g_set_error_literal(error, g_quark_from_string("GExiv2"), e.code(), e.what());
-+        g_set_error_literal(error, g_quark_from_string("GExiv2"), static_cast<int>(e.code()), e.what());
-     }
-     
-     /* FIXME: two blocks shall ensure to erase in xmp data, if erasing in exif
-@@ -454,7 +454,7 @@ void gexiv2_metadata_try_delete_gps_info (GExiv2Metadata *self, GError **error)
-         
-     } catch (Exiv2::Error& e) {
-         if (error && *error == nullptr)
--            g_set_error_literal(error, g_quark_from_string("GExiv2"), e.code(), e.what());
-+            g_set_error_literal(error, g_quark_from_string("GExiv2"), static_cast<int>(e.code()), e.what());
-     }
- }
- 
-diff --git gexiv2/gexiv2-metadata-iptc.cpp gexiv2/gexiv2-metadata-iptc.cpp
-index ab675ae..7f34cb4 100644
---- gexiv2/gexiv2-metadata-iptc.cpp
-+++ gexiv2/gexiv2-metadata-iptc.cpp
-@@ -140,7 +140,7 @@ gchar* gexiv2_metadata_get_iptc_tag_string (GExiv2Metadata *self, const gchar* t
-             return g_strdup (os.str().c_str());
-         }
-     } catch (Exiv2::Error& e) {
--        g_set_error_literal (error, g_quark_from_string ("GExiv2"), e.code (), e.what ());
-+        g_set_error_literal(error, g_quark_from_string("GExiv2"), static_cast<int>(e.code()), e.what());
-     }
-     
-     return nullptr;
-@@ -186,7 +186,7 @@ gchar* gexiv2_metadata_get_iptc_tag_interpreted_string (GExiv2Metadata *self, co
-             return g_strdup (os.str().c_str());
-         }
-     } catch (Exiv2::Error& e) {
--        g_set_error_literal (error, g_quark_from_string ("GExiv2"), e.code (), e.what ());
-+        g_set_error_literal(error, g_quark_from_string("GExiv2"), static_cast<int>(e.code()), e.what());
-     }
-     
-     return nullptr;
-@@ -234,7 +234,7 @@ gboolean gexiv2_metadata_set_iptc_tag_string (GExiv2Metadata *self, const gchar*
- 
-         return TRUE;
-     } catch (Exiv2::Error& e) {
--        g_set_error_literal (error, g_quark_from_string ("GExiv2"), e.code (), e.what ());
-+        g_set_error_literal(error, g_quark_from_string("GExiv2"), static_cast<int>(e.code()), e.what());
-     }
-     
-     return FALSE;
-@@ -271,7 +271,7 @@ gchar** gexiv2_metadata_get_iptc_tag_multiple (GExiv2Metadata *self, const gchar
-         
-         return values;
-     } catch (Exiv2::Error& e) {
--        g_set_error_literal (error, g_quark_from_string ("GExiv2"), e.code (), e.what ());
-+        g_set_error_literal(error, g_quark_from_string("GExiv2"), static_cast<int>(e.code()), e.what());
-     }
-     
-     g_slist_free_full (list, g_free);
-@@ -347,7 +347,7 @@ gboolean gexiv2_metadata_set_iptc_tag_multiple (GExiv2Metadata *self, const gcha
- 
-         return TRUE;
-     } catch (Exiv2::Error& e) {
--        g_set_error_literal (error, g_quark_from_string ("GExiv2"), e.code (), e.what ());
-+        g_set_error_literal(error, g_quark_from_string("GExiv2"), static_cast<int>(e.code()), e.what());
-     }
-     
-     return FALSE;
-@@ -361,7 +361,7 @@ const gchar* gexiv2_metadata_get_iptc_tag_label (const gchar* tag, GError **erro
-         Exiv2::IptcKey key (tag);
-         return Exiv2::IptcDataSets::dataSetTitle (key.tag (), key.record ());
-     } catch (Exiv2::Error& e) {
--        g_set_error_literal (error, g_quark_from_string ("GExiv2"), e.code (), e.what ());
-+        g_set_error_literal(error, g_quark_from_string("GExiv2"), static_cast<int>(e.code()), e.what());
-     }
-     
-     return NULL;
-@@ -375,7 +375,7 @@ const gchar* gexiv2_metadata_get_iptc_tag_description (const gchar* tag, GError
-         Exiv2::IptcKey key (tag);
-         return Exiv2::IptcDataSets::dataSetDesc (key.tag (), key.record ());
-     } catch (Exiv2::Error& e) {
--        g_set_error_literal (error, g_quark_from_string ("GExiv2"), e.code (), e.what ());
-+        g_set_error_literal(error, g_quark_from_string("GExiv2"), static_cast<int>(e.code()), e.what());
-     }
-     
-     return NULL;
-@@ -389,7 +389,7 @@ const gchar* gexiv2_metadata_get_iptc_tag_type (const gchar* tag, GError **error
-         Exiv2::IptcKey key (tag);
-         return Exiv2::TypeInfo::typeName(Exiv2::IptcDataSets::dataSetType(key.tag(), key.record()));
-     } catch (Exiv2::Error& e) {
--        g_set_error_literal (error, g_quark_from_string ("GExiv2"), e.code (), e.what ());
-+        g_set_error_literal(error, g_quark_from_string("GExiv2"), static_cast<int>(e.code()), e.what());
-     }
-     
-     return NULL;
-@@ -403,7 +403,7 @@ gboolean gexiv2_metadata_iptc_tag_supports_multiple_values(const gchar* tag, GEr
-         const Exiv2::IptcKey key(tag); // Check to see if @tag is valid
-         return (Exiv2::IptcDataSets::dataSetRepeatable(key.tag(), key.record()) ? TRUE : FALSE);
-     } catch (Exiv2::Error& e) {
--        g_set_error_literal(error, g_quark_from_string("GExiv2"), e.code(), e.what());
-+        g_set_error_literal(error, g_quark_from_string("GExiv2"), static_cast<int>(e.code()), e.what());
-     }
- 
-     return FALSE;
-@@ -464,7 +464,7 @@ GBytes* gexiv2_metadata_get_iptc_tag_raw (GExiv2Metadata *self, const gchar* tag
-             return g_byte_array_free_to_bytes(concatenated_raw_arrays);
-         }
-     } catch (Exiv2::Error& e) {
--        g_set_error_literal (error, g_quark_from_string ("GExiv2"), e.code (), e.what ());
-+        g_set_error_literal(error, g_quark_from_string("GExiv2"), static_cast<int>(e.code()), e.what());
-     }
- 
-     return nullptr;
-diff --git gexiv2/gexiv2-metadata-xmp.cpp gexiv2/gexiv2-metadata-xmp.cpp
-index 88c7e2c..6abb61d 100644
---- gexiv2/gexiv2-metadata-xmp.cpp
-+++ gexiv2/gexiv2-metadata-xmp.cpp
-@@ -8,6 +8,8 @@
-  * SPDX-License-Identifier: GPL-2.0-or-later
-  */
- 
-+#include <config.h>
-+
- #include "gexiv2-metadata-private.h"
- #include "gexiv2-metadata.h"
- 
-@@ -48,7 +50,7 @@ gchar *gexiv2_metadata_try_generate_xmp_packet(GExiv2Metadata *self,
-             return g_strdup(packet.c_str());
-         }
-     } catch (Exiv2::Error& e) {
--        g_set_error_literal(error, g_quark_from_string("GExiv2"), e.code(), e.what());
-+        g_set_error_literal(error, g_quark_from_string("GExiv2"), static_cast<int>(e.code()), e.what());
-     }
- 
-     return nullptr;
-@@ -79,7 +81,7 @@ gchar *gexiv2_metadata_try_get_xmp_packet(GExiv2Metadata *self, GError **error)
-     try {
-         return g_strdup(self->priv->image->xmpPacket().c_str());
-     } catch (Exiv2::Error& e) {
--        g_set_error_literal(error, g_quark_from_string("GExiv2"), e.code(), e.what());
-+        g_set_error_literal(error, g_quark_from_string("GExiv2"), static_cast<int>(e.code()), e.what());
-     }
-     
-     return NULL;
-@@ -187,7 +189,7 @@ gchar* gexiv2_metadata_get_xmp_tag_string (GExiv2Metadata *self, const gchar* ta
-         if (it != xmp_data.end())
-             return g_strdup (it->toString ().c_str ());
-     } catch (Exiv2::Error& e) {
--        g_set_error_literal(error, g_quark_from_string("GExiv2"), e.code(), e.what());
-+        g_set_error_literal(error, g_quark_from_string("GExiv2"), static_cast<int>(e.code()), e.what());
-     }
- 
-     return nullptr;
-@@ -214,7 +216,7 @@ gchar* gexiv2_metadata_get_xmp_tag_interpreted_string (GExiv2Metadata *self, con
-             return g_strdup (os.str ().c_str ());
-         }
-     } catch (Exiv2::Error& e) {
--        g_set_error_literal(error, g_quark_from_string("GExiv2"), e.code(), e.what());
-+        g_set_error_literal(error, g_quark_from_string("GExiv2"), static_cast<int>(e.code()), e.what());
-     }
- 
-     return nullptr;
-@@ -257,7 +259,7 @@ gboolean gexiv2_metadata_try_set_xmp_tag_struct (GExiv2Metadata *self, const gch
-         xmp_data.add(Exiv2::XmpKey(tag), &tv);
-         return TRUE;
-     } catch (Exiv2::Error& e) {
--        g_set_error_literal(error, g_quark_from_string("GExiv2"), e.code(), e.what());
-+        g_set_error_literal(error, g_quark_from_string("GExiv2"), static_cast<int>(e.code()), e.what());
-     }
-     
-     return FALSE;
-@@ -294,7 +296,7 @@ gboolean gexiv2_metadata_set_xmp_tag_string (GExiv2Metadata *self, const gchar*
-         
-         return TRUE;
-     } catch (Exiv2::Error& e) {
--        g_set_error_literal(error, g_quark_from_string("GExiv2"), e.code(), e.what());
-+        g_set_error_literal(error, g_quark_from_string("GExiv2"), static_cast<int>(e.code()), e.what());
-     }
-     
-     return FALSE;
-@@ -313,11 +315,16 @@ glong gexiv2_metadata_get_xmp_tag_long (GExiv2Metadata *self, const gchar* tag,
-         Exiv2::XmpData::iterator it = xmp_data.findKey(Exiv2::XmpKey(tag));
-         while (it != xmp_data.end() && it->count() == 0)
-             it++;
--        
-+
-+#ifdef EXIV2_XMPDATUM_HAS_TO_LONG
-         if (it != xmp_data.end())
-             return it->toLong ();
-+#else
-+        if (it != xmp_data.end())
-+            return static_cast<glong>(it->toInt64());
-+#endif
-     } catch (Exiv2::Error& e) {
--        g_set_error_literal(error, g_quark_from_string("GExiv2"), e.code(), e.what());
-+        g_set_error_literal(error, g_quark_from_string("GExiv2"), static_cast<int>(e.code()), e.what());
-     }
-     
-     return 0;
-@@ -334,7 +341,7 @@ gboolean gexiv2_metadata_set_xmp_tag_long (GExiv2Metadata *self, const gchar* ta
-         
-         return TRUE;
-     } catch (Exiv2::Error& e) {
--        g_set_error_literal(error, g_quark_from_string("GExiv2"), e.code(), e.what());
-+        g_set_error_literal(error, g_quark_from_string("GExiv2"), static_cast<int>(e.code()), e.what());
-     }
-     
-     return FALSE;
-@@ -414,7 +421,7 @@ gchar** gexiv2_metadata_get_xmp_tag_multiple(GExiv2Metadata* self, const gchar*
-         if (array) {
-             g_strfreev(array);
-         }
--        g_set_error_literal(error, g_quark_from_string("GExiv2"), e.code(), e.what());
-+        g_set_error_literal(error, g_quark_from_string("GExiv2"), static_cast<int>(e.code()), e.what());
-     }
- 
-     array = g_new(gchar*, 1);
-@@ -450,7 +457,7 @@ gchar** gexiv2_metadata_get_xmp_tag_multiple_deprecated (GExiv2Metadata *self, c
-             return array;
-         }
-     } catch (Exiv2::Error& e) {
--        g_set_error_literal(error, g_quark_from_string("GExiv2"), e.code(), e.what());
-+        g_set_error_literal(error, g_quark_from_string("GExiv2"), static_cast<int>(e.code()), e.what());
-     }
- 
-     gchar **array = g_new (gchar*, 1);
-@@ -488,7 +495,7 @@ gboolean gexiv2_metadata_set_xmp_tag_multiple (GExiv2Metadata *self, const gchar
- 
-         return TRUE;
-     } catch (Exiv2::Error& e) {
--        g_set_error_literal(error, g_quark_from_string("GExiv2"), e.code(), e.what());
-+        g_set_error_literal(error, g_quark_from_string("GExiv2"), static_cast<int>(e.code()), e.what());
-     }
-     
-     return FALSE;
-@@ -501,7 +508,7 @@ const gchar* gexiv2_metadata_get_xmp_tag_label (const gchar* tag, GError **error
-     try {
-         return Exiv2::XmpProperties::propertyTitle(Exiv2::XmpKey(tag));
-     } catch (Exiv2::Error& e) {
--        g_set_error_literal(error, g_quark_from_string("GExiv2"), e.code(), e.what());
-+        g_set_error_literal(error, g_quark_from_string("GExiv2"), static_cast<int>(e.code()), e.what());
-     }
-     
-     return NULL;
-@@ -514,7 +521,7 @@ const gchar* gexiv2_metadata_get_xmp_tag_description (const gchar* tag, GError *
-     try {
-         return Exiv2::XmpProperties::propertyDesc(Exiv2::XmpKey(tag));
-     } catch (Exiv2::Error& e) {
--        g_set_error_literal(error, g_quark_from_string("GExiv2"), e.code(), e.what());
-+        g_set_error_literal(error, g_quark_from_string("GExiv2"), static_cast<int>(e.code()), e.what());
-     }
-     
-     return NULL;
-@@ -527,7 +534,7 @@ const gchar* gexiv2_metadata_get_xmp_tag_type (const gchar* tag, GError **error)
-     try {
-         return Exiv2::TypeInfo::typeName(Exiv2::XmpProperties::propertyType(Exiv2::XmpKey(tag)));
-     } catch (Exiv2::Error& e) {
--        g_set_error_literal(error, g_quark_from_string("GExiv2"), e.code(), e.what());
-+        g_set_error_literal(error, g_quark_from_string("GExiv2"), static_cast<int>(e.code()), e.what());
-     }
-     
-     return NULL;
-@@ -569,7 +576,7 @@ gboolean gexiv2_metadata_xmp_tag_supports_multiple_values(GExiv2Metadata* self,
-             return TRUE;
-         }
-     } catch (Exiv2::Error& e) {
--        g_set_error_literal(error, g_quark_from_string("GExiv2"), e.code(), e.what());
-+        g_set_error_literal(error, g_quark_from_string("GExiv2"), static_cast<int>(e.code()), e.what());
-     }
-     return FALSE;
- }
-@@ -597,7 +604,7 @@ GBytes* gexiv2_metadata_get_xmp_tag_raw (GExiv2Metadata *self, const gchar* tag,
-             }
-         }
-     } catch (Exiv2::Error& e) {
--        g_set_error_literal(error, g_quark_from_string("GExiv2"), e.code(), e.what());
-+        g_set_error_literal(error, g_quark_from_string("GExiv2"), static_cast<int>(e.code()), e.what());
-     }
- 
-     return nullptr;
-@@ -622,15 +629,21 @@ gboolean gexiv2_metadata_try_register_xmp_namespace(const gchar* name, const gch
-     g_return_val_if_fail(prefix != nullptr, FALSE);
-     g_return_val_if_fail(error == nullptr || *error == nullptr, FALSE);
- 
-+#if defined(EXIV2_HAS_ANY_ERROR)
-+    using Exiv2ErrorProxy = Exiv2::AnyError;
-+#else
-+    using Exiv2ErrorProxy = Exiv2::Error;
-+#endif
-+
-     try {
-         Exiv2::XmpProperties::ns(prefix);
--    } catch (Exiv2::AnyError& e1) {
-+    } catch (Exiv2ErrorProxy& e1) {
-         // No namespace, OK to register
-         try {
-             Exiv2::XmpProperties::registerNs(name, prefix);
-             return TRUE;
--        } catch (Exiv2::AnyError& e2) {
--            g_set_error_literal(error, g_quark_from_string("GExiv2"), e2.code(), e2.what());
-+        } catch (Exiv2ErrorProxy& e2) {
-+            g_set_error_literal(error, g_quark_from_string("GExiv2"), static_cast<int>(e2.code()), e2.what());
-         }
-     }
- 
-@@ -670,7 +683,7 @@ gboolean gexiv2_metadata_try_unregister_xmp_namespace(const gchar* name, GError*
-             }
-         }
-     } catch (Exiv2::Error& e2) {
--        g_set_error_literal(error, g_quark_from_string("GExiv2"), e2.code(), e2.what());
-+        g_set_error_literal(error, g_quark_from_string("GExiv2"), static_cast<int>(e2.code()), e2.what());
-     }
-     return FALSE;
- }
-@@ -692,7 +705,7 @@ void gexiv2_metadata_try_unregister_all_xmp_namespaces(GError** error) {
-     try {
-         Exiv2::XmpProperties::unregisterNs();
-     } catch (Exiv2::Error& e) {
--        g_set_error_literal(error, g_quark_from_string("GExiv2"), e.code(), e.what());
-+        g_set_error_literal(error, g_quark_from_string("GExiv2"), static_cast<int>(e.code()), e.what());
-     }
- }
- 
-@@ -739,7 +752,7 @@ char* gexiv2_metadata_try_get_xmp_namespace_for_tag(const char* tag, GError** er
- 
-         result = g_strdup(info.c_str());
-     } catch (Exiv2::Error& e) {
--        g_set_error_literal(error, g_quark_from_string("GExiv2"), e.code(), e.what());
-+        g_set_error_literal(error, g_quark_from_string("GExiv2"), static_cast<int>(e.code()), e.what());
-     }
- 
-     g_clear_pointer(&list, g_strfreev);
-diff --git gexiv2/gexiv2-metadata.cpp gexiv2/gexiv2-metadata.cpp
-index 928b07b..c67529e 100644
---- gexiv2/gexiv2-metadata.cpp
-+++ gexiv2/gexiv2-metadata.cpp
-@@ -9,19 +9,22 @@
-  */
- 
- #include "gexiv2-metadata.h"
--#include "gexiv2-metadata-private.h"
--#include "gexiv2-stream-io.h"
-+
-+#include "gexiv2-log-private.h"
-+#include "gexiv2-log.h"
- #include "gexiv2-managed-stream.h"
--#include "gexiv2-preview-properties.h"
--#include "gexiv2-preview-properties-private.h"
--#include "gexiv2-preview-image.h"
-+#include "gexiv2-metadata-private.h"
- #include "gexiv2-preview-image-private.h"
--#include "gexiv2-log.h"
--#include "gexiv2-log-private.h"
--#include <string>
-+#include "gexiv2-preview-image.h"
-+#include "gexiv2-preview-properties-private.h"
-+#include "gexiv2-preview-properties.h"
-+#include "gexiv2-stream-io.h"
-+
- #include <cmath>
--#include <glib-object.h>
-+#include <config.h>
- #include <gio/gio.h>
-+#include <glib-object.h>
-+#include <string>
- 
- #ifdef G_OS_WIN32
- #include <glib/gwin32.h>
-@@ -46,7 +49,7 @@ public:
-         , _eof{false}
-         {}
- #if EXIV2_TEST_VERSION(0,27,99)
--    using size_type = long;
-+    using size_type = size_t;
- #else
-     using size_type = long;
- #endif
-@@ -66,6 +69,9 @@ public:
-     using ptr_type = Exiv2::BasicIo::AutoPtr;
- #endif
- 
-+#if EXIV2_TEST_VERSION(0, 27, 99)
-+    void populateFakeData() override{};
-+#endif
-     int open() override {
-         if (_seekable == nullptr)
-             return 0;
-@@ -91,9 +97,17 @@ public:
-     Exiv2::DataBuf read(size_type rcount) override {
-         Exiv2::DataBuf b{rcount};
- 
-+#ifdef EXIV2_DATABUF_HAS_PRIVATE_PDATA
-+        auto bytes_read = this->read(b.data(), rcount);
-+#else
-         auto bytes_read = this->read(b.pData_, rcount);
-+#endif
-         if (bytes_read > 0 && bytes_read != rcount) {
-+#ifdef EXIV2_DATABUF_HAS_PRIVATE_PDATA
-+            b = Exiv2::DataBuf{b};
-+#else
-             b.reset({b.pData_, bytes_read});
-+#endif
-         }
- 
-         return b;
-@@ -188,7 +202,7 @@ public:
- 
-     int munmap() override { return 0; }
- 
--    long tell() const override {
-+    size_type tell() const override {
-         if (_seekable != nullptr && g_seekable_can_seek (_seekable)) {
-             return static_cast<long>(g_seekable_tell (_seekable));
-         } else {
-@@ -204,10 +218,21 @@ public:
- 
-     bool eof() const override { return _eof; }
- 
-+#if EXIV2_TEST_VERSION(0, 27, 99)
-+    const std::string& path() const noexcept override {
-+        static std::string info{"GIO Wrapper"};
-+        return info;
-+    }
-+#else
-     std::string path() const override { return "GIO Wrapper"; }
-+#endif
- 
- #ifdef EXV_UNICODE_PATH
-+#ifdef EXIV2_TEST_VERSION(0, 27, 99)
-+    const std::wstring& wpath() const noexcept override {
-+#else
-     std::wstring wpath() const override {
-+#endif
-         std::string p = path();
-         std::wstring w(p.length(), L' ');
-         std::copy(p.begin(), p.end(), w.begin());
-@@ -395,7 +420,7 @@ static void gexiv2_metadata_init_internal(GExiv2Metadata* self, GError** error)
-         if (priv->preview_manager)
-             delete priv->preview_manager;
- 
--        g_set_error_literal(error, g_quark_from_string("GExiv2"), e.code(), e.what());
-+        g_set_error_literal(error, g_quark_from_string("GExiv2"), static_cast<int>(e.code()), e.what());
-     }
- }
- 
-@@ -416,7 +441,7 @@ static gboolean gexiv2_metadata_open_internal (GExiv2Metadata* self, GError** er
- 
-         return !(error && *error);
-     } catch (Exiv2::Error& e) {
--        g_set_error_literal(error, g_quark_from_string("GExiv2"), e.code(), e.what());
-+        g_set_error_literal(error, g_quark_from_string("GExiv2"), static_cast<int>(e.code()), e.what());
-     }
- 
-     return FALSE;
-@@ -476,11 +501,11 @@ gboolean gexiv2_metadata_open_path(GExiv2Metadata* self, const gchar* path, GErr
- 
-         return gexiv2_metadata_open_internal (self, error);
-     } catch (Exiv2::Error &e) {
--        g_set_error_literal (error, g_quark_from_string ("GExiv2"), e.code (), e.what ());
-+        g_set_error_literal (error, g_quark_from_string ("GExiv2"), static_cast<int>(e.code()), e.what ());
-     }
- #ifdef EXV_UNICODE_PATH
-     catch (Exiv2::WError &e) {
--        g_set_error_literal (error, g_quark_from_string ("GExiv2"), e.code (), e.what ());
-+        g_set_error_literal (error, g_quark_from_string ("GExiv2"), static_cast<int>(e.code()), e.what ());
-     }
- #endif
- 
-@@ -503,7 +528,7 @@ gboolean gexiv2_metadata_open_buf(GExiv2Metadata* self, const guint8* data, glon
- 
- gboolean gexiv2_metadata_open_stream (GExiv2Metadata *self, ManagedStreamCallbacks* cb, GError **error) {
-     g_return_val_if_fail (GEXIV2_IS_METADATA (self), FALSE);
--    
-+
-     try {
-         StreamIo::ptr_type stream_ptr{new StreamIo (cb)};
- #if EXIV2_TEST_VERSION(0,27,99)
-@@ -514,7 +539,7 @@ gboolean gexiv2_metadata_open_stream (GExiv2Metadata *self, ManagedStreamCallbac
-         
-         return gexiv2_metadata_open_internal (self, error);
-     } catch (Exiv2::Error &e) {
--        g_set_error_literal (error, g_quark_from_string ("GExiv2"), e.code (), e.what ());
-+        g_set_error_literal (error, g_quark_from_string ("GExiv2"), static_cast<int>(e.code()), e.what ());
-     }
-     
-     return FALSE;
-@@ -533,7 +558,7 @@ gboolean gexiv2_metadata_from_stream(GExiv2Metadata *self, GInputStream *stream,
- 
-         return gexiv2_metadata_open_internal (self, error);
-     } catch (Exiv2::Error &e) {
--        g_set_error_literal (error, g_quark_from_string ("GExiv2"), e.code(), e.what());
-+        g_set_error_literal(error, g_quark_from_string("GExiv2"), static_cast<int>(e.code()), e.what());
-     }
- 
-     return FALSE;
-@@ -584,7 +609,7 @@ gboolean gexiv2_metadata_from_app1_segment(GExiv2Metadata* self, const guint8* d
-         return TRUE;
-     } catch (Exiv2::Error &e) {
-         delete self->priv->image.release();
--        g_set_error_literal(error, g_quark_from_string("GExiv2"), e.code(), e.what());
-+        g_set_error_literal(error, g_quark_from_string("GExiv2"), static_cast<int>(e.code()), e.what());
-     }
-     return FALSE;
- }
-@@ -653,7 +678,7 @@ static gboolean gexiv2_metadata_save_internal (GExiv2Metadata *self, image_ptr i
- 
-         return TRUE;
-     } catch (Exiv2::Error& e) {
--        g_set_error_literal(error, g_quark_from_string("GExiv2"), e.code(), e.what());
-+        g_set_error_literal(error, g_quark_from_string("GExiv2"), static_cast<int>(e.code()), e.what());
-     }
-     return FALSE;
- }
-@@ -675,11 +700,11 @@ gboolean gexiv2_metadata_save_external (GExiv2Metadata *self, const gchar *path,
-                                              Exiv2::ImageFactory::create(Exiv2::ImageType::xmp, local_path),
-                                              error);
-     } catch (Exiv2::Error &e) {
--        g_set_error_literal (error, g_quark_from_string ("GExiv2"), e.code (), e.what ());
-+        g_set_error_literal (error, g_quark_from_string ("GExiv2"), static_cast<int>(e.code()), e.what ());
-     }
- #ifdef EXV_UNICODE_PATH
-     catch (Exiv2::WError &e) {
--        g_set_error_literal (error, g_quark_from_string ("GExiv2"), e.code (), e.what ());
-+        g_set_error_literal (error, g_quark_from_string ("GExiv2"), static_cast<int>(e.code()), e.what ());
-     }
- #endif
- 
-@@ -701,11 +726,11 @@ gboolean gexiv2_metadata_save_file (GExiv2Metadata *self, const gchar *path, GEr
- 
-         return gexiv2_metadata_save_internal(self, Exiv2::ImageFactory::open(local_path), error);
-     } catch (Exiv2::Error &e) {
--        g_set_error_literal (error, g_quark_from_string ("GExiv2"), e.code (), e.what ());
-+        g_set_error_literal (error, g_quark_from_string ("GExiv2"), static_cast<int>(e.code()), e.what ());
-     }
- #ifdef EXV_UNICODE_PATH
-     catch (Exiv2::WError &e) {
--        g_set_error_literal (error, g_quark_from_string ("GExiv2"), e.code (), e.what ());
-+        g_set_error_literal (error, g_quark_from_string ("GExiv2"), static_cast<int>(e.code()), e.what ());
-     }
- #endif
-     
-@@ -713,8 +738,8 @@ gboolean gexiv2_metadata_save_file (GExiv2Metadata *self, const gchar *path, GEr
- }
- 
- gboolean gexiv2_metadata_save_stream (GExiv2Metadata *self, ManagedStreamCallbacks* cb, GError **error) {
--    g_return_val_if_fail (GEXIV2_IS_METADATA (self), FALSE);
--    
-+    g_return_val_if_fail(GEXIV2_IS_METADATA(self), FALSE);
-+
-     try {
-         StreamIo::ptr_type stream_ptr{new StreamIo (cb)};
-         
-@@ -724,7 +749,7 @@ gboolean gexiv2_metadata_save_stream (GExiv2Metadata *self, ManagedStreamCallbac
-         return gexiv2_metadata_save_internal (self, Exiv2::ImageFactory::open (stream_ptr), error);
- #endif
-     } catch (Exiv2::Error &e) {
--        g_set_error_literal (error, g_quark_from_string ("GExiv2"), e.code (), e.what ());
-+        g_set_error_literal (error, g_quark_from_string ("GExiv2"), static_cast<int>(e.code()), e.what ());
-     }
-     
-     return FALSE;
-@@ -761,7 +786,7 @@ gboolean gexiv2_metadata_try_has_tag(GExiv2Metadata* self, const gchar* tag, GEr
- 
-     // Invalid "familyName"
-     Exiv2::Error e(Exiv2::ErrorCode::kerInvalidKey, tag);
--    g_set_error_literal(error, g_quark_from_string("GExiv2"), e.code(), e.what());
-+    g_set_error_literal(error, g_quark_from_string("GExiv2"), static_cast<int>(e.code()), e.what());
- 
-     return FALSE;
- }
-@@ -797,7 +822,7 @@ gboolean gexiv2_metadata_try_clear_tag(GExiv2Metadata* self, const gchar* tag, G
- 
-     // Invalid "familyName"
-     Exiv2::Error e(Exiv2::ErrorCode::kerInvalidKey, tag);
--    g_set_error_literal(error, g_quark_from_string("GExiv2"), e.code(), e.what());
-+    g_set_error_literal(error, g_quark_from_string("GExiv2"), static_cast<int>(e.code()), e.what());
- 
-     return FALSE;
- }
-@@ -954,7 +979,7 @@ void gexiv2_metadata_try_set_orientation(GExiv2Metadata* self, GExiv2Orientation
-         gexiv2_metadata_clear_exif_tag(self, "Exif.MinoltaCs7D.Rotation");
-         gexiv2_metadata_clear_exif_tag(self, "Exif.MinoltaCs5D.Rotation");
-     } catch (Exiv2::Error& e) {
--        g_set_error_literal(error, g_quark_from_string("GExiv2"), e.code(), e.what());
-+        g_set_error_literal(error, g_quark_from_string("GExiv2"), static_cast<int>(e.code()), e.what());
-     }
- }
- 
-@@ -1075,7 +1100,7 @@ void gexiv2_metadata_try_set_metadata_pixel_width(GExiv2Metadata* self, gint wid
-         xmp_data["Xmp.tiff.ImageWidth"] = static_cast<uint32_t>(width);
-         xmp_data["Xmp.exif.PixelXDimension"] = static_cast<uint32_t>(width);
-     } catch (Exiv2::Error& e) {
--        g_set_error_literal(error, g_quark_from_string("GExiv2"), e.code(), e.what());
-+        g_set_error_literal(error, g_quark_from_string("GExiv2"), static_cast<int>(e.code()), e.what());
-     }
- }
- 
-@@ -1104,7 +1129,7 @@ void gexiv2_metadata_try_set_metadata_pixel_height(GExiv2Metadata* self, gint he
-         xmp_data["Xmp.tiff.ImageLength"] = static_cast<uint32_t>(height);
-         xmp_data["Xmp.exif.PixelYDimension"] = static_cast<uint32_t>(height);
-     } catch (Exiv2::Error& e) {
--        g_set_error_literal(error, g_quark_from_string("GExiv2"), e.code(), e.what());
-+        g_set_error_literal(error, g_quark_from_string("GExiv2"), static_cast<int>(e.code()), e.what());
-     }
- }
- 
-@@ -1226,7 +1251,7 @@ void gexiv2_metadata_try_set_comment(GExiv2Metadata* self, const gchar* comment,
-         /* Do not need to write to acdsee properties, just read from them */
-         // xmp_data ["Xmp.acdsee.notes"] = comment;
-     } catch (Exiv2::Error& e) {
--        g_set_error_literal(error, g_quark_from_string("GExiv2"), e.code(), e.what());
-+        g_set_error_literal(error, g_quark_from_string("GExiv2"), static_cast<int>(e.code()), e.what());
-     }
- }
- 
-@@ -1273,7 +1298,7 @@ gchar* gexiv2_metadata_try_get_tag_string (GExiv2Metadata *self, const gchar* ta
- 
-     // Invalid "familyName"
-     Exiv2::Error e(Exiv2::ErrorCode::kerInvalidKey, tag);
--    g_set_error_literal(error, g_quark_from_string("GExiv2"), e.code(), e.what());
-+    g_set_error_literal(error, g_quark_from_string("GExiv2"), static_cast<int>(e.code()), e.what());
- 
-     return nullptr;
- }
-@@ -1295,7 +1320,7 @@ gboolean gexiv2_metadata_try_set_tag_string (GExiv2Metadata *self, const gchar*
- 
-     // Invalid "familyName"
-     Exiv2::Error e(Exiv2::ErrorCode::kerInvalidKey, tag);
--    g_set_error_literal(error, g_quark_from_string("GExiv2"), e.code(), e.what());
-+    g_set_error_literal(error, g_quark_from_string("GExiv2"), static_cast<int>(e.code()), e.what());
- 
-     return FALSE;
- }
-@@ -1353,7 +1378,7 @@ gchar* gexiv2_metadata_try_get_tag_interpreted_string (GExiv2Metadata *self, con
- 
-     // Invalid "familyName"
-     Exiv2::Error e(Exiv2::ErrorCode::kerInvalidKey, tag);
--    g_set_error_literal(error, g_quark_from_string("GExiv2"), e.code(), e.what());
-+    g_set_error_literal(error, g_quark_from_string("GExiv2"), static_cast<int>(e.code()), e.what());
- 
-     return nullptr;
- }
-@@ -1393,7 +1418,7 @@ gchar** gexiv2_metadata_try_get_tag_multiple(GExiv2Metadata *self, const gchar*
- 
-     // Invalid "familyName"
-     Exiv2::Error e(Exiv2::ErrorCode::kerInvalidKey, tag);
--    g_set_error_literal(error, g_quark_from_string("GExiv2"), e.code(), e.what());
-+    g_set_error_literal(error, g_quark_from_string("GExiv2"), static_cast<int>(e.code()), e.what());
- 
-     return nullptr;
- }
-@@ -1416,7 +1441,7 @@ gboolean gexiv2_metadata_try_set_tag_multiple(GExiv2Metadata *self, const gchar*
- 
-     // Invalid "familyName"
-     Exiv2::Error e(Exiv2::ErrorCode::kerInvalidKey, tag);
--    g_set_error_literal(error, g_quark_from_string("GExiv2"), e.code(), e.what());
-+    g_set_error_literal(error, g_quark_from_string("GExiv2"), static_cast<int>(e.code()), e.what());
- 
-     return FALSE;
- }
-@@ -1459,7 +1484,7 @@ gchar** gexiv2_metadata_get_tag_multiple(GExiv2Metadata* self, const gchar* tag)
- 
-     // Invalid "familyName"
-     Exiv2::Error e(Exiv2::ErrorCode::kerInvalidKey, tag);
--    g_set_error_literal(&error, g_quark_from_string("GExiv2"), e.code(), e.what());
-+    g_set_error_literal(&error, g_quark_from_string("GExiv2"), static_cast<int>(e.code()), e.what());
-     g_warning("%s", error->message);
-     g_clear_error(&error);
- 
-@@ -1499,7 +1524,7 @@ glong gexiv2_metadata_try_get_tag_long(GExiv2Metadata *self, const gchar* tag, G
- 
-     // Invalid "familyName"
-     Exiv2::Error e(Exiv2::ErrorCode::kerInvalidKey, tag);
--    g_set_error_literal(error, g_quark_from_string("GExiv2"), e.code(), e.what());
-+    g_set_error_literal(error, g_quark_from_string("GExiv2"), static_cast<int>(e.code()), e.what());
- 
-     return 0;
- }
-@@ -1536,7 +1561,7 @@ gboolean gexiv2_metadata_try_set_tag_long(GExiv2Metadata *self, const gchar* tag
- 
-     // Invalid "familyName"
-     Exiv2::Error e(Exiv2::ErrorCode::kerInvalidKey, tag);
--    g_set_error_literal(error, g_quark_from_string("GExiv2"), e.code(), e.what());
-+    g_set_error_literal(error, g_quark_from_string("GExiv2"), static_cast<int>(e.code()), e.what());
- 
-     return FALSE;
- }
-@@ -1691,6 +1716,12 @@ gboolean gexiv2_metadata_get_exif_thumbnail (GExiv2Metadata *self, guint8** buff
-     g_return_val_if_fail(self->priv->image.get() != nullptr, FALSE);
- 
-     Exiv2::ExifThumb thumb = Exiv2::ExifThumb(self->priv->image->exifData());
-+#ifdef EXIV2_DATABUF_HAS_PRIVATE_PDATA
-+    auto buf = thumb.copy();
-+    *buffer = reinterpret_cast<guint8*>(g_malloc(buf.size()));
-+    std::copy(buf.begin(), buf.end(), *buffer);
-+    *size = buf.size();
-+#else
-     Exiv2::DataBuf data = thumb.copy();
-     if (data.pData_ == nullptr)
-         return FALSE;
-@@ -1698,6 +1729,7 @@ gboolean gexiv2_metadata_get_exif_thumbnail (GExiv2Metadata *self, guint8** buff
-     *buffer = (guint8*) g_malloc(data.size_);
-     memcpy(*buffer, data.pData_, data.size_);
-     *size = data.size_;
-+#endif
- 
-     return TRUE;
- }
-@@ -1713,7 +1745,7 @@ gboolean gexiv2_metadata_set_exif_thumbnail_from_file(GExiv2Metadata* self, cons
*** 372 LINES SKIPPED ***