]> git.wh0rd.org Git - nano.git/commitdiff
in help_init(), when calculating allocsize, take multibyte characters
authorDavid Lawrence Ramsey <pooka109@gmail.com>
Tue, 22 Mar 2005 02:51:01 +0000 (02:51 +0000)
committerDavid Lawrence Ramsey <pooka109@gmail.com>
Tue, 22 Mar 2005 02:51:01 +0000 (02:51 +0000)
into account, and keep the column number limits consistent

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

ChangeLog
src/nano.c

index db3513f120c4eae4146f2676739817c391a6f6bb..5d620d7a8ee208d12b70db6782c9a53e78999aa5 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -7,6 +7,9 @@ CVS code -
   do_browser()
        - Rename variable lineno to fileline to avoid confusion. (DLR)
 - nano.c:
+  help_init()
+       - When calculating allocsize, take multibyte characters into
+         account, and keep the column number limits consistent. (DLR)
   print1opt()
        - Don't include longflag if HAVE_GETOPT_LONG isn't defined.
          Rename this function to print1opt_full(), leave out the
index ad2f49f1d658b4263c6fc839bd9a1781bc8d8089..f610173d86ad3d3de81e1fe5e1db283371efe84b 100644 (file)
@@ -264,7 +264,7 @@ void mouse_init(void)
  * help_text should be NULL initially. */
 void help_init(void)
 {
-    size_t allocsize = 1;      /* Space needed for help_text. */
+    size_t allocsize = 0;      /* Space needed for help_text. */
     const char *htx;           /* Untranslated help message. */
     char *ptr;
     const shortcut *s;
@@ -391,8 +391,8 @@ void help_init(void)
 
     /* The space needed for the shortcut lists, at most COLS characters,
      * plus '\n'. */
-    allocsize += (COLS < 21 ? 21 : COLS + 1) *
-       length_of_list(currshortcut);
+    allocsize += (COLS < 24 ? (24 * mb_cur_max()) :
+       ((COLS + 1) * mb_cur_max())) * length_of_list(currshortcut);
 
 #ifndef NANO_SMALL
     /* If we're on the main list, we also count the toggle help text.
@@ -411,7 +411,7 @@ void help_init(void)
     free(help_text);
 
     /* Allocate space for the help text. */
-    help_text = charalloc(allocsize);
+    help_text = charalloc(allocsize + 1);
 
     /* Now add the text we want. */
     strcpy(help_text, htx);