20814N/Adiff -ur pidgin-2.9.0/libpurple/protocols/irc/msgs.c pidgin-2.9.0_new/libpurple/protocols/irc/msgs.c
20814N/A--- pidgin-2.9.0/libpurple/protocols/irc/msgs.c 2011-06-22 15:32:28.000000000 +0800
20814N/A+++ pidgin-2.9.0_new/libpurple/protocols/irc/msgs.c 2011-07-25 19:51:13.212828250 +0800
20814N/A@@ -409,15 +409,22 @@
20814N/A PurpleConvChat *chat;
20814N/A PurpleConvChatBuddy *cb;
20814N/A
20814N/A- char *userhost, *realname;
20814N/A+ char *cur, *userhost, *realname;
20814N/A
20814N/A PurpleConvChatBuddyFlags flags;
20814N/A GList *keys = NULL, *values = NULL;
20814N/A-
20814N/A+
20814N/A+ if (!args || !args[0] || !args[1] || !args[2] || !args[3]
20814N/A+ || !args[4] || !args[5] || !args[6] || !args[7]) {
20814N/A+ purple_debug(PURPLE_DEBUG_ERROR, "irc",
20814N/A+ "Got a WHO response with not enough arguments\n");
20814N/A+ return;
20814N/A+ }
20814N/A+
20814N/A conv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_CHAT, args[1], irc->account);
20814N/A if (!conv) {
20814N/A- purple_debug(PURPLE_DEBUG_ERROR, "irc", "Got a WHO response for %s, which doesn't exist\n", args[1]);
20814N/A- return;
20814N/A+ purple_debug(PURPLE_DEBUG_ERROR, "irc","Got a WHO response for %s, which doesn't exist\n", args[1]);
20814N/A+ return;
20814N/A }
20814N/A
20814N/A cb = purple_conv_chat_cb_find(PURPLE_CONV_CHAT(conv), args[5]);
20814N/A@@ -429,9 +436,17 @@
20814N/A chat = PURPLE_CONV_CHAT(conv);
20814N/A
20814N/A userhost = g_strdup_printf("%s@%s", args[2], args[3]);
20814N/A- realname = g_strdup(args[8]);
20814N/A+ /* The final argument is a :-argument, but annoyingly
20814N/A+ * contains two "words", the hop count and real name. */
20814N/A+ for (cur = args[7]; *cur; cur++) {
20814N/A+ if (*cur == ' ') {
20814N/A+ cur++;
20814N/A+ break;
20814N/A+ }
20814N/A+ }
20814N/A+ realname = g_strdup(cur);
20814N/A
20814N/A- keys = g_list_prepend(keys, "userhost");
20814N/A+ keys = g_list_prepend(keys, "userhost");
20814N/A values = g_list_prepend(values, userhost);
20814N/A
20814N/A keys = g_list_prepend(keys, "realname");
20814N/Adiff -ur pidgin-2.9.0/libpurple/protocols/irc/parse.c pidgin-2.9.0_new/libpurple/protocols/irc/parse.c
20814N/A--- pidgin-2.9.0/libpurple/protocols/irc/parse.c 2011-06-22 15:32:28.000000000 +0800
20814N/A+++ pidgin-2.9.0_new/libpurple/protocols/irc/parse.c 2011-07-25 19:51:48.557552680 +0800
20814N/A@@ -74,7 +74,7 @@
20814N/A { "331", "nc:", irc_msg_topic }, /* No channel topic */
20814N/A { "332", "nc:", irc_msg_topic }, /* Channel topic */
20814N/A { "333", "*", irc_msg_ignore }, /* Topic setter stuff */
20814N/A- { "352", "nvcvnvvv:", irc_msg_who },/* Channel WHO */
20814N/A+ { "352", "ncvvvnv:", irc_msg_who }, /* Channel WHO */
20814N/A { "353", "nvc:", irc_msg_names }, /* Names list */
20814N/A { "366", "nc:", irc_msg_names }, /* End of names */
20814N/A { "367", "ncnnv", irc_msg_ban }, /* Ban list */