--- 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);
}