Date: Tue, 10 Jul 2018 00:19:53 +0000 (UTC) From: Daichi GOTO <daichi@FreeBSD.org> To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r336150 - head/usr.bin/top Message-ID: <201807100019.w6A0JrxD058279@repo.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: daichi Date: Tue Jul 10 00:19:52 2018 New Revision: 336150 URL: https://svnweb.freebsd.org/changeset/base/336150 Log: top(1): Fix the prompt bug and core dump problem in o / p mode that occurred by r336028 Reviewed by: cy Approved by: gnn (mentor) Differential Revision: https://reviews.freebsd.org/D16174 Modified: head/usr.bin/top/display.c Modified: head/usr.bin/top/display.c ============================================================================== --- head/usr.bin/top/display.c Tue Jul 10 00:18:12 2018 (r336149) +++ head/usr.bin/top/display.c Tue Jul 10 00:19:52 2018 (r336150) @@ -703,6 +703,7 @@ u_swap(int *stats) * respect to screen updates). */ +#define NEXT_MSG_ADDLEN 5 static char *next_msg = NULL; static int msglen = 0; /* Invariant: msglen is always the length of the message currently displayed @@ -711,7 +712,7 @@ static int msglen = 0; void i_message(void) { - next_msg = setup_buffer(next_msg, 5); + next_msg = setup_buffer(next_msg, NEXT_MSG_ADDLEN); while (lastline < y_message) { @@ -960,7 +961,8 @@ new_message(int type, const char *msgfmt, ...) va_start(args, msgfmt); /* first, format the message */ - vsnprintf(next_msg, strlen(next_msg), msgfmt, args); + vsnprintf(next_msg, setup_buffer_bufsiz + NEXT_MSG_ADDLEN, + msgfmt, args); va_end(args); @@ -1343,6 +1345,8 @@ i_uptime(struct timeval *bt, time_t *tod) } } +#define SETUPBUFFER_REQUIRED_ADDBUFSIZ 2 + static char * setup_buffer(char *buffer, int addlen) { @@ -1350,12 +1354,15 @@ setup_buffer(char *buffer, int addlen) if (NULL == buffer) { setup_buffer_bufsiz = screen_width; - b = calloc(setup_buffer_bufsiz + addlen, sizeof(char)); + b = calloc(setup_buffer_bufsiz + addlen + + SETUPBUFFER_REQUIRED_ADDBUFSIZ, + sizeof(char)); } else { if (screen_width > setup_buffer_bufsiz) { setup_buffer_bufsiz = screen_width; free(buffer); - b = calloc(setup_buffer_bufsiz + addlen, + b = calloc(setup_buffer_bufsiz + addlen + + SETUPBUFFER_REQUIRED_ADDBUFSIZ, sizeof(char)); } else { b = buffer;
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201807100019.w6A0JrxD058279>