author | kergoth <kergoth> | 2003-01-26 22:45:27 (UTC) |
---|---|---|
committer | kergoth <kergoth> | 2003-01-26 22:45:27 (UTC) |
commit | 954ff2a858b34a8249314340f799f0a74426d59c (patch) (side-by-side diff) | |
tree | f0b738dceaec14bba0347151db4f372d25cdf8e8 | |
parent | 4ce67fbdfb5e82bbde3a8963d3e956567438689d (diff) | |
download | opie-954ff2a858b34a8249314340f799f0a74426d59c.zip opie-954ff2a858b34a8249314340f799f0a74426d59c.tar.gz opie-954ff2a858b34a8249314340f799f0a74426d59c.tar.bz2 |
Added two missing dir.exists() checks, without which a segfault occurs if m_currentDir doesnt exist.
-rw-r--r-- | libopie/ofileselector.cc | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/libopie/ofileselector.cc b/libopie/ofileselector.cc index 6a6a300..7481360 100644 --- a/libopie/ofileselector.cc +++ b/libopie/ofileselector.cc @@ -1157,143 +1157,147 @@ void OFileSelector::cdUP() { QDir dir( m_currentDir ); dir.cdUp(); if(dir.exists() ){ m_currentDir = dir.absPath(); reparse(); int count = m_location->count(); slotInsertLocationPath( m_currentDir, count); m_location->setCurrentItem( indexByString( m_location, m_currentDir)); //this wont work in all instances // FIXME } } void OFileSelector::slotHome() { cd(QDir::homeDirPath() ); } void OFileSelector::slotDoc() { cd(QPEApplication::documentDir() ); } void OFileSelector::slotNavigate( ) { } // fill the View with life void OFileSelector::reparse() { if( m_selector == NORMAL ) return; if( m_selector == EXTENDED || m_selector == EXTENDED_ALL ) m_View->clear(); else // custom view ; // currentView()->clear(); if( m_shChooser) qWarning("reparse %s", m_mimeCheck->currentText().latin1() ); QString currentMimeType; // let's update the mimetype if( m_autoMime ){ m_mimetypes.clear(); // ok we can change mimetype so we need to be able to give a selection if( m_shChooser ) { currentMimeType = m_mimeCheck->currentText(); m_mimeCheck->clear(); // let's find possible mimetypes QDir dir( m_currentDir ); + if( dir.exists() ){ dir.setFilter( QDir::Files | QDir::Readable ); dir.setSorting( QDir::Size ); const QFileInfoList *list = dir.entryInfoList(); QFileInfoListIterator it( *list ); QFileInfo *fi; while( (fi=it.current() ) ) { if( fi->extension() == QString::fromLatin1("desktop") ){ ++it; continue; } MimeType type( fi->absFilePath() ); if( !m_mimetypes.contains( type.id() ) ){ //qWarning("Type %s", type.id().latin1() ); m_mimetypes.insert( type.id(), type.id() ); } ++it; } // add them to the chooser updateMimeCheck(); m_mimeCheck->setCurrentItem( indexByString( m_mimeCheck, currentMimeType ) ); currentMimeType = m_mimeCheck->currentText(); } + } }else { // no autoMime // let the mimetype be set from out side the m_mimeCheck FEATURE if( m_shChooser ){ currentMimeType = m_mimeCheck->currentText(); // updateMimeCheck(); } } // now we got our mimetypes we can add the files QDir dir( m_currentDir ); + if( dir.exists() ){ int sort; if ( m_case ) sort = (QDir::IgnoreCase | QDir::Name | QDir::DirsFirst | QDir::Reversed); else sort = (QDir::Name | QDir::DirsFirst | QDir::Reversed); dir.setSorting( sort ); int filter; if( m_selector == EXTENDED_ALL /*|| m_selector ==CUSTOM_ALL */ ){ filter = QDir::Files | QDir::Dirs | QDir::Hidden | QDir::All; }else filter = QDir::Files | QDir::Dirs | QDir::All; dir.setFilter( filter ); // now go through all files const QFileInfoList *list = dir.entryInfoList(); QFileInfoListIterator it( *list ); QFileInfo *fi; while( (fi=it.current() ) ){ //qWarning("True and only" ); if( fi->fileName() == QString::fromLatin1("..") || fi->fileName() == QString::fromLatin1(".") ){ //qWarning(".. or ." ); ++it; continue; } if( fi->isSymLink() ){ QString file = fi->dirPath( true ) + "/" + fi->readLink(); for( int i = 0; i<=4; i++) { // 5 tries to prevent dos QFileInfo info( file ); if( !info.exists() ){ addSymlink( currentMimeType, fi, TRUE ); break; }else if( info.isDir() ){ addDir( currentMimeType, fi, TRUE ); break; }else if( info.isFile() ){ addFile( currentMimeType, fi, TRUE ); break; }else if( info.isSymLink() ){ file = info.dirPath(true ) + "/" + info.readLink() ; break; }else if( i == 4){ addSymlink( currentMimeType, fi ); } } // off for loop }else if( fi->isDir() ){ addDir( currentMimeType, fi ); }else if( fi->isFile() ){ addFile( currentMimeType, fi ); } //qWarning( "%s", fi->fileName().latin1() ); ++it; } // of while loop + } // if ( dir.exists() ) m_View->sort(); if( m_shTool ){ m_location->insertItem( m_currentDir ); } // reenable painting and updates } |