summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul R. Eggert <eggert@cs.ucla.edu>2010-07-12 17:12:43 -0700
committerPaul R. Eggert <eggert@lnxsrv01.seas.ucla.edu>2010-07-12 17:13:13 -0700
commit335b59b9625758f92ba82cd6b7138f7423df60ef (patch)
treed896d35bdad0452f24fc6aac5cd685203c46b036
parente5ca54448e50c117cf2d7d3491a2bc2f48ae0715 (diff)
downloadcoreutils-335b59b9625758f92ba82cd6b7138f7423df60ef.tar.xz
dd: also spell out size on memory exhaustion
* src/dd.c (dd_copy): Use requested blocksize (not adjusted) in diagnostic, to forestall user complaints that the numbers don't match exactly. Report both exact and human-readable sizes, using a message format that is consistent with both "BBBB bytes (N XB) copied" in dd.c and "memory exhausted" in lib/xmalloc.c.
-rw-r--r--src/dd.c14
1 files changed, 6 insertions, 8 deletions
diff --git a/src/dd.c b/src/dd.c
index c9b8cbda4..ab8b84c22 100644
--- a/src/dd.c
+++ b/src/dd.c
@@ -1603,12 +1603,11 @@ dd_copy (void)
It is necessary when accessing raw (i.e. character special) disk
devices on Unixware or other SVR4-derived system. */
- size_t sz = input_blocksize + INPUT_BLOCK_SLOP;
- real_buf = malloc (sz);
+ real_buf = malloc (input_blocksize + INPUT_BLOCK_SLOP);
if (!real_buf)
error (EXIT_FAILURE, 0,
- _("failed to allocate an input buffer of size %s"),
- human_size (sz));
+ _("memory exhausted by input buffer of size %zu bytes (%s)"),
+ input_blocksize, human_size (input_blocksize));
ibuf = real_buf;
ibuf += SWAB_ALIGN_OFFSET; /* allow space for swab */
@@ -1618,12 +1617,11 @@ dd_copy (void)
if (conversions_mask & C_TWOBUFS)
{
/* Page-align the output buffer, too. */
- sz = output_blocksize + OUTPUT_BLOCK_SLOP;
- real_obuf = malloc (sz);
+ real_obuf = malloc (output_blocksize + OUTPUT_BLOCK_SLOP);
if (!real_obuf)
error (EXIT_FAILURE, 0,
- _("failed to allocate an output buffer of size %s"),
- human_size (sz));
+ _("memory exhausted by output buffer of size %zu bytes (%s)"),
+ output_blocksize, human_size (output_blocksize));
obuf = ptr_align (real_obuf, page_size);
}
else