From eb8c7c7924ae57651bac76cf32bd7ab2a03a591d Mon Sep 17 00:00:00 2001 From: Jim Meyering Date: Tue, 27 Jul 1999 14:36:36 +0000 Subject: [PATCH] (dd_copy): Free the right obuf. --- src/dd.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/dd.c b/src/dd.c index d4978248c3..dd473c0709 100644 --- a/src/dd.c +++ b/src/dd.c @@ -850,6 +850,7 @@ dd_copy (void) { unsigned char *ibuf, *bufstart; /* Input buffer. */ unsigned char *real_buf; /* real buffer address before alignment */ + unsigned char *real_obuf; int nread; /* Bytes read in the current block. */ int exit_status = 0; size_t page_size = getpagesize (); @@ -882,11 +883,12 @@ dd_copy (void) if (conversions_mask & C_TWOBUFS) { /* Page-align the output buffer, too. */ - obuf = (unsigned char *) xmalloc (output_blocksize + page_size - 1); - obuf = PTR_ALIGN (obuf, page_size); + real_obuf = (unsigned char *) xmalloc (output_blocksize + page_size - 1); + obuf = PTR_ALIGN (real_obuf, page_size); } else { + real_obuf = NULL; obuf = ibuf; } @@ -1034,8 +1036,8 @@ dd_copy (void) } free (real_buf); - if (obuf != ibuf) - free (obuf); + if (real_obuf) + free (real_obuf); return exit_status; } -- 2.47.3