From: Mark D. <the...@us...> - 2004-10-14 03:44:52
|
Update of /cvsroot/gaim/gaim/src/protocols/oscar In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv4362 Modified Files: oscar.c Log Message: I wrote this code with the assumption that iconv would fail if Gaim attempted to convert utf8 to an encoding that could not represent all the characters. This assumption is not true for all version of iconv (NetBSD 2.0, in this case). Pope not Calle of Flaxborough (notcalle) pointed this out and provided a fix. Thanks! Index: oscar.c =================================================================== RCS file: /cvsroot/gaim/gaim/src/protocols/oscar/oscar.c,v retrieving revision 1.682 retrieving revision 1.683 diff -u -d -p -r1.682 -r1.683 --- oscar.c 14 Oct 2004 03:25:40 -0000 1.682 +++ oscar.c 14 Oct 2004 03:44:42 -0000 1.683 @@ -498,10 +498,11 @@ gaim_plugin_oscar_convert_to_best_encodi const gchar *charsetstr; gsize msglen; + *charset = oscar_charset_check(from); + /* Attempt to send as ASCII */ - *msg = g_convert(from, strlen(from), "ASCII", "UTF-8", NULL, &msglen, NULL); - if (*msg != NULL) { - *charset = AIM_CHARSET_ASCII; + if (*charset == AIM_CHARSET_ASCII) { + *msg = g_convert(from, strlen(from), "ASCII", "UTF-8", NULL, &msglen, NULL); *charsubset = 0x0000; *msglen_int = msglen; return; @@ -532,6 +533,10 @@ gaim_plugin_oscar_convert_to_best_encodi if ((destsn != NULL) && aim_sn_is_icq(destsn)) charsetstr = gaim_account_get_string(account, "encoding", OSCAR_DEFAULT_CUSTOM_ENCODING); + /* + * XXX - We need a way to only attempt to convert if we KNOW "from" + * can be converted to "charsetstr" + */ *msg = g_convert(from, strlen(from), charsetstr, "UTF-8", NULL, &msglen, NULL); if (*msg != NULL) { *charset = AIM_CHARSET_CUSTOM; @@ -5499,7 +5504,7 @@ static void oscar_set_info(GaimConnectio aim_locate_setprofile(od->sess, NULL, "", 0, NULL, NULL, 0); return; } - + text_html = gaim_strdup_withhtml(text); charset = oscar_charset_check(text_html); if (charset == AIM_CHARSET_UNICODE) { @@ -5616,7 +5621,7 @@ oscar_set_status_aim(GaimAccount *accoun gaim_notify_warning(gc, NULL, _("Away message too long."), errstr); g_free(errstr); } - + g_free(text_html); return; |