[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-core-devel
Subject:    use of uninitialised fields in KDirLister
From:       Julian Seward <Julian_Seward () muraroa ! demon ! co ! uk>
Date:       2002-01-31 2:51:39
[Download RAW message or body]


KDirLister::setAutoUpdate / ::setDirOnlyMode / ::setShowingDotFiles
read uninitialised fields in KDirLister, as a result of the behavior
of KDirLister::KDirLister(bool):

(line numbers pertain to kdelibs/kio/kio/kdirlister.cpp rev 1.84)
 
   Use of uninitialised CPU condition code
      at 0x40D82F53: KDirLister::setAutoUpdate(bool) (kdirlister.cpp:1130)
      by 0x40D8224F: KDirLister::KDirLister(bool) (kdirlister.cpp:1079)
      by 0x40DBDBE9: KDirOperator::KDirOperator(const KURL &, QWidget *, const char *)
      by 0x40B039A0: KateFileSelector::KateFileSelector(KateMainWindow *,
                        KateViewManager *, QWidget *, const char *) (kat
   
   Use of uninitialised CPU condition code
      at 0x40D82FB8: KDirLister::setDirOnlyMode(bool) (kdirlister.cpp:1157)
      by 0x40D8225E: KDirLister::KDirLister(bool)
                     (/home/kdebuilder/KdeCVS/qt-copy/include/qobject.h:1080)
      by 0x40DBDBE9: KDirOperator::KDirOperator(const KURL &, QWidget *, const char *)
      by 0x40B039A0: KateFileSelector::KateFileSelector(KateMainWindow *,
                        KateViewManager *, QWidget *, const char *)
   
   Use of uninitialised CPU condition code
      at 0x40D82F90: KDirLister::setShowingDotFiles(bool) (kdirlister.cpp:1144)
      by 0x40D82270: KDirLister::KDirLister(bool)
                        (/home/kdebuilder/KdeCVS/qt-copy/include/qobject.h:208)
      by 0x40DBDBE9: KDirOperator::KDirOperator(const KURL &, QWidget *, const char *)
                        (/home/kdebuilder/KdeCVS/qt-copy/in
      by 0x40B039A0: KateFileSelector::KateFileSelector(KateMainWindow *,
                        KateViewManager *, QWidget *, const char *) (kat

This happens because KDirLister::setAutoUpdate (and setDirOnlyMode / 
setShowingDotFiles) test the stored value before updating it (why??), 
which matters when the stored value is undefined.

A simple fix is to initialise these fields in KDirLister::KDirLister(bool).  
In fact this bug is harmless, but it should be fixed anyway.  Suggested patch:


===================================================================
RCS file: /home/kde/kdelibs/kio/kio/kdirlister.cpp,v
retrieving revision 1.84
diff -u -3 -p -r1.84 kdirlister.cpp
--- kdirlister.cpp      2002/01/28 12:03:06     1.84
+++ kdirlister.cpp      2002/01/31 01:54:33
@@ -1075,6 +1075,10 @@ KDirLister::KDirLister( bool _delayedMim
   d->numJobs = 0;
   d->rootFileItem = 0;
 
+  d->autoUpdate = false;
+  d->dirOnlyMode = false;
+  d->isShowingDotFiles = false;
+
   setAutoUpdate( true );
   setDirOnlyMode( false );
   setShowingDotFiles( false );


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic