Mercurial > ~mikael > mcabber > hg
comparison mcabber/src/roster.c @ 1389:cefda9174d62
Fix an old bug in roster_del_user()
author | Mikael Berthe <mikael@lilotux.net> |
---|---|
date | Tue, 04 Dec 2007 22:47:06 +0100 |
parents | cd9182f0b5c7 |
children | f89844a0448a |
comparison
equal
deleted
inserted
replaced
1388:40371a7d49f4 | 1389:cefda9174d62 |
---|---|
432 GSList *sl_user, *sl_group; | 432 GSList *sl_user, *sl_group; |
433 GSList **sl_group_listptr; | 433 GSList **sl_group_listptr; |
434 roster *roster_usr; | 434 roster *roster_usr; |
435 GSList *node; | 435 GSList *node; |
436 | 436 |
437 sl_user = roster_find(jid, jidsearch, | 437 sl_user = roster_find(jid, jidsearch, ROSTER_TYPE_USER|ROSTER_TYPE_AGENT); |
438 ROSTER_TYPE_USER|ROSTER_TYPE_AGENT|ROSTER_TYPE_ROOM); | |
439 if (sl_user == NULL) | 438 if (sl_user == NULL) |
440 return; | 439 return; |
441 roster_usr = (roster*)sl_user->data; | 440 roster_usr = (roster*)sl_user->data; |
442 | 441 |
443 // Remove (if present) from unread messages list | 442 // Remove (if present) from unread messages list |
445 if (node) unread_list = g_slist_delete_link(unread_list, node); | 444 if (node) unread_list = g_slist_delete_link(unread_list, node); |
446 // If there is a pending unread message, keep track of it | 445 // If there is a pending unread message, keep track of it |
447 if (roster_usr->flags & ROSTER_FLAG_MSG) | 446 if (roster_usr->flags & ROSTER_FLAG_MSG) |
448 unread_jid_add(roster_usr->jid); | 447 unread_jid_add(roster_usr->jid); |
449 | 448 |
449 sl_group = roster_usr->list; | |
450 | |
450 // Let's free roster_usr memory (jid, name, status message...) | 451 // Let's free roster_usr memory (jid, name, status message...) |
451 free_roster_user_data(roster_usr); | 452 free_roster_user_data(roster_usr); |
452 | 453 |
453 // That's a little complex, we need to dereference twice | 454 // That's a little complex, we need to dereference twice |
454 sl_group = ((roster*)sl_user->data)->list; | |
455 sl_group_listptr = &((roster*)(sl_group->data))->list; | 455 sl_group_listptr = &((roster*)(sl_group->data))->list; |
456 *sl_group_listptr = g_slist_delete_link(*sl_group_listptr, sl_user); | 456 *sl_group_listptr = g_slist_delete_link(*sl_group_listptr, sl_user); |
457 | 457 |
458 // We need to rebuild the list | 458 // We need to rebuild the list |
459 if (current_buddy) | 459 if (current_buddy) |