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:
8
src/od.c
8
src/od.c
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user