From: Thomas R. <dre...@us...> - 2004-05-12 09:55:29
|
Update of /cvsroot/licq/qt-gui/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv16699/src Modified Files: mainwin.cpp Log Message: Don't crash when registering a new user. We should not operate on a NULL owner ;-) Additionally this patch removes an inconsistency in the way how "ICQOwner *owner" and "ICQOwner *o" is beeing used. Index: mainwin.cpp =================================================================== RCS file: /cvsroot/licq/qt-gui/src/mainwin.cpp,v retrieving revision 1.309 retrieving revision 1.310 diff -u -d -r1.309 -r1.310 --- mainwin.cpp 9 May 2004 15:53:22 -0000 1.309 +++ mainwin.cpp 12 May 2004 09:55:17 -0000 1.310 @@ -657,16 +657,12 @@ } } - o = gUserManager.FetchOwner(LICQ_PPID, LOCK_R); - mnuPFM->setItemChecked(o->PhoneFollowMeStatus(), true); - gUserManager.DropOwner(); - // verify we exist - ICQOwner *owner = gUserManager.FetchOwner(LICQ_PPID, LOCK_R); + o = gUserManager.FetchOwner(LICQ_PPID, LOCK_R); bool bRegister = false; if (o != NULL) { - bRegister = ( strcmp(owner->IdString(), "0") == 0); + bRegister = ( strcmp(o->IdString(), "0") == 0); gUserManager.DropOwner(LICQ_PPID); } else @@ -677,14 +673,24 @@ else { // Do we need to get a password - ICQOwner *o = gUserManager.FetchOwner(LOCK_R); - if(o->Password()[0] == '\0') + o = gUserManager.FetchOwner(LOCK_R); + if (o != NULL) { - gUserManager.DropOwner(); - (void) new UserSelectDlg(licqDaemon); + if(o->Password()[0] == '\0') + { + gUserManager.DropOwner(); + (void) new UserSelectDlg(licqDaemon); + } + else + gUserManager.DropOwner(); } - else - gUserManager.DropOwner(); + } + + o = gUserManager.FetchOwner(LICQ_PPID, LOCK_R); + if (o != NULL) + { + mnuPFM->setItemChecked(o->PhoneFollowMeStatus(), true); + gUserManager.DropOwner(); } m_nProtoNum = 0; |