changeset 1012:7f216b904315

Fix a potential double UTF-8 encoding
author Mikael Berthe <mikael@lilotux.net>
date Sun, 12 Nov 2006 15:39:56 +0100
parents b5bcc223cf51
children f1a9ca2348e5
files mcabber/src/commands.c
diffstat 1 files changed, 10 insertions(+), 9 deletions(-) [+]
line wrap: on
line diff
--- a/mcabber/src/commands.c	Sun Nov 12 13:11:07 2006 +0100
+++ b/mcabber/src/commands.c	Sun Nov 12 15:39:56 2006 +0100
@@ -1568,7 +1568,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 *pass_utf8;
 
   paramlst = split_arg(arg, 3, 0); // roomid, nickname, password
@@ -1576,6 +1577,8 @@
   nick = *(paramlst+1);
   pass = *(paramlst+2);
 
+  if (!roomname)
+    nick = NULL;
   if (!nick)
     pass = NULL;
 
@@ -1587,13 +1590,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,
@@ -1612,16 +1618,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(nick);
   g_free(pass_utf8);
   buddylist_build();