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.
{
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;