Mercurial > pidgin
comparison libpurple/protocols/msn/msn.c @ 23616:6659ba7b3941
Fix a crash when the user isn't in your list.
author | Daniel Atallah <daniel.atallah@gmail.com> |
---|---|
date | Tue, 29 Jul 2008 18:55:03 +0000 |
parents | 7f4b697c6947 |
children | 7a71457cdd32 |
comparison
equal
deleted
inserted
replaced
23615:f4001a130765 | 23616:6659ba7b3941 |
---|---|
581 | 581 |
582 static gboolean | 582 static gboolean |
583 msn_can_receive_file(PurpleConnection *gc, const char *who) | 583 msn_can_receive_file(PurpleConnection *gc, const char *who) |
584 { | 584 { |
585 PurpleAccount *account; | 585 PurpleAccount *account; |
586 char *normal; | 586 gchar *normal; |
587 MsnSession *session; | |
588 MsnUser *user; | |
589 gboolean ret; | 587 gboolean ret; |
590 | 588 |
591 account = purple_connection_get_account(gc); | 589 account = purple_connection_get_account(gc); |
592 | 590 |
593 normal = g_strdup(msn_normalize(account, purple_account_get_username(account))); | 591 normal = g_strdup(msn_normalize(account, purple_account_get_username(account))); |
594 ret = strcmp(normal, msn_normalize(account, who)); | 592 ret = strcmp(normal, msn_normalize(account, who)); |
595 g_free(normal); | 593 g_free(normal); |
596 | 594 |
597 if (ret) { | 595 if (ret) { |
598 session = gc->proto_data; | 596 MsnSession *session = gc->proto_data; |
599 user = msn_userlist_find_user(session->userlist, who); | 597 MsnUser *user = msn_userlist_find_user(session->userlist, who); |
600 ret = (user->clientid & MSN_CLIENT_CAP_WEBMSGR) == 0; | 598 if (user) |
599 ret = (user->clientid & MSN_CLIENT_CAP_WEBMSGR) == 0; | |
601 /* Include these too: MSN_CLIENT_CAP_MSNMOBILE|MSN_CLIENT_CAP_MSNDIRECT ? */ | 600 /* Include these too: MSN_CLIENT_CAP_MSNMOBILE|MSN_CLIENT_CAP_MSNDIRECT ? */ |
602 } | 601 } |
603 | 602 |
604 return ret; | 603 return ret; |
605 } | 604 } |
1350 return; | 1349 return; |
1351 } | 1350 } |
1352 | 1351 |
1353 if (group_id >= 0) | 1352 if (group_id >= 0) |
1354 { | 1353 { |
1354 /* This is wrong... user->group_ids contains g_strdup()'d data now */ | |
1355 user->group_ids = g_list_append(user->group_ids, | 1355 user->group_ids = g_list_append(user->group_ids, |
1356 GINT_TO_POINTER(group_id)); | 1356 GINT_TO_POINTER(group_id)); |
1357 } | 1357 } |
1358 | 1358 |
1359 user->list_op |= (1 << list_id); | 1359 user->list_op |= (1 << list_id); |