summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lib/libalpm/util.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/lib/libalpm/util.c b/lib/libalpm/util.c
index c2b5d443..0196f3bb 100644
--- a/lib/libalpm/util.c
+++ b/lib/libalpm/util.c
@@ -1011,15 +1011,16 @@ int _alpm_archive_fgets(struct archive *a, struct archive_read_buffer *b)
}
if(eol) {
- size_t len = b->real_line_size = (size_t)(eol - b->block_offset);
+ size_t len = (size_t)(eol - b->block_offset);
memcpy(b->line_offset, b->block_offset, len);
b->line_offset[len] = '\0';
b->block_offset = eol + 1;
+ b->real_line_size = b->line_offset + len - b->line;
/* this is the main return point; from here you can read b->line */
return ARCHIVE_OK;
} else {
/* we've looked through the whole block but no newline, copy it */
- size_t len = b->real_line_size = (size_t)(b->block + b->block_size - b->block_offset);
+ size_t len = (size_t)(b->block + b->block_size - b->block_offset);
memcpy(b->line_offset, b->block_offset, len);
b->line_offset += len;
b->block_offset = b->block + b->block_size;
@@ -1027,6 +1028,7 @@ int _alpm_archive_fgets(struct archive *a, struct archive_read_buffer *b)
* returned on next call */
if(len == 0) {
b->line_offset[0] = '\0';
+ b->real_line_size = b->line_offset - b->line;
return ARCHIVE_OK;
}
}