Revert "_alpm_archive_fgets(): bail early if reached end of block"

This reverts commit 4dc21b965b.

Causes a segfault when reading some repos (gz compressed?)

Fixes #166.

Signed-off-by: Allan McRae <allan@archlinux.org>
This commit is contained in:
Allan McRae 2024-07-13 22:06:10 +10:00
parent 16a098a44e
commit cc0292a1ad

View File

@ -1227,14 +1227,6 @@ int _alpm_archive_fgets(struct archive *a, struct archive_read_buffer *b)
b->block_offset = b->block;
block_remaining = b->block_size;
if(block_remaining == 0) {
/* there was no new data, return what is left; ARCHIVE_EOF will be
* returned on next call */
b->line_offset[0] = '\0';
b->real_line_size = b->line_offset - b->line;
return ARCHIVE_OK;
}
/* error, cleanup */
if(b->ret < ARCHIVE_OK) {
goto cleanup;
@ -1290,6 +1282,13 @@ int _alpm_archive_fgets(struct archive *a, struct archive_read_buffer *b)
memcpy(b->line_offset, b->block_offset, len);
b->line_offset += len;
b->block_offset = b->block + b->block_size;
/* there was no new data, return what is left; saved ARCHIVE_EOF will be
* returned on next call */
if(len == 0) {
b->line_offset[0] = '\0';
b->real_line_size = b->line_offset - b->line;
return ARCHIVE_OK;
}
}
}