[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: branches/KDE/4.2/kdelibs/kio/kio
From: David Faure <faure () kde ! org>
Date: 2009-02-18 17:18:53
Message-ID: 1234977533.087691.21659.nullmailer () svn ! kde ! org
[Download RAW message or body]
SVN commit 927974 by dfaure:
Backport a fix and a bunch of debug messages in case of asserts, to get \
more input from users hitting them. Please update and try again, and report \
the output from dolphin or konqueror (which can be in \
~/.xsession-errors)
CCBUG: 181364
M +23 -7 kdirlister.cpp
--- branches/KDE/4.2/kdelibs/kio/kio/kdirlister.cpp #927973:927974
@@ -606,6 +606,17 @@
// we don't need to emit canceled signals since we only replaced the \
job, // the listing is continuing.
+ if (!(listers.isEmpty() || killed)) {
+ kWarning() << "The unexpected happened.";
+ kWarning() << "listers=" << listers;
+ kWarning() << "job=" << job;
+ Q_FOREACH(KDirLister *kdl, listers) {
+ kDebug() << "lister" << kdl << "m_cachedItemsJob=" << \
kdl->d->m_cachedItemsJob; + }
+#ifndef NDEBUG
+ printDebug();
+#endif
+ }
Q_ASSERT( listers.isEmpty() || killed );
job = KIO::listDir( _dir, KIO::HideProgressInfo );
@@ -860,15 +871,12 @@
nameOnly &= src.directory( KUrl::IgnoreTrailingSlash | \
KUrl::AppendTrailingSlash ) ==
dst.directory( KUrl::IgnoreTrailingSlash | \
KUrl::AppendTrailingSlash );
- // Somehow this should only be called if src is a dir. But how could we \
know if it is?
- // (Note that looking into itemsInUse isn't good enough. One could \
rename a subdir in a view.)
- // DF: well, findByUrl can find subdirs too...
- if( !nameOnly ) {
+ if (!nameOnly && (!fileitem || fileitem->isDir())) {
renameDir( src, dst );
// #172945 - if the fileitem was the root item of a DirItem that \
was just removed from the cache, // then it's a dangling pointer now...
fileitem = findByUrl( 0, oldurl );
- }
+ }
// Now update the KFileItem representing that file or dir (not exclusive \
with the above!) if ( fileitem )
@@ -1016,10 +1024,18 @@
//kDebug(7004) << "new entries for " << url;
DirItem *dir = itemsInUse.value(urlStr);
- Q_ASSERT( dir );
+ if (!dir) {
+ kError(7004) << "Internal error: job is listing" << url << "but \
itemsInUse only knows about" << itemsInUse.keys(); + Q_ASSERT( dir \
); + return;
+ }
DirectoryDataHash::iterator dit = directoryData.find(urlStr);
- Q_ASSERT(dit != directoryData.end());
+ if (dit == directoryData.end()) {
+ kError(7004) << "Internal error: job is listing" << url << "but \
directoryData doesn't know about that url, only about:" << \
directoryData.keys(); + Q_ASSERT(dit != directoryData.end());
+ return;
+ }
KDirListerCacheDirectoryData& dirData = *dit;
Q_ASSERT( !dirData.listersCurrentlyListing.isEmpty() );
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic