summaryrefslogtreecommitdiff
path: root/src/dd.c
diff options
context:
space:
mode:
authorJim Meyering <jim@meyering.net>1999-07-27 14:36:36 +0000
committerJim Meyering <jim@meyering.net>1999-07-27 14:36:36 +0000
commiteb8c7c7924ae57651bac76cf32bd7ab2a03a591d (patch)
tree85109c9305cb009ebc21a30b9c4f20c4636cf492 /src/dd.c
parentbf94a704bc6a977f0ce25b1ab04a7123ec43169d (diff)
downloadcoreutils-eb8c7c7924ae57651bac76cf32bd7ab2a03a591d.tar.xz
(dd_copy): Free the right obuf.
Diffstat (limited to 'src/dd.c')
-rw-r--r--src/dd.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/src/dd.c b/src/dd.c
index d4978248c..dd473c070 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;
}