From e193a4e9938bd17b7ed9106d13f528f6f4a0e83e Mon Sep 17 00:00:00 2001 From: =?utf8?q?Arkadiusz=20Mi=C5=9Bkiewicz?= Date: Sun, 10 Feb 2013 07:46:22 +0100 Subject: [PATCH] - rel 2; recursive indexing fix --- kde4-nepomuk-core.spec | 4 +- nepomuk-core-recursive-indexing.patch | 102 ++++++++++++++++++++++++++ 2 files changed, 105 insertions(+), 1 deletion(-) create mode 100644 nepomuk-core-recursive-indexing.patch diff --git a/kde4-nepomuk-core.spec b/kde4-nepomuk-core.spec index 888bbe6..3a91d76 100644 --- a/kde4-nepomuk-core.spec +++ b/kde4-nepomuk-core.spec @@ -6,12 +6,13 @@ Summary: Nepomuk Core utilities and libraries Name: kde4-nepomuk-core Version: 4.10.0 -Release: 1 +Release: 2 License: LGPLv2 or LGPLv3 Group: X11/Applications URL: http://www.kde.org/ Source0: ftp://ftp.kde.org/pub/kde/%{_state}/%{version}/src/%{orgname}-%{version}.tar.xz # Source0-md5: 8f9a7ae4c7e3231227b696154edb5bc0 +Patch0: nepomuk-core-recursive-indexing.patch BuildRequires: QtCore-devel >= %{qtver} BuildRequires: acl-devel BuildRequires: attr-devel @@ -44,6 +45,7 @@ Nepomuk Core development files and libraries. %prep %setup -q -n %{orgname}-%{version} +%patch0 -p1 %build install -d build diff --git a/nepomuk-core-recursive-indexing.patch b/nepomuk-core-recursive-indexing.patch new file mode 100644 index 0000000..e7e9b72 --- /dev/null +++ b/nepomuk-core-recursive-indexing.patch @@ -0,0 +1,102 @@ +commit b651f9231ac30072418bb06d602951f0f05da22c +Author: Vishesh Handa +Date: Sat Feb 9 02:28:33 2013 +0530 + + Revert "BasicIndexingQueue: Use stacks instead of queues" + + This reverts commit 2f33141aa6716550e38b11ec9a0b000dd74eea79. + + The commit breaks recursive indexing. Doh! + + BUG: 314559 + +diff --git a/services/fileindexer/basicindexingqueue.cpp b/services/fileindexer/basicindexingqueue.cpp +index a295330..b581786 100644 +--- a/services/fileindexer/basicindexingqueue.cpp ++++ b/services/fileindexer/basicindexingqueue.cpp +@@ -54,14 +54,14 @@ void BasicIndexingQueue::clear() + + void BasicIndexingQueue::clear(const QString& path) + { +- QMutableVectorIterator< QPair > it( m_paths ); ++ QMutableListIterator< QPair > it( m_paths ); + while( it.hasNext() ) { + it.next(); + if( it.value().first.startsWith( path ) ) + it.remove(); + } + +- QMutableVectorIterator< QPair > iter( m_iterators ); ++ QMutableListIterator< QPair > iter( m_iterators ); + while( iter.hasNext() ) { + QDirIterator* dirIter = iter.next().first; + +@@ -100,7 +100,7 @@ void BasicIndexingQueue::enqueue(const QString& path, UpdateDirFlags flags) + { + 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 @@ void BasicIndexingQueue::processNextIteration() + 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 @@ bool BasicIndexingQueue::process(const QString& path, UpdateDirFlags flags) + QDir::Filters dirFilter = QDir::NoDotAndDotDot|QDir::Readable|QDir::Files|QDir::Dirs; + + QPair 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 @@ void BasicIndexingQueue::slotIndexingFinished(KJob* job) + + 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(); + } +diff --git a/services/fileindexer/basicindexingqueue.h b/services/fileindexer/basicindexingqueue.h +index 29dd9fd..5d1c190 100644 +--- a/services/fileindexer/basicindexingqueue.h ++++ b/services/fileindexer/basicindexingqueue.h +@@ -23,7 +23,6 @@ + + #include "indexingqueue.h" + #include +-#include + + namespace Nepomuk2 { + +@@ -106,8 +105,8 @@ namespace Nepomuk2 { + */ + bool process(const QString& path, Nepomuk2::UpdateDirFlags flags); + +- QStack< QPair > m_paths; +- QStack< QPair > m_iterators; ++ QQueue< QPair > m_paths; ++ QQueue< QPair > m_iterators; + + QUrl m_currentUrl; + QString m_currentMimeType; -- 2.44.0