comparison libpurple/protocols/oscar/oscar.c @ 25934:3461bf74cbf1

Fix a crash in this branch that I introduced a few days ago. bname was null here because it got initialized at a time when b was null.
author Mark Doliner <mark@kingant.net>
date Wed, 28 Jan 2009 07:12:43 +0000
parents a8c86e97d4f0
children 8c8948b9f602
comparison
equal deleted inserted replaced
25933:a8c86e97d4f0 25934:3461bf74cbf1
805 OscarData *od; 805 OscarData *od;
806 PurplePresence *presence = NULL; 806 PurplePresence *presence = NULL;
807 PurpleStatus *status = NULL; 807 PurpleStatus *status = NULL;
808 gchar *message = NULL, *itmsurl = NULL, *tmp; 808 gchar *message = NULL, *itmsurl = NULL, *tmp;
809 gboolean is_away; 809 gboolean is_away;
810 const char *bname;
811 810
812 od = purple_connection_get_protocol_data(gc); 811 od = purple_connection_get_protocol_data(gc);
813 812
814 bname = purple_buddy_get_name(b);
815 if (userinfo == NULL) 813 if (userinfo == NULL)
816 userinfo = aim_locate_finduserinfo(od, bname); 814 userinfo = aim_locate_finduserinfo(od, purple_buddy_get_name(b));
817 815
818 if ((user_info == NULL) || ((b == NULL) && (userinfo == NULL))) 816 if ((user_info == NULL) || ((b == NULL) && (userinfo == NULL)))
819 return; 817 return;
820 818
821 if (b == NULL) 819 if (b == NULL)
884 message = tmp; 882 message = tmp;
885 } 883 }
886 884
887 if (b) { 885 if (b) {
888 if (purple_presence_is_online(presence)) { 886 if (purple_presence_is_online(presence)) {
889 if (oscar_util_valid_name_icq(bname) || is_away || !message || !(*message)) { 887 if (oscar_util_valid_name_icq(purple_buddy_get_name(b)) || is_away || !message || !(*message)) {
890 /* Append the status name for online ICQ statuses, away AIM statuses, and for all buddies with no message. 888 /* Append the status name for online ICQ statuses, away AIM statuses, and for all buddies with no message.
891 * If the status name and the message are the same, only show one. */ 889 * If the status name and the message are the same, only show one. */
892 const char *status_name = purple_status_get_name(status); 890 const char *status_name = purple_status_get_name(status);
893 if (status_name && message && !strcmp(status_name, message)) 891 if (status_name && message && !strcmp(status_name, message))
894 status_name = NULL; 892 status_name = NULL;
899 (message && *message) ? message : ""); 897 (message && *message) ? message : "");
900 g_free(message); 898 g_free(message);
901 message = tmp; 899 message = tmp;
902 } 900 }
903 901
902 } else if (aim_ssi_waitingforauth(od->ssi.local,
903 aim_ssi_itemlist_findparentname(od->ssi.local, purple_buddy_get_name(b)),
904 purple_buddy_get_name(b)))
905 {
906 /* Note if an offline buddy is not authorized */
907 tmp = g_strdup_printf("%s%s%s",
908 _("Not Authorized"),
909 (message && *message) ? ": " : "",
910 (message && *message) ? message : "");
911 g_free(message);
912 message = tmp;
904 } else { 913 } else {
905 if (aim_ssi_waitingforauth(od->ssi.local, 914 g_free(message);
906 aim_ssi_itemlist_findparentname(od->ssi.local, bname), 915 message = g_strdup(_("Offline"));
907 bname)) {
908 /* Note if an offline buddy is not authorized */
909 tmp = g_strdup_printf("%s%s%s",
910 _("Not Authorized"),
911 (message && *message) ? ": " : "",
912 (message && *message) ? message : "");
913 g_free(message);
914 message = tmp;
915 } else {
916 g_free(message);
917 message = g_strdup(_("Offline"));
918 }
919 } 916 }
920 917
921 } 918 }
922 919
923 purple_notify_user_info_add_pair(user_info, _("Status"), message); 920 purple_notify_user_info_add_pair(user_info, _("Status"), message);