pidgin: 755ed229: Using g_convert instead of g_utf16_to_ut...

qulogic at pidgin.im qulogic at pidgin.im
Fri Jul 31 00:15:41 EDT 2009


-----------------------------------------------------------------
Revision: 755ed2299261658aaaf5351e8561db35bf2df935
Ancestor: bee5bfb6d563954d26ac9abd0cfbdc39b869a2f5
Author: qulogic at pidgin.im
Date: 2009-07-31T03:53:00
Branch: im.pidgin.pidgin
URL: http://d.pidgin.im/viewmtn/revision/info/755ed2299261658aaaf5351e8561db35bf2df935

Modified files:
        libpurple/protocols/msn/slp.c

ChangeLog: 

Using g_convert instead of g_utf16_to_utf8 means we don't need to go
through the whole buffer converting it first.

-------------- next part --------------
============================================================
--- libpurple/protocols/msn/slp.c	729890fdb8e2a4ec2fe7ead5016b917a969bc793
+++ libpurple/protocols/msn/slp.c	4fe55d77444e8870f08c608df124a0220070fc3c
@@ -324,7 +324,6 @@ got_sessionreq(MsnSlpCall *slpcall, cons
 		gsize bin_len;
 		guint32 file_size;
 		char *file_name;
-		gunichar2 *uni_name;
 
 		account = slpcall->slplink->session->account;
 
@@ -342,15 +341,9 @@ got_sessionreq(MsnSlpCall *slpcall, cons
 			bin = (char *)purple_base64_decode(context, &bin_len);
 			file_size = GUINT32_FROM_LE(*(gsize *)(bin + 8));
 
-			uni_name = (gunichar2 *)(bin + 20);
-			while(*uni_name != 0 && ((char *)uni_name - (bin + 20)) < MAX_FILE_NAME_LEN) {
-				*uni_name = GUINT16_FROM_LE(*uni_name);
-				uni_name++;
-			}
+			file_name = g_convert(bin + 20, -1, "UTF-16LE", "UTF-8",
+			                      NULL, NULL, NULL);
 
-			file_name = g_utf16_to_utf8((const gunichar2 *)(bin + 20), -1,
-										NULL, NULL, NULL);
-
 			g_free(bin);
 
 			purple_xfer_set_filename(xfer, file_name);


More information about the Commits mailing list