diff --git a/lib/libalpm/util.c b/lib/libalpm/util.c index 83160f00..e1f87142 100644 --- a/lib/libalpm/util.c +++ b/lib/libalpm/util.c @@ -1138,6 +1138,14 @@ 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; @@ -1193,13 +1201,6 @@ 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; - } } }