All pastes #730978 Raw Edit

Mine

public text v1 · immutable
·published 2007-10-09 18:04 UTC
rendered paste body
Index: util/klibrary.cpp
===================================================================
--- util/klibrary.cpp   (revision 722842)
+++ util/klibrary.cpp   (working copy)
@@ -20,6 +20,7 @@
 #include "klibrary.h"

 #include <QtCore/QDir>
+#include <QtCore/QPointer>

 #include <kcomponentdata.h>
 #include <kstandarddirs.h>
@@ -122,6 +123,9 @@
 {
 }

+typedef QHash<QByteArray, QPointer<KPluginFactory> > FactoryHash;
+K_GLOBAL_STATIC(FactoryHash, s_createdKde3Factories)
+
 static KPluginFactory* kde3Factory(KLibrary *lib, const QByteArray &factoryname)
 {
     QByteArray symname = "init_";
@@ -131,6 +135,13 @@
         symname += QFileInfo(lib->fileName()).fileName().split(".").first().toLatin1();
     }

+    if (s_createdKde3Factories->contains(symname)) {
+        KPluginFactory *factory = s_createdKde3Factories->value(symname);
+        if (factory) {
+            return factory;
+        }
+    }
+
     typedef KPluginFactory* (*t_func)();
     t_func func = reinterpret_cast<t_func>(lib->resolveFunction( symname ));
     if ( !func )
@@ -147,6 +158,7 @@
         kDebug(150) << "The library" << lib->fileName() << "does not offer a KDE compatible factory.";
         return 0;
     }
+    s_createdKde3Factories->insert(symname, factory);

     return factory;
 }