From: Jim Meyering Date: Thu, 16 Nov 2006 08:15:47 +0000 (+0100) Subject: Help valgrind see that there is no leak in dd.c. X-Git-Tag: COREUTILS-6_5~8 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=fc9b802e3d282875e2ad4bcafa954c0ce1c759f8;p=thirdparty%2Fcoreutils.git Help valgrind see that there is no leak in dd.c. * src/dd.c (dd_copy): Declare real_buf and real_obuf to be static, so we need not free them at all. This is easier than freeing both buffers at each of the early "return"s. --- diff --git a/ChangeLog b/ChangeLog index b789d67798..9bdf549fcb 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2006-11-16 Jim Meyering + + Help valgrind see that there is no leak in dd.c. + * src/dd.c (dd_copy): Declare real_buf and real_obuf to be static, + so we need not free them at all. This is easier than freeing + both buffers at each of the early "return"s. + 2006-11-15 Jim Meyering * .x-po-check: Exclude gl/ files. Otherwise, po-check would diff --git a/src/dd.c b/src/dd.c index dc71a032fd..f1dc474523 100644 --- a/src/dd.c +++ b/src/dd.c @@ -1377,8 +1377,10 @@ static int dd_copy (void) { char *ibuf, *bufstart; /* Input buffer. */ - char *real_buf; /* real buffer address before alignment */ - char *real_obuf; + /* These are declared static so that even though we don't free the + buffers, valgrind will recognize that there is no "real" leak. */ + static char *real_buf; /* real buffer address before alignment */ + static char *real_obuf; ssize_t nread; /* Bytes read in the current block. */ /* If nonzero, then the previously read block was partial and @@ -1598,9 +1600,6 @@ dd_copy (void) } } - free (real_buf); - free (real_obuf); - if ((conversions_mask & C_FDATASYNC) && fdatasync (STDOUT_FILENO) != 0) { if (errno != ENOSYS && errno != EINVAL)