Fix regression in top(1) after r344381, causing informational messages
to no longer be displayed. This was because the reimplementation of setup_buffer() did not copy the previous contents into any reallocated buffer. Reported by: James Wright <james.wright@jigsawdezign.com> PR: 236947 MFC after: 3 days
This commit is contained in:
parent
345c2b40ef
commit
a74a882b99
@ -1347,7 +1347,8 @@ i_uptime(struct timeval *bt, time_t *tod)
|
||||
static char *
|
||||
setup_buffer(char *buffer, int addlen)
|
||||
{
|
||||
size_t len;
|
||||
size_t len, old_len;
|
||||
char *new_buffer;
|
||||
|
||||
setup_buffer_bufsiz = screen_width;
|
||||
if (setup_buffer_bufsiz < SETUPBUFFER_MIN_SCREENWIDTH)
|
||||
@ -1355,13 +1356,18 @@ setup_buffer(char *buffer, int addlen)
|
||||
setup_buffer_bufsiz = SETUPBUFFER_MIN_SCREENWIDTH;
|
||||
}
|
||||
|
||||
free(buffer);
|
||||
len = setup_buffer_bufsiz + addlen + SETUPBUFFER_REQUIRED_ADDBUFSIZ;
|
||||
buffer = calloc(len, sizeof(char));
|
||||
if (buffer == NULL)
|
||||
new_buffer = calloc(len, sizeof(char));
|
||||
if (new_buffer == NULL)
|
||||
{
|
||||
errx(4, "can't allocate sufficient memory");
|
||||
}
|
||||
if (buffer != NULL)
|
||||
{
|
||||
old_len = strlen(buffer);
|
||||
memcpy(new_buffer, buffer, old_len < len - 1 ? old_len : len - 1);
|
||||
free(buffer);
|
||||
}
|
||||
|
||||
return buffer;
|
||||
return new_buffer;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user