summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/compat/getline.c10
-rw-r--r--tests/fstree_from_file.c1
2 files changed, 11 insertions, 0 deletions
diff --git a/lib/compat/getline.c b/lib/compat/getline.c
index f330c6d..e63c50e 100644
--- a/lib/compat/getline.c
+++ b/lib/compat/getline.c
@@ -43,6 +43,16 @@ ssize_t getline(char **line, size_t *n, FILE *fp)
buffer[len++] = c;
} while (c != '\n');
+ if (len == cap) {
+ new = realloc(buffer, cap ? cap * 2 : 32);
+ if (new == NULL)
+ return -1;
+
+ buffer = new;
+ }
+
+ buffer[len] = '\0';
+
*line = buffer;
*n = len;
return len;
diff --git a/tests/fstree_from_file.c b/tests/fstree_from_file.c
index 4df0a4e..a0b6b2d 100644
--- a/tests/fstree_from_file.c
+++ b/tests/fstree_from_file.c
@@ -90,6 +90,7 @@ int main(void)
assert(n->uid == 2);
assert(n->gid == 3);
assert(strcmp(n->name, "slink") == 0);
+ fprintf(stderr, "'%s'\n", n->data.slink_target);
assert(strcmp(n->data.slink_target, "slinktarget") == 0);
n = n->next;