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:
parent
16a098a44e
commit
cc0292a1ad
1 changed files with 7 additions and 8 deletions
|
@ -1227,14 +1227,6 @@ int _alpm_archive_fgets(struct archive *a, struct archive_read_buffer *b)
|
||||||
b->block_offset = b->block;
|
b->block_offset = b->block;
|
||||||
block_remaining = b->block_size;
|
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 */
|
/* error, cleanup */
|
||||||
if(b->ret < ARCHIVE_OK) {
|
if(b->ret < ARCHIVE_OK) {
|
||||||
goto cleanup;
|
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);
|
memcpy(b->line_offset, b->block_offset, len);
|
||||||
b->line_offset += len;
|
b->line_offset += len;
|
||||||
b->block_offset = b->block + b->block_size;
|
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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue