File 0001-Actually-initialize-libexiv2-locking.patch of Package libkexiv2

From 4b6474dbbc8a5460ca7aa0df9008ba560dd8e117 Mon Sep 17 00:00:00 2001
From: Fabian Vogt <fabian@ritter-vogt.de>
Date: Wed, 18 Feb 2026 16:58:35 +0100
Subject: [PATCH] Actually initialize libexiv2 locking

Calling it with default arguments initializes some state but doesn't make
libexiv2 thread-safe.
---
 src/kexiv2.cpp | 12 +++++++++++-
 1 file changed, 11 insertions(+), 1 deletion(-)

diff --git a/src/kexiv2.cpp b/src/kexiv2.cpp
index 5c98bd9..e0c574c 100644
--- a/src/kexiv2.cpp
+++ b/src/kexiv2.cpp
@@ -56,12 +56,22 @@ KExiv2& KExiv2::operator=(const KExiv2& metadata)
 
 static bool s_exiv2InitializationSuccessful = false;
 static std::once_flag s_exiv2Initialized;
+static std::mutex s_exiv2Mutex;
+
+static void exiv2LockFunction(void *pLockData, bool lockUnlock)
+{
+    std::mutex *mutex = reinterpret_cast<std::mutex*>(pLockData);
+    if (lockUnlock)
+        mutex->lock();
+    else
+        mutex->unlock();
+}
 
 static void initializeExiv2Internal()
 {
 #ifdef _XMP_SUPPORT_
 
-    if (!Exiv2::XmpParser::initialize())
+    if (!Exiv2::XmpParser::initialize(exiv2LockFunction, &s_exiv2Mutex))
         return;
 
     KExiv2::registerXmpNameSpace(QString::fromLatin1("http://ns.adobe.com/lightroom/1.0/"),  QString::fromLatin1("lr"));
-- 
2.52.0

openSUSE Build Service is sponsored by