[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: KDE/kdebase/runtime/nepomuk/services/queryservice
From: Sebastian Trueg <sebastian () trueg ! de>
Date: 2010-09-01 15:57:27
Message-ID: 20100901155727.7C212AC871 () svn ! kde ! org
[Download RAW message or body]
SVN commit 1170607 by trueg:
* Properly delete open connections and folders on shutdown
* Do not rely on Query::isValid() when deciding if a folder was created with a Query \
object or a SPARQL string. This fixes crashes when using invalid queries.
CCMAIL: aoszkar@gmail.com
M +5 -0 folder.cpp
M +5 -0 folder.h
M +8 -3 queryservice.cpp
--- trunk/KDE/kdebase/runtime/nepomuk/services/queryservice/folder.cpp \
#1170606:1170607 @@ -32,6 +32,7 @@
Nepomuk::Query::Folder::Folder( const Query& query, QObject* parent )
: QObject( parent ),
+ m_isSparqlQueryFolder( false ),
m_query( query )
{
init();
@@ -40,6 +41,7 @@
Nepomuk::Query::Folder::Folder( const QString& query, const RequestPropertyMap& \
requestProps, QObject* parent ) : QObject( parent ),
+ m_isSparqlQueryFolder( true ),
m_sparqlQuery( query ),
m_requestProperties( requestProps )
{
@@ -75,6 +77,9 @@
Nepomuk::Query::Folder::~Folder()
{
m_searchThread->cancel();
+ // cannot use qDeleteAll since deleting a connection changes m_connections
+ while ( !m_connections.isEmpty() )
+ delete m_connections.first();
}
--- trunk/KDE/kdebase/runtime/nepomuk/services/queryservice/folder.h #1170606:1170607
@@ -56,6 +56,8 @@
Folder( const QString& sparqlQuery, const RequestPropertyMap& \
requestProps, QObject* parent = 0 ); ~Folder();
+ bool isSparqlQueryFolder() const { return m_isSparqlQueryFolder; }
+
/**
* \return A list of all cached results in the folder.
* If initial listing is not finished yet, the results found
@@ -121,6 +123,9 @@
*/
void removeConnection( FolderConnection* );
+ /// true if this query has been created with a string query rather than \
a Query object + const bool m_isSparqlQueryFolder;
+
/// if valid m_sparqlQuery and m_requestProperties are ignored
Query m_query;
--- trunk/KDE/kdebase/runtime/nepomuk/services/queryservice/queryservice.cpp \
#1170606:1170607 @@ -49,6 +49,11 @@
Nepomuk::Query::QueryService::~QueryService()
{
+ // cannot use qDeleteAll since deleting a folder changes m_openQueryFolders
+ while ( !m_openQueryFolders.isEmpty() )
+ delete m_openQueryFolders.begin().value();
+ while ( !m_openSparqlFolders.isEmpty() )
+ delete m_openSparqlFolders.begin().value();
}
@@ -135,10 +140,10 @@
void Nepomuk::Query::QueryService::slotFolderAboutToBeDeleted( Folder* folder )
{
kDebug() << folder;
- if ( folder->query().isValid() )
+ if ( folder->isSparqlQueryFolder() )
+ m_openSparqlFolders.remove( folder->sparqlQuery() );
+ else
m_openQueryFolders.remove( folder->query() );
- else
- m_openSparqlFolders.remove( folder->sparqlQuery() );
}
#include "queryservice.moc"
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic