Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
openSUSE:Evergreen:11.1
kdelibs4
patch-r889717.diff
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File patch-r889717.diff of Package kdelibs4
Subject: Fix infinite recursion and crash when the slot connected to newItems calls openUrl, like ktorrent's scanfolder plugin does From: wstephenson@suse.de Bug: kde#174920 Patch-upstream: 889717 --- kio/kio/kdirlister.cpp (revision 889716) +++ kio/kio/kdirlister.cpp (revision 889717) @@ -1889,12 +1889,13 @@ void KDirLister::emitChanges() if ( d->changes == NONE ) return; - for ( KUrl::List::Iterator it = d->lstDirs.begin(); - it != d->lstDirs.end(); ++it ) - { + const int changes = d->changes; + d->changes = NONE; // in case of recursion (testcase: enabling recursive scan in ktorrent, #174920) + + Q_FOREACH(const KUrl& dir, d->lstDirs) { KFileItemList deletedItems; - const KFileItemList* itemList = kDirListerCache->itemsForDir( *it ); + const KFileItemList* itemList = kDirListerCache->itemsForDir(dir); KFileItemList::const_iterator kit = itemList->begin(); const KFileItemList::const_iterator kend = itemList->end(); for ( ; kit != kend; ++kit ) @@ -1904,8 +1905,7 @@ void KDirLister::emitChanges() bool oldMime = true, newMime = true; - if ( d->changes & MIME_FILTER ) - { + if (changes & MIME_FILTER) { const QString mimetype = (*kit).mimetype(); oldMime = doMimeFilter( mimetype, d->oldMimeFilter ) && d->doMimeExcludeFilter( mimetype, d->oldMimeExcludeFilter ); @@ -1919,8 +1919,7 @@ void KDirLister::emitChanges() } } - if ( d->changes & DIR_ONLY_MODE ) - { + if (changes & DIR_ONLY_MODE) { // the lister switched to dirOnlyMode if ( d->dirOnlyMode ) { @@ -1937,8 +1936,7 @@ void KDirLister::emitChanges() if ( (*kit).isHidden() ) { - if ( d->changes & DOT_FILES ) - { + if (changes & DOT_FILES) { // the lister switched to dot files mode if ( d->isShowingDotFiles ) d->addNewItem( *kit ); @@ -1949,9 +1947,7 @@ void KDirLister::emitChanges() continue; } - } - else if ( d->changes & NAME_FILTER ) - { + } else if (changes & NAME_FILTER) { bool oldName = (*kit).isDir() || d->oldFilters.isEmpty() || doNameFilter( (*kit).text(), d->oldFilters ); @@ -1969,7 +1965,7 @@ void KDirLister::emitChanges() d->addNewItem( *kit ); } - if ( (d->changes & MIME_FILTER) && !oldMime && newMime ) + if ((changes & MIME_FILTER) && !oldMime && newMime) d->addNewItem( *kit ); } @@ -1981,8 +1977,6 @@ void KDirLister::emitChanges() } d->emitItems(); } - - d->changes = NONE; } void KDirLister::updateDirectory( const KUrl& _u ) Index: kio/kio/kdirlister.cpp ===================================================================
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor