author | zecke <zecke> | 2002-06-17 14:54:47 (UTC) |
---|---|---|
committer | zecke <zecke> | 2002-06-17 14:54:47 (UTC) |
commit | dcba3fed4f2abf001ced72b573f6e50f6b37e1e6 (patch) (side-by-side diff) | |
tree | 61432b2b0a68c9604d50df5eda4d2d6be832eecd | |
parent | f27745ccf2ace20e5adc44bf630b20e5657feeb2 (diff) | |
download | opie-dcba3fed4f2abf001ced72b573f6e50f6b37e1e6.zip opie-dcba3fed4f2abf001ced72b573f6e50f6b37e1e6.tar.gz opie-dcba3fed4f2abf001ced72b573f6e50f6b37e1e6.tar.bz2 |
Fix a possible crash when opening an empty file
-rw-r--r-- | libopie/tododb.cpp | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/libopie/tododb.cpp b/libopie/tododb.cpp index 1e40c40..17163a0 100644 --- a/libopie/tododb.cpp +++ b/libopie/tododb.cpp @@ -39,64 +39,66 @@ public: map.insert( "Description", (*it).description() ); if( (*it).hasDate() ){ map.insert("DateYear", QString::number( (*it).date().year() ) ); map.insert("DateMonth", QString::number( (*it).date().month() ) ); map.insert("DateDay", QString::number( (*it).date().day() ) ); } map.insert("Uid", QString::number( (*it).uid() ) ); task->setTagName("Task" ); task->setAttributes( map ); tasks->appendChild(task); } QFile file( name); if( file.open(IO_WriteOnly ) ){ QTextStream stream(&file ); stream.setEncoding( QTextStream::UnicodeUTF8 ); stream << "<!DOCTYPE Tasks>" << endl; tasks->save(stream ); delete tasks; stream << "</Tasks>" << endl; file.close(); return true; } return false; } QValueList<ToDoEvent> load( const QString &name ){ qWarning("loading tododb" ); QValueList<ToDoEvent> m_todos; XMLElement *root = XMLElement::load( name ); if(root != 0l ){ // start parsing qWarning("ToDoDB::load tagName(): %s", root->tagName().latin1() ); //if( root->tagName() == QString::fromLatin1("Tasks" ) ){// Start XMLElement *element = root->firstChild(); + if (element == 0 ) + return m_todos; element = element->firstChild(); while( element ){ if( element->tagName() != QString::fromLatin1("Task") ){ element = element->nextChild(); continue; } qWarning("ToDoDB::load element tagName() : %s", element->tagName().latin1() ); QString dummy; ToDoEvent event; bool ok; int dumInt; // completed dummy = element->attribute("Completed" ); dumInt = dummy.toInt(&ok ); if(ok ) event.setCompleted( dumInt == 0 ? false : true ); // progress dummy = element->attribute("Progress" ); { ushort dumShort = dummy.toUShort(&ok); event.setProgress( dumShort ); } // hasDate dummy = element->attribute("HasDate" ); dumInt = dummy.toInt(&ok ); if(ok ) event.setHasDate( dumInt == 0 ? false: true ); // set the date bool hasDa = dumInt; if ( hasDa ) { //parse the date int year, day, month = 0; year = day = month; // year |