[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