# HG changeset patch # User Mikael Berthe # Date 1163701812 -3600 # Node ID fc60607070225d50dcec3be99f90a8b85e913770 # Parent 804aebb390284df5b3ef134a7a72af9950696467 [BP] Fixes truncating utf-8 buddy names (Myhailo Danylenko) Backport of changesets 023891f99732 and 553b8ecf901f. diff -r 804aebb39028 -r fc6060707022 mcabber/src/screen.c --- a/mcabber/src/screen.c Thu Nov 16 19:07:09 2006 +0100 +++ b/mcabber/src/screen.c Thu Nov 16 19:30:12 2006 +0100 @@ -1088,8 +1088,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; @@ -1101,7 +1099,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) { @@ -1110,7 +1107,8 @@ offset = i + 1 - maxy; } - 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; @@ -1170,7 +1168,7 @@ } if (Roster_Width > 7) - strncpy(name, buddy_getname(BUDDATA(buddy)), Roster_Width-7); + g_utf8_strncpy(name, buddy_getname(BUDDATA(buddy)), Roster_Width-7); else name[0] = 0; @@ -1196,7 +1194,7 @@ } } - snprintf(rline, Roster_Width, + snprintf(rline, 4*Roster_Width, " %c%c%c%c %s", pending, sepleft, status, sepright, name); }