summaryrefslogtreecommitdiff
authorzecke <zecke>2002-06-19 17:38:11 (UTC)
committer zecke <zecke>2002-06-19 17:38:11 (UTC)
commit23ac56db3aa77b298f20b288aadf503fd09a23a9 (patch) (unidiff)
treefe820ec743bbf829d31ae3ab1436a41a69b1855c
parentdee5f6c5a3bd982913d0b234fb9392ce68d5df63 (diff)
downloadopie-23ac56db3aa77b298f20b288aadf503fd09a23a9.zip
opie-23ac56db3aa77b298f20b288aadf503fd09a23a9.tar.gz
opie-23ac56db3aa77b298f20b288aadf503fd09a23a9.tar.bz2
Tille ask Diana how she was able to trigger that bug?
I nominate her for the bug finding queen 2002. Ok I just fixed two possible crashes with the risk of losing data.
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--core/pim/addressbook/abtable.cpp25
1 files changed, 17 insertions, 8 deletions
diff --git a/core/pim/addressbook/abtable.cpp b/core/pim/addressbook/abtable.cpp
index e9e6a0b..3fa1a7c 100644
--- a/core/pim/addressbook/abtable.cpp
+++ b/core/pim/addressbook/abtable.cpp
@@ -559,12 +559,14 @@ void AbTable::loadFile( const QString &strFile, bool journalFile )
559 if ( !f.open(IO_ReadOnly) ) 559 if ( !f.open(IO_ReadOnly) )
560 return; 560 return;
561 QList<Contact> list; 561 QList<Contact> list;
562 list.setAutoDelete( TRUE ); 562 list.setAutoDelete( TRUE );
563 QByteArray ba = f.readAll(); 563 QByteArray ba = f.readAll();
564 f.close(); 564 f.close();
565 if (ba.isEmpty() )
566 return;
565 char *uc = ba.data();//(QChar *)data.unicode(); 567 char *uc = ba.data();//(QChar *)data.unicode();
566 int len = ba.size();//data.length(); 568 int len = ba.size();//data.length();
567 bool foundAction = false; 569 bool foundAction = false;
568 Contact::journal_action action; 570 Contact::journal_action action;
569 bool foundKey = false; 571 bool foundKey = false;
570 int journalKey = 0; 572 int journalKey = 0;
@@ -794,23 +796,30 @@ void AbTable::internalAddEntries( QList<Contact> &list )
794 796
795 797
796void AbTable::journalFreeReplace( const Contact &cnt, int row ) 798void AbTable::journalFreeReplace( const Contact &cnt, int row )
797{ 799{
798 QString strName, 800 QString strName,
799 strContact; 801 strContact;
800 AbTableItem *ati; 802 AbTableItem *ati = 0l;
801 803
802 strName = findContactName( cnt ); 804 strName = findContactName( cnt );
803 strContact = findContactContact( cnt ); 805 strContact = findContactContact( cnt );
804 ati = static_cast<AbTableItem*>(item(row, 0)); 806 ati = static_cast<AbTableItem*>(item(row, 0));
805 contactList.remove( ati ); 807 if ( ati != 0 ) {
806 ati->setItem( strName, strContact ); 808 contactList.remove( ati );
807 contactList.insert( ati, cnt ); 809 ati->setItem( strName, strContact );
808 810 contactList.insert( ati, cnt );
809 ati = static_cast<AbTableItem*>(item(row, 1)); 811
810 ati->setItem( strContact, strName ); 812 ati = static_cast<AbTableItem*>(item(row, 1));
813 ati->setItem( strContact, strName );
814 }else{
815 int myrows = numRows();
816 setNumRows( myrows + 1 );
817 insertIntoTable( cnt, myrows );
818 // gets deleted when returning
819 }
811} 820}
812 821
813void AbTable::journalFreeRemove( int row ) 822void AbTable::journalFreeRemove( int row )
814{ 823{
815 AbTableItem *ati; 824 AbTableItem *ati;
816 ati = static_cast<AbTableItem*>(item(row, 0)); 825 ati = static_cast<AbTableItem*>(item(row, 0));
@@ -1080,13 +1089,13 @@ void AbTable::updateVisible()
1080 if ( tmpStr != QString(QChar(showChar)) && showChar != '#' ) { 1089 if ( tmpStr != QString(QChar(showChar)) && showChar != '#' ) {
1081 hide = true; 1090 hide = true;
1082 } 1091 }
1083 if ( showChar == '#' ) { 1092 if ( showChar == '#' ) {
1084 if (tmpStr == "a") 1093 if (tmpStr == "a")
1085 hide = true; 1094 hide = true;
1086 1095
1087 if (tmpStr == "b") 1096 if (tmpStr == "b")
1088 hide = true; 1097 hide = true;
1089 1098
1090 if (tmpStr == "c") 1099 if (tmpStr == "c")
1091 hide = true; 1100 hide = true;
1092 1101