summaryrefslogtreecommitdiff
path: root/extra/nepomuk-core/fix-recursive-indexing.patch
diff options
context:
space:
mode:
Diffstat (limited to 'extra/nepomuk-core/fix-recursive-indexing.patch')
-rw-r--r--extra/nepomuk-core/fix-recursive-indexing.patch103
1 files changed, 103 insertions, 0 deletions
diff --git a/extra/nepomuk-core/fix-recursive-indexing.patch b/extra/nepomuk-core/fix-recursive-indexing.patch
new file mode 100644
index 000000000..c4db4e414
--- /dev/null
+++ b/extra/nepomuk-core/fix-recursive-indexing.patch
@@ -0,0 +1,103 @@
+From: Vishesh Handa <me@vhanda.in>
+Date: Fri, 08 Feb 2013 20:58:33 +0000
+Subject: Revert "BasicIndexingQueue: Use stacks instead of queues"
+X-Git-Url: http://quickgit.kde.org/?p=nepomuk-core.git&a=commitdiff&h=b651f9231ac30072418bb06d602951f0f05da22c
+---
+Revert "BasicIndexingQueue: Use stacks instead of queues"
+
+This reverts commit 2f33141aa6716550e38b11ec9a0b000dd74eea79.
+
+The commit breaks recursive indexing. Doh!
+
+BUG: 314559
+---
+
+
+--- a/services/fileindexer/basicindexingqueue.cpp
++++ b/services/fileindexer/basicindexingqueue.cpp
+@@ -54,14 +54,14 @@
+
+ void BasicIndexingQueue::clear(const QString& path)
+ {
+- QMutableVectorIterator< QPair<QString, UpdateDirFlags> > it( m_paths );
++ QMutableListIterator< QPair<QString, UpdateDirFlags> > it( m_paths );
+ while( it.hasNext() ) {
+ it.next();
+ if( it.value().first.startsWith( path ) )
+ it.remove();
+ }
+
+- QMutableVectorIterator< QPair<QDirIterator*, UpdateDirFlags> > iter( m_iterators );
++ QMutableListIterator< QPair<QDirIterator*, UpdateDirFlags> > iter( m_iterators );
+ while( iter.hasNext() ) {
+ QDirIterator* dirIter = iter.next().first;
+
+@@ -100,7 +100,7 @@
+ {
+ kDebug() << path;
+ bool wasEmpty = m_paths.empty();
+- m_paths.push( qMakePair( path, flags ) );
++ m_paths.enqueue( qMakePair( path, flags ) );
+ callForNextIteration();
+
+ if( wasEmpty )
+@@ -120,12 +120,12 @@
+ processingFile = process( dirIt->next(), pair.second );
+ }
+ else {
+- delete m_iterators.pop().first;
++ delete m_iterators.dequeue().first;
+ }
+ }
+
+ else if( !m_paths.isEmpty() ) {
+- QPair< QString, UpdateDirFlags > pair = m_paths.pop();
++ QPair< QString, UpdateDirFlags > pair = m_paths.dequeue();
+ processingFile = process( pair.first, pair.second );
+ }
+
+@@ -161,7 +161,7 @@
+ QDir::Filters dirFilter = QDir::NoDotAndDotDot|QDir::Readable|QDir::Files|QDir::Dirs;
+
+ QPair<QDirIterator*, UpdateDirFlags> pair = qMakePair( new QDirIterator( path, dirFilter ), flags );
+- m_iterators.push( pair );
++ m_iterators.enqueue( pair );
+ }
+ }
+ else if( info.isFile() && (forced || indexingRequired) ) {
+@@ -259,12 +259,6 @@
+
+ emit endIndexingFile( url );
+
+- // Give back the memory
+- if( m_paths.isEmpty() )
+- m_paths.clear();
+- if( m_iterators.isEmpty() )
+- m_iterators.clear();
+-
+ // Continue the queue
+ finishIteration();
+ }
+
+--- a/services/fileindexer/basicindexingqueue.h
++++ b/services/fileindexer/basicindexingqueue.h
+@@ -23,7 +23,6 @@
+
+ #include "indexingqueue.h"
+ #include <KJob>
+-#include <QtCore/QStack>
+
+ namespace Nepomuk2 {
+
+@@ -106,8 +105,8 @@
+ */
+ bool process(const QString& path, Nepomuk2::UpdateDirFlags flags);
+
+- QStack< QPair<QString, UpdateDirFlags> > m_paths;
+- QStack< QPair<QDirIterator*, UpdateDirFlags> > m_iterators;
++ QQueue< QPair<QString, UpdateDirFlags> > m_paths;
++ QQueue< QPair<QDirIterator*, UpdateDirFlags> > m_iterators;
+
+ QUrl m_currentUrl;
+ QString m_currentMimeType;
+