1
0
mirror of git://sourceware.org/git/lvm2.git synced 2025-01-03 05:18:29 +03:00

Avoid sending garbage to terminal in verbose mode.

When read in drain returned <0 value, terminal content has been trashed.
Remove unneeded  memset() and use whole buffer.
Free  readbuf before exit (valgrind).
This commit is contained in:
Zdenek Kabelac 2011-09-24 21:12:35 +00:00
parent a4b6b51757
commit d040c17000

View File

@ -1,5 +1,5 @@
/* /*
* Copyright (C) 2010 Red Hat, Inc. All rights reserved. * Copyright (C) 2010-2011 Red Hat, Inc. All rights reserved.
* *
* This file is part of LVM2. * This file is part of LVM2.
* *
@ -126,14 +126,13 @@ static void clear(void) {
static void drain(void) { static void drain(void) {
int sz; int sz;
char buf[2048]; char buf[2048];
memset(buf, 0, 2048);
while (1) { while (1) {
sz = read(fds[1], buf, 2047); sz = read(fds[1], buf, sizeof(buf));
if (verbose)
write(1, buf, sz);
if (sz <= 0) if (sz <= 0)
return; return;
if (verbose)
write(1, buf, sz);
if (readbuf_used + sz >= readbuf_sz) { if (readbuf_used + sz >= readbuf_sz) {
readbuf_sz = readbuf_sz ? 2 * readbuf_sz : 4096; readbuf_sz = readbuf_sz ? 2 * readbuf_sz : 4096;
readbuf = realloc(readbuf, readbuf_sz); readbuf = realloc(readbuf, readbuf_sz);
@ -291,5 +290,7 @@ int main(int argc, char **argv) {
return s.nfailed > 0 || die; return s.nfailed > 0 || die;
} }
free(readbuf);
return die; return die;
} }