--- a/libpurple/conversation.c Mon May 05 06:55:00 2008 +0000 +++ b/libpurple/conversation.c Wed May 07 12:14:28 2008 +0000 @@ -813,14 +813,27 @@ g_return_val_if_fail(name != NULL, NULL); + switch (type) { + case PURPLE_CONV_TYPE_IM: + cnv = purple_get_ims(); + break; + case PURPLE_CONV_TYPE_CHAT: + cnv = purple_get_chats(); + break; + case PURPLE_CONV_TYPE_ANY: + cnv = purple_get_conversations(); + break; + default: + g_return_val_if_reached(NULL); + } + name1 = g_strdup(purple_normalize(account, name)); - for (cnv = purple_get_conversations(); cnv != NULL; cnv = cnv->next) { + for (; cnv != NULL; cnv = cnv->next) { c = (PurpleConversation *)cnv->data; name2 = purple_normalize(account, purple_conversation_get_name(c)); - if (((type == PURPLE_CONV_TYPE_ANY) || (type == purple_conversation_get_type(c))) && - (account == purple_conversation_get_account(c)) && + if ((account == purple_conversation_get_account(c)) && !purple_utf8_strcasecmp(name1, name2)) { break;