[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    branches/KDE/4.4/kdebase/runtime/nepomuk/services/storage
From:       Sebastian Trueg <sebastian () trueg ! de>
Date:       2010-05-26 16:11:15
Message-ID: 20100526161115.1949CAC8C0 () svn ! kde ! org
[Download RAW message or body]

SVN commit 1130851 by trueg:

Backport: crash fix on logout

 M  +14 -6     nepomukcore.cpp  
 M  +2 -0      nepomukcore.h  


--- branches/KDE/4.4/kdebase/runtime/nepomuk/services/storage/nepomukcore.cpp #1130850:1130851
@@ -43,7 +43,6 @@
 Nepomuk::Core::~Core()
 {
     kDebug() << "Shutting down Nepomuk storage core.";
-    delete m_repository;
 }
 
 
@@ -72,17 +71,26 @@
 {
     // we only allow the one model
     if ( name == QLatin1String( s_repositoryName ) ) {
+        // we need to use createModel via ServerCore::model to ensure proper memory
+        // management. Otherwise m_repository could be deleted before all connections
+        // are down
+        return ServerCore::model( name );
+    }
+    else {
+        return 0;
+    }
+}
+
+
+Soprano::Model* Nepomuk::Core::createModel( const Soprano::BackendSettings& )
+{
         if ( !m_repository ) {
-            m_repository = new Repository( name );
+        m_repository = new Repository( QLatin1String( s_repositoryName ) );
             connect( m_repository, SIGNAL( opened( Repository*, bool ) ),
                      this, SLOT( slotRepositoryOpened( Repository*, bool ) ) );
             QTimer::singleShot( 0, m_repository, SLOT( open() ) );
         }
         return m_repository;
     }
-    else {
-        return 0;
-    }
-}
 
 #include "nepomukcore.moc"
--- branches/KDE/4.4/kdebase/runtime/nepomuk/services/storage/nepomukcore.h #1130850:1130851
@@ -58,6 +58,8 @@
         void slotRepositoryOpened( Repository* repo, bool success );
 
     private:
+        Soprano::Model* createModel( const Soprano::BackendSettings& );
+
         /// the one single "main" repository Nepomuk uses
         Repository* m_repository;
     };
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic