# HG changeset patch # User Myhailo Danylenko # Date 1161541648 -7200 # Node ID 553b8ecf901f1b26546ef297c4f348016924733c # Parent 023891f99732b392804320f45f2a4d303cbb66e6 Fixes truncating of utf-8 buddy names (again) This patch fixes the problem with utf-8 buddy names, which include multibyte characters. This patch version (maybe) fixes issue for utf-8 locales too. diff -r 023891f99732 -r 553b8ecf901f mcabber/src/screen.c --- a/mcabber/src/screen.c Sat Oct 21 15:00:41 2006 +0200 +++ b/mcabber/src/screen.c Sun Oct 22 20:27:28 2006 +0200 @@ -1135,8 +1135,6 @@ return; } - name = g_new0(char, Roster_Width); - // Update offset if necessary // a) Try to show as many buddylist items as possible i = g_list_length(buddylist) - maxy; @@ -1148,7 +1146,6 @@ i = g_list_position(buddylist, current_buddy); if (i == -1) { // This is bad scr_LogPrint(LPRINT_NORMAL, "Doh! Can't find current selected buddy!!"); - g_free(name); curs_set(cursor_backup); return; } else if (i < offset) { @@ -1162,14 +1159,15 @@ else x_pos = 0; - rline = g_new0(char, Roster_Width+1); + name = g_new0(char, 4*Roster_Width); + rline = g_new0(char, 4*Roster_Width+1); buddy = buddylist; rOffset = offset; for (i=0; i 7) - strncpy(name, name_locale, Roster_Width-7); + g_utf8_strncpy(name, buddy_getname(BUDDATA(buddy)), Roster_Width-7); else name[0] = 0; @@ -1249,12 +1246,13 @@ } } - snprintf(rline, Roster_Width, + snprintf(rline, 4*Roster_Width, " %c%c%c%c %s", pending, sepleft, status, sepright, name); } - mvwprintw(rosterWnd, i, x_pos, "%s", rline); - g_free(name_locale); + rline_locale = from_utf8(rline); + mvwprintw(rosterWnd, i, x_pos, "%s", rline_locale); + g_free(rline_locale); i++; }