diff options
-rw-r--r-- | lib/libalpm/util.c | 4 | ||||
-rw-r--r-- | lib/libalpm/util.h | 3 |
2 files changed, 4 insertions, 3 deletions
diff --git a/lib/libalpm/util.c b/lib/libalpm/util.c index 996d7f4e..8fd7a100 100644 --- a/lib/libalpm/util.c +++ b/lib/libalpm/util.c @@ -1009,7 +1009,7 @@ int _alpm_archive_fgets(struct archive *a, struct archive_read_buffer *b) } if(eol) { - size_t len = (size_t)(eol - b->block_offset); + size_t len = b->real_line_size = (size_t)(eol - b->block_offset); memcpy(b->line_offset, b->block_offset, len); b->line_offset[len] = '\0'; b->block_offset = eol + 1; @@ -1017,7 +1017,7 @@ int _alpm_archive_fgets(struct archive *a, struct archive_read_buffer *b) return ARCHIVE_OK; } else { /* we've looked through the whole block but no newline, copy it */ - size_t len = (size_t)(b->block + b->block_size - b->block_offset); + size_t len = b->real_line_size = (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; diff --git a/lib/libalpm/util.h b/lib/libalpm/util.h index 87d51eaa..9bcd59e1 100644 --- a/lib/libalpm/util.h +++ b/lib/libalpm/util.h @@ -97,6 +97,7 @@ struct archive_read_buffer { char *line_offset; size_t line_size; size_t max_line_size; + size_t real_line_size; char *block; char *block_offset; @@ -108,7 +109,7 @@ struct archive_read_buffer { int _alpm_makepath(const char *path); int _alpm_makepath_mode(const char *path, mode_t mode); int _alpm_copyfile(const char *src, const char *dest); -size_t _alpm_strip_newline(char *str); +size_t _alpm_strip_newline(char *str, size_t len); int _alpm_open_archive(alpm_handle_t *handle, const char *path, struct stat *buf, struct archive **archive, alpm_errno_t error); |