diff -Naur kdelibs-3.5.8.orig/kio/kio/kdirlister.cpp kdelibs-3.5.8/kio/kio/kdirlister.cpp
--- kdelibs-3.5.8.orig/kio/kio/kdirlister.cpp	2007-10-08 16:01:42.000000000 +0200
+++ kdelibs-3.5.8/kio/kio/kdirlister.cpp	2007-11-20 11:55:05.000000000 +0100
@@ -447,8 +447,11 @@
   url.adjustPath( -1 );
   QString urlStr = url.url();
   QPtrList<KDirLister> *holders = urlsCurrentlyHeld[urlStr];
-  Q_ASSERT( holders );
-  holders->removeRef( lister );
+  //Q_ASSERT( holders );
+  if ( holders )
+  {
+    holders->removeRef( lister );
+  }
 
   // remove the dir from lister->d->lstDirs so that it doesn't contain things
   // that itemsInUse doesn't. When emitting the canceled signals lstDirs must
@@ -457,9 +460,8 @@
   lister->d->lstDirs.remove( lister->d->lstDirs.find( url ) );
 
   DirItem *item = itemsInUse[urlStr];
-  Q_ASSERT( item );
 
-  if ( holders->isEmpty() )
+  if ( holders && holders->isEmpty() )
   {
     urlsCurrentlyHeld.remove( urlStr ); // this deletes the (empty) holders list
     if ( !urlsCurrentlyListed[urlStr] )
@@ -486,7 +488,7 @@
       if ( notify )
         emit lister->clear( url );
 
-      if ( item->complete )
+      if ( item && item->complete )
       {
         kdDebug(7004) << k_funcinfo << lister << " item moved into cache: " << url << endl;
         itemsCached.insert( urlStr, item ); // TODO: may return false!!
