]> git.wh0rd.org Git - nano.git/commitdiff
in statusq(), make sure that the vsnprintf(foo) call and foo's
authorDavid Lawrence Ramsey <pooka109@gmail.com>
Thu, 31 Mar 2005 00:11:43 +0000 (00:11 +0000)
committerDavid Lawrence Ramsey <pooka109@gmail.com>
Thu, 31 Mar 2005 00:11:43 +0000 (00:11 +0000)
subsequent null termination both take the proper number of bytes when
using multibyte characters, so that multibyte prompt strings aren't
prematurely cut off

git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2444 35c25a1d-7b9e-4130-9fde-d3aeb78583b8

ChangeLog
src/winio.c

index 0ad374e40458dfe826c131a11e67de300f393b6b..09e4faae357d7c8562582a5fa0e4804bcea66764 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -75,6 +75,11 @@ CVS code -
   regexec_safe()
        - Rename to safe_regexec() for consistency. (DLR)
 - winio.c:
+  statusq()
+       - Make sure that the vsnprintf(foo) call and foo's subsequent
+         null termination both take the proper number of bytes when
+         using multibyte characters, so that multibyte prompt strings
+         aren't prematurely cut off. (DLR)
   titlebar()
        - Make sure that the (mv)?waddnstr() calls take the proper
          number of bytes when using multibyte characters, so that
index 11cc87d1a3580ad2557d7952cc80595f7717573c..30e02b4b7a885132ef5fc25fc39496c476e2ec8c 100644 (file)
@@ -2652,7 +2652,7 @@ int statusq(bool allow_tabs, const shortcut *s, const char *def,
                const char *msg, ...)
 {
     va_list ap;
-    char *foo = charalloc(COLS - 3);
+    char *foo = charalloc(((COLS - 4) * mb_cur_max()) + 1);
     int ret;
 #ifndef DISABLE_TABCOMP
     bool list = FALSE;
@@ -2661,9 +2661,9 @@ int statusq(bool allow_tabs, const shortcut *s, const char *def,
     bottombars(s);
 
     va_start(ap, msg);
-    vsnprintf(foo, COLS - 4, msg, ap);
+    vsnprintf(foo, (COLS - 4) * mb_cur_max(), msg, ap);
     va_end(ap);
-    foo[COLS - 4] = '\0';
+    null_at(&foo, actual_x(foo, COLS - 4));
 
     ret = nanogetstr(allow_tabs, foo, def,
 #ifndef NANO_SMALL