aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Wielaard <mark@klomp.org>2026-05-28 19:01:41 +0200
committerMark Wielaard <mark@klomp.org>2026-06-11 23:11:29 +0200
commit4d3533d71c26968fd113cc8d50e6f0c48475b7a9 (patch)
tree198797b340b1d54a338d229a10124095a85f88b3
parent6ab7670e74d3bada5bf9a7dc5af28a68064db151 (diff)
downloadbzip2-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.c4
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;