From c4daf5d49e5079a7f85265529a0d9b5ebebef729 Mon Sep 17 00:00:00 2001 From: David Lawrence Ramsey Date: Tue, 22 Mar 2005 02:51:01 +0000 Subject: [PATCH] in help_init(), when calculating allocsize, take multibyte characters 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 | 3 +++ src/nano.c | 8 ++++---- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index db3513f1..5d620d7a 100644 --- 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 diff --git a/src/nano.c b/src/nano.c index ad2f49f1..f610173d 100644 --- a/src/nano.c +++ b/src/nano.c @@ -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); -- 2.39.5