diff --git a/ChangeLog b/ChangeLog index 528db07f83909c377936e5af6ffb84257209884f..6312858db9566b1afc996bebc161c4af76218e14 100644 --- a/ChangeLog +++ b/ChangeLog @@ -13,6 +13,8 @@ CVS code main() - Fix nano not compiling with ENABLE_RCFILE and DISABLE_TABCOMP (David Benbennick). + help_init() + - Fix crashing in do_help when COLS < 23 (David Benbennick). - rcfile.c: colortoint() - Don't bomb after invalid color and print bad color name diff --git a/nano.c b/nano.c index e80ee1d5101107542e556ac7ecc3be61b4d06110..07217646e2c34ca4d94055a011e0a51365d1db32 100644 --- a/nano.c +++ b/nano.c @@ -389,9 +389,12 @@ void help_init(void) /* If we're on the main list, we also count the toggle help text. * Each line has "M-%c\t\t\t", which fills 24 columns, plus at most * COLS - 24 characters, plus '\n'.*/ - if (currshortcut == main_list) + if (currshortcut == main_list) { + size_t endislen = strlen(_("enable/disable")); + for (t = toggles; t != NULL; t = t->next) - allocsize += COLS - 17; + allocsize += 8 + strlen(t->desc) + endislen; + } #endif /* !NANO_SMALL */ /* help_text has been freed and set to NULL unless the user resized @@ -448,16 +451,16 @@ void help_init(void) *(ptr++) = '\t'; assert(s->help != NULL); - ptr += sprintf(ptr, "%.*s\n", COLS - 24, s->help); + ptr += sprintf(ptr, "%.*s\n", COLS > 24 ? COLS - 24 : 0, s->help); } #ifndef NANO_SMALL /* And the toggles... */ if (currshortcut == main_list) for (t = toggles; t != NULL; t = t->next) { - ptr += sprintf(ptr, "M-%c\t\t\t", t->val - 32); assert(t->desc != NULL); - ptr += sprintf(ptr, _("%.*s enable/disable\n"), COLS - 24, t->desc); + ptr += sprintf(ptr, "M-%c\t\t\t%s %s\n", t->val - 32, t->desc, + _("enable/disable")); } #endif /* !NANO_SMALL */