diff options
| author | Mark Wielaard <mark@klomp.org> | 2026-05-28 19:01:41 +0200 |
|---|---|---|
| committer | Mark Wielaard <mark@klomp.org> | 2026-06-11 23:11:29 +0200 |
| commit | 4d3533d71c26968fd113cc8d50e6f0c48475b7a9 (patch) | |
| tree | 198797b340b1d54a338d229a10124095a85f88b3 | |
| parent | 6ab7670e74d3bada5bf9a7dc5af28a68064db151 (diff) | |
| download | bzip2-4d3533d71c26968fd113cc8d50e6f0c48475b7a9.tar.gz bzip2-4d3533d71c26968fd113cc8d50e6f0c48475b7a9.tar.bz2 bzip2-4d3533d71c26968fd113cc8d50e6f0c48475b7a9.zip | |
bzip2recover: Fix getc EOF errno handling
Posix getc requires setting errno on read error. But it isn't required
to clear errno when reporting EOF. So explicitly set errno to zero
before calling getc to make sure we see the difference between a read
error and a regular EOF.
| -rw-r--r-- | bzip2recover.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/bzip2recover.c b/bzip2recover.c index 4de1b6f..69fc86e 100644 --- a/bzip2recover.c +++ b/bzip2recover.c | |||
| @@ -202,7 +202,9 @@ static Int32 bsGetBit ( BitStream* bs ) | |||
| 202 | bs->buffLive --; | 202 | bs->buffLive --; |
| 203 | return ( ((bs->buffer) >> (bs->buffLive)) & 0x1 ); | 203 | return ( ((bs->buffer) >> (bs->buffLive)) & 0x1 ); |
| 204 | } else { | 204 | } else { |
| 205 | Int32 retVal = getc ( bs->handle ); | 205 | Int32 retVal; |
| 206 | errno = 0; | ||
| 207 | retVal = getc ( bs->handle ); | ||
| 206 | if ( retVal == EOF ) { | 208 | if ( retVal == EOF ) { |
| 207 | if (errno != 0) readError(); | 209 | if (errno != 0) readError(); |
| 208 | return 2; | 210 | return 2; |
