@@ -1465,9 +1465,11 @@ IGzipReader_read_into_buffer(IGzipReader *self, uint8_t *out_buffer, size_t out_
1465
1465
size_t current_bytes_written = self -> state .next_out - out_buffer ;
1466
1466
bytes_written += current_bytes_written ;
1467
1467
self -> _pos += current_bytes_written ;
1468
+ out_buffer = self -> state .next_out ;
1469
+ out_buffer_size = self -> state .avail_out ;
1468
1470
current_pos = self -> state .next_in ;
1469
1471
if (!(self -> state .block_state == ISAL_BLOCK_FINISH )) {
1470
- if (bytes_written == 0 ) {
1472
+ if (self -> state . avail_out > 0 ) {
1471
1473
break ;
1472
1474
}
1473
1475
self -> current_pos = current_pos ;
@@ -1476,8 +1478,6 @@ IGzipReader_read_into_buffer(IGzipReader *self, uint8_t *out_buffer, size_t out_
1476
1478
current_pos -= bitbuffer_size (& self -> state );
1477
1479
// Block done check trailer.
1478
1480
self -> stream_phase = IGZIPREADER_TRAILER ;
1479
- self -> current_pos = current_pos ;
1480
- return bytes_written ;
1481
1481
case IGZIPREADER_TRAILER :
1482
1482
if (buffer_end - current_pos < 8 ) {
1483
1483
break ;
@@ -1520,7 +1520,8 @@ IGzipReader_read_into_buffer(IGzipReader *self, uint8_t *out_buffer, size_t out_
1520
1520
if (self -> all_bytes_read ) {
1521
1521
if (self -> stream_phase == IGZIPREADER_NULL_BYTES ) {
1522
1522
self -> _size = self -> _pos ;
1523
- return 0 ;
1523
+ self -> current_pos = current_pos ;
1524
+ return bytes_written ;
1524
1525
}
1525
1526
PyErr_SetString (PyExc_EOFError , EOF_MESSAGE );
1526
1527
return -1 ;
0 commit comments