changeset 1026:fc6060707022

[BP] Fixes truncating utf-8 buddy names (Myhailo Danylenko) Backport of changesets 023891f99732 and 553b8ecf901f.
author Mikael Berthe <mikael@lilotux.net>
date Thu, 16 Nov 2006 19:30:12 +0100
parents 804aebb39028
children 6d68a65b5ec6
files mcabber/src/screen.c
diffstat 1 files changed, 4 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- 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);
     }