1
0
mirror of git://git.sv.gnu.org/coreutils.git synced 2026-04-20 18:56:39 +02:00

(dump): Correct loop-termination criterion.

Before, running `printf 1234| ./od --width=4 --read-bytes=4'
printed output for 8 bytes -- the last four were garbage.
This happened only when the dump limit, N, was specified (with
--read-bytes=N) and N was a multiple of bytes_per_block
(usually 16, but 4 in this example).  From Andreas Schwab.
This commit is contained in:
Jim Meyering
1995-07-07 04:46:03 +00:00
parent b9d3dc4101
commit 67718aff76

View File

@@ -1397,12 +1397,16 @@ dump ()
{
end_offset = n_bytes_to_skip + max_bytes_to_format;
n_bytes_read = 0;
while (current_offset < end_offset)
while (1)
{
size_t n_needed;
n_needed = MIN (end_offset - current_offset,
(off_t) bytes_per_block);
if (n_needed == 0)
{
n_bytes_read = 0;
break;
}
err |= read_block (n_needed, block[idx], &n_bytes_read);
if (n_bytes_read < bytes_per_block)
break;