# HG changeset patch # User Paul Aurich # Date 1249528985 0 # Node ID 0e516784bbaec40161bd78ee1c62adee055d8d59 # Parent d9aef5487af97fe6f5da67f44389bc49f0952f5d# Parent 0c90b164a7351cb2688119554e2d523069f63c64 merge of '05d22685de7c7e91a18724eccf5ecf6791146239' and '3ca58814bdd8642da208ea36f34f9a752fd4bf1b' diff -r d9aef5487af9 -r 0e516784bbae libpurple/protocols/jabber/buddy.c --- a/libpurple/protocols/jabber/buddy.c Thu Aug 06 01:28:34 2009 +0000 +++ b/libpurple/protocols/jabber/buddy.c Thu Aug 06 03:23:05 2009 +0000 @@ -1193,6 +1193,22 @@ g_free(jbri); } +static guint jbir_hash(gconstpointer v) +{ + if (v) + return g_str_hash(v); + else + return 0; +} + +static gboolean jbir_equal(gconstpointer v1, gconstpointer v2) +{ + const gchar *resource_1 = v1; + const gchar *resource_2 = v2; + + return purple_strequal(resource_1, resource_2); +} + static void jabber_version_parse(JabberStream *js, const char *from, JabberIqType type, const char *id, xmlnode *packet, gpointer data) @@ -1464,9 +1480,7 @@ char *full_jid = NULL; const char *to; - g_return_if_fail(jbr->name != NULL); - - if (is_bare_jid) { + if (is_bare_jid && jbr->name) { full_jid = g_strdup_printf("%s/%s", jid, jbr->name); to = full_jid; } else @@ -1535,7 +1549,7 @@ jbi->jid = g_strdup(jid); jbi->js = js; jbi->jb = jb; - jbi->resources = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, jabber_buddy_info_resource_free); + jbi->resources = g_hash_table_new_full(jbir_hash, jbir_equal, g_free, jabber_buddy_info_resource_free); jbi->user_info = purple_notify_user_info_new(); iq = jabber_iq_new(js, JABBER_IQ_GET);