# HG changeset patch # User Mikael Berthe # Date 1163706043 -3600 # Node ID 056364952b0de8677f082cf32f109fc76113e3c4 # Parent 71e950ddf078b3b256cf299d3a1508f48d8fd6d5 [BP-7f216b904315] Fix a potential double UTF-8 encoding diff -r 71e950ddf078 -r 056364952b0d mcabber/src/commands.c --- a/mcabber/src/commands.c Thu Nov 16 19:31:03 2006 +0100 +++ b/mcabber/src/commands.c Thu Nov 16 20:40:43 2006 +0100 @@ -1497,7 +1497,8 @@ static void room_join(gpointer bud, char *arg) { char **paramlst; - char *roomname, *nick, *pass, *roomname_tmp; + char *roomname, *nick, *pass; + char *roomname_tmp = NULL; char *tmpnick = NULL; char *pass_utf8; @@ -1506,6 +1507,8 @@ nick = *(paramlst+1); pass = *(paramlst+2); + if (!roomname) + nick = NULL; if (!nick) pass = NULL; @@ -1517,13 +1520,16 @@ free_arg_lst(paramlst); return; } - if (!roomname) - nick = NULL; roomname = (char*)buddy_getjid(bud); } else if (strchr(roomname, '/')) { scr_LogPrint(LPRINT_NORMAL, "Invalid room name."); free_arg_lst(paramlst); return; + } else { + // The room id has been specified. Let's convert it and use it. + roomname_tmp = to_utf8(roomname); + mc_strtolower(roomname_tmp); + roomname = roomname_tmp; } // If no nickname is provided with the /join command, @@ -1552,16 +1558,11 @@ pass_utf8 = to_utf8(pass); - roomname_tmp = g_strdup(roomname); - mc_strtolower(roomname_tmp); - roomname = to_utf8(roomname_tmp); - g_free(roomname_tmp); - jb_room_join(roomname, nick, pass_utf8); scr_LogPrint(LPRINT_LOGNORM, "Sent a join request to <%s>...", roomname); - g_free(roomname); + g_free(roomname_tmp); g_free(tmpnick); g_free(pass_utf8); buddylist_build();