]> git.ipfire.org Git - thirdparty/coreutils.git/commitdiff
dd: also spell out size on memory exhaustion
authorPaul R. Eggert <eggert@cs.ucla.edu>
Tue, 13 Jul 2010 00:12:43 +0000 (17:12 -0700)
committerPaul R. Eggert <eggert@lnxsrv01.seas.ucla.edu>
Tue, 13 Jul 2010 00:13:13 +0000 (17:13 -0700)
* 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.

src/dd.c

index c9b8cbda4843778cad800c648758d0839c7e302b..ab8b84c22074f1c5e69073fa3fae05153aa65222 100644 (file)
--- 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