aboutsummaryrefslogtreecommitdiffstats
path: root/src/util.c
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/util.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/util.c b/src/util.c
index 3e03b67..3fc3716 100644
--- a/src/util.c
+++ b/src/util.c
@@ -158,16 +158,18 @@ getfile(int fd, void *buffer, size_t *restrict ptr, size_t *restrict size)
{
char *restrict *restrict buf = buffer;
void *new;
+ size_t new_size;
ssize_t r;
for (;;) {
if (*ptr == *size) {
- if (!(new = realloc(*buf, *size << 1))) {
+ new_size = *size ? *size << 1 : BUFSIZ;
+ if (!(new = realloc(*buf, new_size))) {
errno = ENOMEM;
return -1;
}
*buf = new;
- *size <<= 1;
+ *size = new_size;
}
r = read(fd, *buf + *ptr, *size - *ptr);
if (r <= 0) {