aboutsummaryrefslogtreecommitdiff
path: root/files.c
diff options
context:
space:
mode:
Diffstat (limited to 'files.c')
-rw-r--r--files.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/files.c b/files.c
index 9eeec3d..d010cc0 100644
--- a/files.c
+++ b/files.c
@@ -38,8 +38,14 @@ static void populate_lines(file_t *f, size_t len)
if (n >= linecap)
f->lines = xrealloc(f->lines, sizeof(const char*)*(linecap *= 2));
f->lines[n] = p;
- p = strchr(p, '\n');
- if (p) ++p;
+ do {
+ char *nl = strchr(p, '\n');
+ if (nl) {
+ p = nl+1;
+ break;
+ } else if (p < &f->memory[len])
+ p += strlen(p)+1;
+ } while (p < &f->memory[len]);
}
}