[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