Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package kf6-baloo for openSUSE:Factory 
checked in at 2025-08-09 19:57:27
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/kf6-baloo (Old)
 and      /work/SRC/openSUSE:Factory/.kf6-baloo.new.1085 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "kf6-baloo"

Sat Aug  9 19:57:27 2025 rev:18 rq:1298513 version:6.17.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/kf6-baloo/kf6-baloo.changes      2025-07-14 
10:48:44.837331559 +0200
+++ /work/SRC/openSUSE:Factory/.kf6-baloo.new.1085/kf6-baloo.changes    
2025-08-09 19:57:29.988436288 +0200
@@ -1,0 +2,19 @@
+Mon Aug  4 06:57:18 UTC 2025 - Christophe Marin <christo...@krop.fr>
+
+- Update to 6.17.0
+  * New feature release
+  * For more details please see:
+  * https://kde.org/announcements/frameworks/6/6.17.0
+- Changes since 6.16.0:
+  * Update dependency version to 6.17.0
+  * Fix build with clang
+  * Bump kf ecm_set_disabled_deprecation_versions.
+  * [TermGenerator] Check input text validity (kde#506187)
+  * Update clang-format CI image to suse-qt610
+  * [Extractor] Handle parent exit during batch
+  * [ExtractorProcess] Test extractor exit when parent quits
+  * [ExtractorProcess] Extend tests, align better with extractor code
+  * [ExtractorProcess] Fix deprecated implicit capture of this
+  * Update version to 6.17.0
+
+-------------------------------------------------------------------

Old:
----
  baloo-6.16.0.tar.xz
  baloo-6.16.0.tar.xz.sig

New:
----
  baloo-6.17.0.tar.xz
  baloo-6.17.0.tar.xz.sig

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ kf6-baloo.spec ++++++
--- /var/tmp/diff_new_pack.VxxVky/_old  2025-08-09 19:57:30.916474837 +0200
+++ /var/tmp/diff_new_pack.VxxVky/_new  2025-08-09 19:57:30.920475004 +0200
@@ -1,7 +1,7 @@
 #
 # spec file for package kf6-baloo
 #
-# Copyright (c) 2025 SUSE LLC
+# Copyright (c) 2025 SUSE LLC and contributors
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -19,11 +19,11 @@
 %define qt6_version 6.8.0
 
 %define rname baloo
-# Full KF6 version (e.g. 6.16.0)
+# Full KF6 version (e.g. 6.17.0)
 %{!?_kf6_version: %global _kf6_version %{version}}
 %bcond_without released
 Name:           kf6-baloo
-Version:        6.16.0
+Version:        6.17.0
 Release:        0
 Summary:        Framework for searching and managing metadata
 License:        GPL-2.0-or-later AND LGPL-2.1-or-later AND LGPL-3.0-only

++++++ baloo-6.16.0.tar.xz -> baloo-6.17.0.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/baloo-6.16.0/.gitlab-ci.yml 
new/baloo-6.17.0/.gitlab-ci.yml
--- old/baloo-6.16.0/.gitlab-ci.yml     2025-07-04 17:09:01.000000000 +0200
+++ new/baloo-6.17.0/.gitlab-ci.yml     2025-08-01 12:28:30.000000000 +0200
@@ -13,7 +13,7 @@
 # Verify changes against clang-format
 clang-format:
   stage: build
-  image: invent-registry.kde.org/sysadmin/ci-images/suse-qt68:latest
+  image: invent-registry.kde.org/sysadmin/ci-images/suse-qt610:latest
   tags:
     - Linux
   script:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/baloo-6.16.0/CMakeLists.txt 
new/baloo-6.17.0/CMakeLists.txt
--- old/baloo-6.16.0/CMakeLists.txt     2025-07-04 17:09:01.000000000 +0200
+++ new/baloo-6.17.0/CMakeLists.txt     2025-08-01 12:28:30.000000000 +0200
@@ -1,8 +1,8 @@
 # set minimum version requirements
 cmake_minimum_required(VERSION 3.16)
 set(REQUIRED_QT_VERSION 6.7.0)
-set(KF_VERSION "6.16.0") # handled by release scripts
-set(KF_DEP_VERSION "6.16.0") # handled by release scripts
+set(KF_VERSION "6.17.0") # handled by release scripts
+set(KF_DEP_VERSION "6.17.0") # handled by release scripts
 
 # set up project
 project(Baloo VERSION ${KF_VERSION})
@@ -79,7 +79,7 @@
 # compiler flags and build system
 ecm_set_disabled_deprecation_versions(
     QT 6.9.0
-    KF 6.13.0
+    KF 6.16.0
 )
 
 find_package(Inotify)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/baloo-6.16.0/autotests/unit/engine/termgeneratortest.cpp 
new/baloo-6.17.0/autotests/unit/engine/termgeneratortest.cpp
--- old/baloo-6.16.0/autotests/unit/engine/termgeneratortest.cpp        
2025-07-04 17:09:01.000000000 +0200
+++ new/baloo-6.17.0/autotests/unit/engine/termgeneratortest.cpp        
2025-08-01 12:28:30.000000000 +0200
@@ -7,6 +7,7 @@
 
 #include "termgenerator.h"
 #include "document.h"
+#include "termgenerator_p.h"
 
 #include <QTest>
 
@@ -19,6 +20,8 @@
     Q_OBJECT
 
 private Q_SLOTS:
+    void testStringValidity();
+    void testStringValidity_data();
     void testWordBoundaries();
     void testWordBoundaries_data();
     void benchmarkWordBoundaries();
@@ -45,6 +48,41 @@
     }
 };
 
+void TermGeneratorTest::testStringValidity()
+{
+    QFETCH(QString, input);
+    QFETCH(bool, isValid);
+
+    QCOMPARE(Baloo::detail::verifySurrogates(input), isValid);
+}
+
+void TermGeneratorTest::testStringValidity_data()
+{
+    using namespace Qt::Literals::StringLiterals;
+    using namespace std::string_literals;
+
+    QTest::addColumn<QString>("input");
+    QTest::addColumn<bool>("isValid");
+
+    // clang-format off
+    QTest::newRow("empty")              << QString() << true;
+    QTest::newRow("ASCII characters")   << u" !\"#$%&'()*+,-./ 
0123456789:;<=>? @ABCDEFGHIJKLMNO PQRSTUVWXYZ[\\]^_ `abcdefghijklmno 
pqrstuvwxyz{|}~"_s << true;
+    QTest::newRow("BMP 0 plane")        << u"ÄÖÜäöüßáàâ€"_s << true;
+
+    static_assert(QStringView(u"🧸").size() == 2);       // UTF-16 0xD83E 0xDDF8
+    QTest::newRow("SMP 1 symbol (1)")   << u"Teddy Bear 🧸"_s << true;
+    QTest::newRow("SMP 1 symbol (2)")   << QString(std::array<QChar, 4>{u' ', 
QChar{0xD83E}, QChar{0xDDF8}, u' '}) << true;
+    QTest::newRow("SMP 1 symbol (3)")   << QString(std::array<QChar, 4>{u' ', 
u' ', QChar{0xD83E}, QChar{0xDDF8}}) << true;
+    QTest::newRow("Bad Surrogate pair") << QString(std::array<QChar, 
2>{QChar{0xDDF8}, QChar{0xD83E}}) << false;
+    QTest::newRow("High Surrogate (1)") << QString(std::array<QChar, 
1>{QChar{0xD83E}}) << false;
+    QTest::newRow("High Surrogate (2)") << QString(std::array<QChar, 2>{u' ', 
QChar{0xD83E}}) << false;
+    QTest::newRow("High Surrogate (3)") << QString(std::array<QChar, 4>{u' ', 
QChar{0xD83E}, u' ', u' '}) << false;
+    QTest::newRow("Low Surrogate (1)")  << QString(std::array<QChar, 
1>{QChar{0xDDF8}}) << false;
+    QTest::newRow("Low Surrogate (2)")  << QString(std::array<QChar, 2>{u' ', 
QChar{0xDDF8}}) << false;
+    QTest::newRow("Low Surrogate (3)")  << QString(std::array<QChar, 4>{u' ', 
QChar{0xDDF8}, u' ', u' '}) << false;
+    // clang-format on
+}
+
 void TermGeneratorTest::testWordBoundaries()
 {
     QFETCH(QString, input);
@@ -79,6 +117,11 @@
                                       << QList<QByteArray>{"como", "esta", 
"kug"};
     QTest::newRow("Mail address")     << u"m...@vhanda.in"_s
                                       << QList<QByteArray>{"in", "me", 
"vhanda"};
+    QTest::newRow("Teddy symbol")     << u"Teddy Bear 🧸"_s
+                                      << QList<QByteArray>{"bear", "teddy", 
"🧸"};
+    QTest::newRow("High Surrogate")   << QString(std::array<QChar, 4>{u' ', 
QChar{0xD83E}, u' ', u' '})
+                                      << QList<QByteArray>();
+
     // clang-format on
 }
 } // namespace <anonymous>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/baloo-6.16.0/autotests/unit/file/extractorprocess_fake.cpp 
new/baloo-6.17.0/autotests/unit/file/extractorprocess_fake.cpp
--- old/baloo-6.16.0/autotests/unit/file/extractorprocess_fake.cpp      
2025-07-04 17:09:01.000000000 +0200
+++ new/baloo-6.17.0/autotests/unit/file/extractorprocess_fake.cpp      
2025-08-01 12:28:30.000000000 +0200
@@ -18,6 +18,76 @@
 #include <sys/resource.h>
 #include <unistd.h> //for STDIN_FILENO
 
+struct Context {
+    using WorkerPipe = Baloo::Private::WorkerPipe;
+    Context();
+
+    void processOne();
+
+    QSocketNotifier notifier;
+    QFile input;
+    QFile output;
+    WorkerPipe worker;
+    QVector<quint64> pendingIds;
+};
+
+Context::Context()
+    : notifier(STDIN_FILENO, QSocketNotifier::Read)
+    , worker(&input, &output)
+{
+    input.open(STDIN_FILENO, QIODevice::ReadOnly | QIODevice::Unbuffered);
+    output.open(STDOUT_FILENO, QIODevice::WriteOnly | QIODevice::Unbuffered);
+
+    QObject::connect(&notifier, //
+                     &QSocketNotifier::activated,
+                     &worker,
+                     &WorkerPipe::processIdData);
+
+    QObject::connect(&worker, //
+                     &WorkerPipe::newDocumentIds,
+                     [this](const QVector<quint64> &ids) {
+                         qCInfo(BALOO) << "Processing " << ids << " ...";
+                         pendingIds = ids;
+                         QTimer::singleShot(0, [this]() {
+                             processOne();
+                         });
+                     });
+
+    QObject::connect(&worker, &WorkerPipe::inputEnd, &QCoreApplication::quit);
+}
+
+void Context::processOne()
+{
+    if (pendingIds.empty()) {
+        worker.batchFinished();
+        qCInfo(BALOO) << "Processing done";
+        return;
+    }
+
+    auto id = pendingIds.takeFirst();
+    worker.urlStarted(QString::number(id));
+
+    if (id == 0) {
+        raise(SIGSEGV);
+    } else if (id == 1) {
+        exit(1);
+    } else if (id == 2) {
+        exit(2);
+    } else if (id < 100) {
+        worker.urlFailed(QString::number(id));
+    } else if (id < 200) {
+        worker.urlFinished(QString::number(id));
+    } else {
+        worker.urlFinished(QString::number(id));
+        qCInfo(BALOO) << "... waiting for event ...";
+        return;
+    }
+
+    QTimer::singleShot(0, [this]() {
+        processOne();
+    });
+}
+
 int main(int argc, char* argv[])
 {
     using Baloo::Private::WorkerPipe;
@@ -29,42 +99,7 @@
     KCrash::setDrKonqiEnabled(false);
     QCoreApplication app(argc, argv);
 
-    QFile input;
-    input.open(STDIN_FILENO, QIODevice::ReadOnly | QIODevice::Unbuffered);
-    QSocketNotifier inputNotifier(STDIN_FILENO, QSocketNotifier::Read);
-
-    QFile output;
-    output.open(STDOUT_FILENO, QIODevice::WriteOnly | QIODevice::Unbuffered);
-
-    WorkerPipe worker(&input, &output);
-    QObject::connect(&inputNotifier, &QSocketNotifier::activated,
-                     &worker, &WorkerPipe::processIdData);
-
-    QObject::connect(&worker, &WorkerPipe::inputEnd, &QCoreApplication::quit);
-    QObject::connect(&worker, &WorkerPipe::newDocumentIds,
-        [&worker](const QVector<quint64>& ids) {
-            QTimer::singleShot(0, [&worker, ids]() {
-                qCInfo(BALOO) << "Processing ...";
-
-                for(auto id : ids) {
-                    worker.urlStarted(QString::number(id));
-
-                   if (id == 0) {
-                     raise(SIGSEGV);
-                   } else if (id == 1) {
-                     exit(1);
-                   } else if (id == 2) {
-                     exit(2);
-                   } else if (id < 100) {
-                        worker.urlFailed(QString::number(id));
-                   } else {
-                        worker.urlFinished(QString::number(id));
-                   }
-                }
-                worker.batchFinished();
-                qCInfo(BALOO) << "Processing done";
-            });
-        });
+    Context context;
 
     return app.exec();
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/baloo-6.16.0/autotests/unit/file/extractorprocesstest.cpp 
new/baloo-6.17.0/autotests/unit/file/extractorprocesstest.cpp
--- old/baloo-6.16.0/autotests/unit/file/extractorprocesstest.cpp       
2025-07-04 17:09:01.000000000 +0200
+++ new/baloo-6.17.0/autotests/unit/file/extractorprocesstest.cpp       
2025-08-01 12:28:30.000000000 +0200
@@ -35,8 +35,10 @@
     void initTestCase();
 
     void testSignals();
-    void testSignals2();
+    void testFailedSignal();
     void testExit();
+    void testExit_data();
+    void testParentExit();
 
 private:
     QString m_workerPath;
@@ -62,7 +64,7 @@
     QCOMPARE(spyF.size(), 4);
 }
 
-void ExtractorProcessTest::testSignals2()
+void ExtractorProcessTest::testFailedSignal()
 {
     Baloo::ExtractorProcess extractor{m_workerPath};
     QSignalSpy spyS(&extractor, &ExtractorProcess::startedIndexingFile);
@@ -73,19 +75,54 @@
     QVERIFY(spyD.wait());
     QCOMPARE(spyS.size(), 2);
     QCOMPARE(spyF.size(), 2);
+    QCOMPARE(spyF.at(0).at(0).toString(), QStringLiteral("123"));
+    QCOMPARE(spyF.at(0).at(1).toBool(), true); // success
+    QCOMPARE(spyF.at(1).at(0).toString(), QStringLiteral("23"));
+    QCOMPARE(spyF.at(1).at(1).toBool(), false); // failed
 }
 
 void ExtractorProcessTest::testExit()
 {
+    QFETCH(quint64, exitCode);
+
     Baloo::ExtractorProcess extractor{m_workerPath};
     QSignalSpy spyS(&extractor, &ExtractorProcess::startedIndexingFile);
     QSignalSpy spyF(&extractor, &ExtractorProcess::finishedIndexingFile);
     QSignalSpy spyD(&extractor, &ExtractorProcess::done);
     QSignalSpy spyX(&extractor, &ExtractorProcess::failed);
 
-    extractor.index({123, 0, 23});
+    extractor.index({121});
+    QVERIFY(spyD.wait());
+
+    extractor.index({123, exitCode, 23});
     QVERIFY(spyX.wait());
-    QCOMPARE(spyS.size(), 2);
+    QCOMPARE(spyS.size(), 3);
+    QCOMPARE(spyF.size(), 2);
+    QCOMPARE(spyD.size(), 1);
+    QCOMPARE(spyS.at(0).at(0).toString(), QStringLiteral("121"));
+    QCOMPARE(spyS.at(1).at(0).toString(), QStringLiteral("123"));
+    QCOMPARE(spyS.at(2).at(0).toString(), QString::number(exitCode));
+}
+
+void ExtractorProcessTest::testExit_data()
+{
+    QTest::addColumn<quint64>("exitCode");
+
+    QTest::newRow("Crash") << quint64(0);
+    QTest::newRow("DB error") << quint64(1);
+}
+
+void ExtractorProcessTest::testParentExit()
+{
+    auto extractor = std::make_unique<Baloo::ExtractorProcess>(m_workerPath);
+
+    QSignalSpy spyF(extractor.get(), &ExtractorProcess::finishedIndexingFile);
+    QSignalSpy spyD(extractor.get(), &ExtractorProcess::done);
+
+    extractor->index({223});
+    QVERIFY(spyF.wait());
+
+    extractor = nullptr;
     QCOMPARE(spyF.size(), 1);
     QCOMPARE(spyD.size(), 0);
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/baloo-6.16.0/po/ar/baloo_file6.po 
new/baloo-6.17.0/po/ar/baloo_file6.po
--- old/baloo-6.16.0/po/ar/baloo_file6.po       2025-07-04 17:09:01.000000000 
+0200
+++ new/baloo-6.17.0/po/ar/baloo_file6.po       2025-08-01 12:28:30.000000000 
+0200
@@ -15,7 +15,7 @@
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 "
-"&& n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n"
+"&& n%100<=10 ? 3 : n%100>=11 ? 4 : 5;\n"
 
 #, kde-format
 msgctxt "NAME OF TRANSLATORS"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/baloo-6.16.0/po/ar/baloo_file_extractor6.po 
new/baloo-6.17.0/po/ar/baloo_file_extractor6.po
--- old/baloo-6.16.0/po/ar/baloo_file_extractor6.po     2025-07-04 
17:09:01.000000000 +0200
+++ new/baloo-6.17.0/po/ar/baloo_file_extractor6.po     2025-08-01 
12:28:30.000000000 +0200
@@ -15,7 +15,7 @@
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 "
-"&& n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n"
+"&& n%100<=10 ? 3 : n%100>=11 ? 4 : 5;\n"
 
 #, kde-format
 msgctxt "NAME OF TRANSLATORS"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/baloo-6.16.0/po/ar/balooctl6.po 
new/baloo-6.17.0/po/ar/balooctl6.po
--- old/baloo-6.16.0/po/ar/balooctl6.po 2025-07-04 17:09:01.000000000 +0200
+++ new/baloo-6.17.0/po/ar/balooctl6.po 2025-08-01 12:28:30.000000000 +0200
@@ -16,7 +16,7 @@
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 "
-"&& n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n"
+"&& n%100<=10 ? 3 : n%100>=11 ? 4 : 5;\n"
 "X-Generator: Lokalize 23.08.5\n"
 
 #, kde-format
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/baloo-6.16.0/po/ar/baloodb6.po 
new/baloo-6.17.0/po/ar/baloodb6.po
--- old/baloo-6.16.0/po/ar/baloodb6.po  2025-07-04 17:09:01.000000000 +0200
+++ new/baloo-6.17.0/po/ar/baloodb6.po  2025-08-01 12:28:30.000000000 +0200
@@ -16,7 +16,7 @@
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 "
-"&& n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n"
+"&& n%100<=10 ? 3 : n%100>=11 ? 4 : 5;\n"
 
 #, kde-format
 msgctxt "NAME OF TRANSLATORS"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/baloo-6.16.0/po/ar/balooengine6.po 
new/baloo-6.17.0/po/ar/balooengine6.po
--- old/baloo-6.16.0/po/ar/balooengine6.po      2025-07-04 17:09:01.000000000 
+0200
+++ new/baloo-6.17.0/po/ar/balooengine6.po      2025-08-01 12:28:30.000000000 
+0200
@@ -16,7 +16,7 @@
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 "
-"&& n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n"
+"&& n%100<=10 ? 3 : n%100>=11 ? 4 : 5;\n"
 
 #: experimental/databasesanitizer.cpp:259
 #, kde-format
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/baloo-6.16.0/po/ar/baloosearch6.po 
new/baloo-6.17.0/po/ar/baloosearch6.po
--- old/baloo-6.16.0/po/ar/baloosearch6.po      2025-07-04 17:09:01.000000000 
+0200
+++ new/baloo-6.17.0/po/ar/baloosearch6.po      2025-08-01 12:28:30.000000000 
+0200
@@ -17,7 +17,7 @@
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 "
-"&& n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n"
+"&& n%100<=10 ? 3 : n%100>=11 ? 4 : 5;\n"
 
 #, kde-format
 msgctxt "NAME OF TRANSLATORS"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/baloo-6.16.0/po/ar/balooshow6.po 
new/baloo-6.17.0/po/ar/balooshow6.po
--- old/baloo-6.16.0/po/ar/balooshow6.po        2025-07-04 17:09:01.000000000 
+0200
+++ new/baloo-6.17.0/po/ar/balooshow6.po        2025-08-01 12:28:30.000000000 
+0200
@@ -17,7 +17,7 @@
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 "
-"&& n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n"
+"&& n%100<=10 ? 3 : n%100>=11 ? 4 : 5;\n"
 
 #, kde-format
 msgctxt "NAME OF TRANSLATORS"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/baloo-6.16.0/po/ar/kio6_baloosearch.po 
new/baloo-6.17.0/po/ar/kio6_baloosearch.po
--- old/baloo-6.16.0/po/ar/kio6_baloosearch.po  2025-07-04 17:09:01.000000000 
+0200
+++ new/baloo-6.17.0/po/ar/kio6_baloosearch.po  2025-08-01 12:28:30.000000000 
+0200
@@ -16,7 +16,7 @@
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 "
-"&& n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n"
+"&& n%100<=10 ? 3 : n%100>=11 ? 4 : 5;\n"
 
 #: kio_search.cpp:48
 #, kde-format
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/baloo-6.16.0/po/ar/kio6_tags.po 
new/baloo-6.17.0/po/ar/kio6_tags.po
--- old/baloo-6.16.0/po/ar/kio6_tags.po 2025-07-04 17:09:01.000000000 +0200
+++ new/baloo-6.17.0/po/ar/kio6_tags.po 2025-08-01 12:28:30.000000000 +0200
@@ -16,7 +16,7 @@
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 "
-"&& n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n"
+"&& n%100<=10 ? 3 : n%100>=11 ? 4 : 5;\n"
 
 #: kio_tags.cpp:110 kio_tags.cpp:166
 #, kde-format
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/baloo-6.16.0/po/ar/kio6_timeline.po 
new/baloo-6.17.0/po/ar/kio6_timeline.po
--- old/baloo-6.16.0/po/ar/kio6_timeline.po     2025-07-04 17:09:01.000000000 
+0200
+++ new/baloo-6.17.0/po/ar/kio6_timeline.po     2025-08-01 12:28:30.000000000 
+0200
@@ -16,7 +16,7 @@
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 "
-"&& n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n"
+"&& n%100<=10 ? 3 : n%100>=11 ? 4 : 5;\n"
 
 #: kio_timeline.cpp:77
 #, kde-format
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/baloo-6.16.0/po/ka/balooctl6.po 
new/baloo-6.17.0/po/ka/balooctl6.po
--- old/baloo-6.16.0/po/ka/balooctl6.po 2025-07-04 17:09:01.000000000 +0200
+++ new/baloo-6.17.0/po/ka/balooctl6.po 2025-08-01 12:28:30.000000000 +0200
@@ -315,7 +315,7 @@
 "Only applies to \"%4\""
 msgstr ""
 "გამოტანის ფორმატი <%1|%2|%3>.\n"
-"ნაგულისხმები ფორმატია \"%1\".\n"
+"ნაგულისხმევი ფორმატია \"%1\".\n"
 "მხოლოდ ეხება \"%4\""
 
 #: main.cpp:83
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/baloo-6.16.0/po/ka/baloodb6.po 
new/baloo-6.17.0/po/ka/baloodb6.po
--- old/baloo-6.16.0/po/ka/baloodb6.po  2025-07-04 17:09:01.000000000 +0200
+++ new/baloo-6.17.0/po/ka/baloodb6.po  2025-08-01 12:28:30.000000000 +0200
@@ -40,7 +40,7 @@
 "May be given multiple times."
 msgstr ""
 "მოწყობილობის ID-ით გაფილტვრა.\n"
-"0 (ნაგულისხმები) არაფერს გაფილტრავს და ყველაფერი ნაჩვენები იქნება.\n"
+"0 (ნაგულისხმევი) არაფერს გაფილტრავს და ყველაფერი ნაჩვენები იქნება.\n"
 "დადებითი რიცხვები შეიცავენ ფილტრებს, რომლებიც მხოლოდ მითითებულ მოწყობილობის "
 "ID-ებს აჩვენებენ.\n"
 "უარყოფითი რიცხვები კი გამორიცხავენ მათ. გამოტანილი იქნება ყველაფერი, "
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/baloo-6.16.0/src/engine/termgenerator.cpp 
new/baloo-6.17.0/src/engine/termgenerator.cpp
--- old/baloo-6.16.0/src/engine/termgenerator.cpp       2025-07-04 
17:09:01.000000000 +0200
+++ new/baloo-6.17.0/src/engine/termgenerator.cpp       2025-08-01 
12:28:30.000000000 +0200
@@ -6,6 +6,7 @@
 */
 
 #include "termgenerator.h"
+#include "termgenerator_p.h"
 
 #include <QTextBoundaryFinder>
 
@@ -32,9 +33,13 @@
 
 void appendTerm(QByteArrayList &list, const QString &term)
 {
-    if (!term.isEmpty()) {
-        // Truncate the string to avoid arbitrarily long terms
-        list << QStringView(term).left(TermGenerator::maxTermSize).toUtf8();
+    if (term.isEmpty()) {
+        return;
+    }
+    // Truncate the string to avoid arbitrarily long terms
+    auto utf8 = QStringView(term).left(TermGenerator::maxTermSize).toUtf8();
+    if (!utf8.isEmpty()) {
+        list.append(utf8);
     }
 }
 
@@ -53,6 +58,10 @@
 
 QByteArrayList TermGenerator::termList(const QString& text_)
 {
+    if (!Baloo::detail::verifySurrogates(text_)) {
+        return {};
+    }
+
     QString text(text_);
     text.replace(QLatin1Char('_'), QLatin1Char(' '));
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/baloo-6.16.0/src/engine/termgenerator_p.h 
new/baloo-6.17.0/src/engine/termgenerator_p.h
--- old/baloo-6.16.0/src/engine/termgenerator_p.h       1970-01-01 
01:00:00.000000000 +0100
+++ new/baloo-6.17.0/src/engine/termgenerator_p.h       2025-08-01 
12:28:30.000000000 +0200
@@ -0,0 +1,50 @@
+/*
+    This file is part of the KDE Baloo project.
+    SPDX-FileCopyrightText: 2025 Stefan Brüns <stefan.bru...@rwth-aachen.de>
+
+    SPDX-License-Identifier: LGPL-2.1-or-later
+*/
+
+#ifndef BALOO_TERMGENERATOR_P_H
+#define BALOO_TERMGENERATOR_P_H
+
+namespace Baloo
+{
+namespace detail
+{
+
+bool verifySurrogates(QStringView text)
+{
+    if (auto size = text.size(); size == 1) {
+        return !text.back().isSurrogate();
+    } else if (size == 0) {
+        return true;
+    }
+
+    for (qsizetype i = 0; i < text.size() - 1; i++) {
+        const QChar &c = text.at(i);
+        if (!c.isSurrogate()) {
+            continue;
+        }
+        if (c.isLowSurrogate()) {
+            return false;
+        } else if (!text.at(i + 1).isLowSurrogate()) {
+            return false;
+        } else {
+            i++;
+        }
+    }
+    if (!text.back().isSurrogate()) {
+        return true;
+    } else if (text.back().isHighSurrogate()) {
+        return false;
+    } else {
+        auto back2 = text.at(text.size() - 2);
+        return back2.isHighSurrogate();
+    }
+}
+
+} // namespace detail
+} // namespace Baloo
+
+#endif // BALOO_TERMGENERATOR_P_H
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/baloo-6.16.0/src/file/extractor/app.cpp 
new/baloo-6.17.0/src/file/extractor/app.cpp
--- old/baloo-6.16.0/src/file/extractor/app.cpp 2025-07-04 17:09:01.000000000 
+0200
+++ new/baloo-6.17.0/src/file/extractor/app.cpp 2025-08-01 12:28:30.000000000 
+0200
@@ -81,18 +81,12 @@
         m_idleTime->catchNextResumeEvent();
     }
 
-    QTimer::singleShot((m_isBusy ? 500 : 0), this, [this, db] () {
+    QTimer::singleShot((m_isBusy ? 500 : 0), this, [this, db]() {
         // FIXME: The transaction is open for way too long. We should just 
open it for when we're
         //        committing the data not during the extraction.
         m_tr = std::make_unique<Transaction>(db, Transaction::ReadWrite);
         processNextFile();
     });
-
-    /**
-     * A Single Batch seems to be triggering the SocketNotifier more than once
-     * so we disable it till the batch is done.
-     */
-    m_notifyNewData.setEnabled(false);
 }
 
 void App::processNextFile()
@@ -119,8 +113,6 @@
         }
         m_tr.reset();
 
-        // Enable the SocketNotifier for the next batch
-        m_notifyNewData.setEnabled(true);
         m_workerPipe.batchFinished();
     }
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/baloo-6.16.0/src/file/extractorprocess.cpp 
new/baloo-6.17.0/src/file/extractorprocess.cpp
--- old/baloo-6.16.0/src/file/extractorprocess.cpp      2025-07-04 
17:09:01.000000000 +0200
+++ new/baloo-6.17.0/src/file/extractorprocess.cpp      2025-08-01 
12:28:30.000000000 +0200
@@ -31,7 +31,7 @@
         Q_EMIT done();
     });
 
-    connect(&m_extractorProcess, &QProcess::finished, [=](int exitCode, 
QProcess::ExitStatus exitStatus) {
+    connect(&m_extractorProcess, &QProcess::finished, [this](int exitCode, 
QProcess::ExitStatus exitStatus) {
         if (exitStatus == QProcess::CrashExit) {
             qCWarning(BALOO) << "Extractor crashed";
             Q_EMIT failed();

Reply via email to