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