changeset 1033:056364952b0d

[BP-7f216b904315] Fix a potential double UTF-8 encoding
author Mikael Berthe <mikael@lilotux.net>
date Thu, 16 Nov 2006 20:40:43 +0100
parents 71e950ddf078
children 29723c79addc
files mcabber/src/commands.c
diffstat 1 files changed, 10 insertions(+), 9 deletions(-) [+]
line wrap: on
line diff
--- 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();