Nico Golde:
[apps/madmutt.git] / menu.c
diff --git a/menu.c b/menu.c
index 35a4987..15eccce 100644 (file)
--- a/menu.c
+++ b/menu.c
@@ -39,9 +39,12 @@ extern size_t UngetCount;
 
 static void print_enriched_string (int attr, unsigned char *s, int do_color)
 {
+  wchar_t wc;
   size_t k;
   size_t n = mutt_strlen ((char *)s);
+  mbstate_t mbstate;
 
+  memset (&mbstate, 0, sizeof (mbstate));
   while (*s)
   {
     if (*s < M_TREE_MAX)
@@ -131,10 +134,10 @@ static void print_enriched_string (int attr, unsigned char *s, int do_color)
       }
       if (do_color) attrset(attr);
     }
-    else if (*s > 0)
+    else if ((k = mbrtowc (&wc, (char *)s, n, &mbstate)) > 0)
     {
-      addnstr ((char *)s, 1);
-      s += 1, n-= 1;
+      addnstr ((char *)s, k);
+      s += k, n-= k;
     }
     else
       break;
@@ -157,8 +160,12 @@ void menu_pad_string (char *s, size_t n)
   int shift = option (OPTARROWCURSOR) ? 3 : 0;
   int cols = COLS - shift - SidebarWidth;
 
-  mutt_format_string (s, n, cols, cols, 0, ' ', s, strlen (s), 1);
-  s[n - 1] = 0;
+  char tmpbuf[n];
+
+  mutt_format_string (tmpbuf, n, cols, cols, 0, ' ', s, strlen (s), 1);
+  tmpbuf[n - 1] = 0;
+
+  snprintf(s,n,"%s",tmpbuf); /* overkill */
 }
 
 void menu_redraw_full (MUTTMENU *menu)