diff --git a/libc/stdio/vcscanf.c b/libc/stdio/vcscanf.c index e0b24bfd1..49f2bed59 100644 --- a/libc/stdio/vcscanf.c +++ b/libc/stdio/vcscanf.c @@ -34,6 +34,21 @@ c; \ }) +#define BUFFER_GROW 48 +#define BUFFER \ + ({ \ + int c = READ; \ + if (bufcur >= bufsize - 1) { \ + bufsize = bufsize + BUFFER_GROW; \ + buf = realloc(buf, bufsize); \ + } \ + if (c != -1) { \ + buf[bufcur++] = c; \ + buf[bufcur] = '\0'; \ + } \ + c; \ + }) + /** * String / file / stream decoder. *