]> git.wh0rd.org Git - nano.git/commitdiff
in help_init(), make sure we have enough memory in all cases when
authorDavid Lawrence Ramsey <pooka109@gmail.com>
Mon, 19 Jun 2006 15:35:35 +0000 (15:35 +0000)
committerDavid Lawrence Ramsey <pooka109@gmail.com>
Mon, 19 Jun 2006 15:35:35 +0000 (15:35 +0000)
displaying the shortcut and toggle lists; and wrap the shortcut list
help text, for consistency with the toggle help text

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

ChangeLog
src/help.c

index 0c9b39ad0b502e64dd9193e69ef4ab1569f9e47a..d2d946432c7e819b693de2943160e074c9bbc245 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -262,6 +262,10 @@ CVS code -
        - If one of the help strings ends in newlines followed by a
          space, move the space to the next help string to make it
          easier for translators to see. (Benno Schulenberg)
+       - Make sure we have enough memory in all cases when displaying
+         the shortcut and toggle lists. (DLR)
+       - Wrap the shortcut list help text, for consistency with the
+         toggle help text. (DLR, suggested by Benno Schulenberg)
   parse_help_input()
        - Add Space and - as aliases for PageDown and PageUp, for
          consistency with the file browser. (DLR, suggested by Benno
index 7bf3b0398af64decd126f8dae3c7ef0b8eb3361d..3f06b3546c2439d19d4ee19268dcf689388542c7 100644 (file)
@@ -383,22 +383,26 @@ void help_init(void)
     if (htx[2] != NULL)
        allocsize += strlen(htx[2]);
 
-    /* The space needed for the shortcut lists, at most COLS characters,
-     * plus one or two '\n's. */
-    allocsize += (COLS < 24 ? (24 * mb_cur_max()) :
-       ((COLS + 2) * mb_cur_max())) * length_of_list(currshortcut);
+    /* Count the shortcut help text.  Each entry has up to three keys,
+     * which fill 24 columns, plus translated text, plus one or two
+     * \n's.  Note that the translated text is left out if there are 24
+     * or fewer columns. */
+       for (s = currshortcut; s != NULL; s = s->next) {
+           allocsize += (24 * mb_cur_max()) + 1;
+           if (COLS >= 24)
+               allocsize += strlen(s->help) + 1;
+       }
 
 #ifndef NANO_TINY
     /* If we're on the main list, we also count the toggle help text.
      * Each entry has "M-%c\t\t\t", which fills 24 columns, plus a
      * space, plus translated text, plus one or two '\n's. */
     if (currshortcut == main_list) {
-       size_t endis_len = strlen(_("enable/disable"));
+       size_t endis_len = strlen(_("enable/disable")) + 1;
 
        for (t = toggles; t != NULL; t = t->next)
-           if (t->val != TOGGLE_NO_KEY)
-               allocsize += strlen(t->desc) + endis_len + 8;
-           allocsize++;
+           allocsize += (24 * mb_cur_max()) + strlen(t->desc) +
+               endis_len + 2;
     }
 #endif
 
@@ -526,14 +530,8 @@ void help_init(void)
            }
        }
 
-       if (COLS > 24) {
-           char *help_ptr = display_string(s->help, 0, COLS - 24,
-               FALSE);
-
-           ptr += sprintf(ptr, help_ptr);
-
-           free(help_ptr);
-       }
+       if (COLS > 24)
+           ptr += sprintf(ptr, "%s", s->help);
 
        ptr += sprintf(ptr, "\n");