From e799b9a7fe08744f8c99557a067ecb442860b69c Mon Sep 17 00:00:00 2001 From: Mischa POSLAWSKY Date: Sun, 4 Mar 2007 06:32:54 +0100 Subject: [PATCH] allocate just the right amount of memory for title bar Should prevent truncation on terminals over 254 characters wide. --- curses.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/curses.c b/curses.c index bb3834e..11fac6e 100644 --- a/curses.c +++ b/curses.c @@ -202,7 +202,7 @@ void OutputTermStr(char *str, int flush) void DrawTitle(void) { int rows, cols; - char s[255]; + char *s; #ifdef HAVE_NCURSES attrset(A_REVERSE); @@ -210,12 +210,15 @@ void DrawTitle(void) standout(); #endif getmaxyx(stdscr, rows, cols); + s = malloc(cols + 1); sprintf(s, " " MSG_TITLE " %s", version_string); - memset(&s[strlen(s)], ' ', 254 - strlen(s)); - if (cols > strlen(MSG_TITLE) + 2 + strlen(version_string) + 1 + strlen(MSG_TITLESUB)) + const int titlelen = strlen(s); + memset(&s[titlelen], ' ', cols - strlen(MSG_TITLE)); // pad + if (cols > titlelen + 1 + strlen(MSG_TITLESUB)) memcpy(&s[cols - 1 - strlen(MSG_TITLESUB)], MSG_TITLESUB, sizeof(MSG_TITLESUB) - 1); memcpy(&s[cols], "\0", 1); mvaddstr(0, 0, s); + free(s); standend(); //normal text } -- 2.30.0