assert in kservicetypefactory.cpp

David Faure faure at kde.org
Tue Aug 18 20:17:51 UTC 2015


On Tuesday 18 August 2015 10:45:00 Boudewijn Rempt wrote:
> if (!bus->isServiceRegistered(KDED_SERVICE_NAME)) { evaluates to false

I'm confused by the possible double negation. Do you mean isServiceRegistered returns true?
So it does see kded5 running on the current DBus session, right?

Oh. I think you found a real bug :-)
Does this patch help?

diff --git a/src/sycoca/ksycoca.cpp b/src/sycoca/ksycoca.cpp
index 7c4c3da..c203484 100644
--- a/src/sycoca/ksycoca.cpp
+++ b/src/sycoca/ksycoca.cpp
@@ -468,6 +468,7 @@ bool KSycocaPrivate::checkDatabase(BehaviorsIfNotFound ifNotFound)
             }
         } else {
             //qCDebug(SYCOCA) << "kded5 found";
+            kdedRunning = true;
             if (QStandardPaths::isTestModeEnabled()) {
                 QDBusInterface sycoca(KDED_SERVICE_NAME, KBUILDSYCOCA_PATH);
                 const QDBusReply<bool> testMode = sycoca.call(QLatin1String("isTestModeEnabled"));

The unittests have to work without kded, so they didn't catch this. Anyway I'm killing that kded
dependency as soon as I find the time.

> I might be better off porting away from kio since I cannot ship something
> that needs a running daemon or background process :-(

Well if you cannot even accept a secondary process then indeed KIO won't be an option for you.
But why such a strict requirement? This is no problem on Windows; is this about Android or iOS then?

-- 
David Faure, faure at kde.org, http://www.davidfaure.fr
Working on KDE Frameworks 5



More information about the Kde-frameworks-devel mailing list