diff options
author | Christian Neukirchen <chneukirchen@gmail.com> | 2015-12-10 18:14:16 +0100 |
---|---|---|
committer | Christian Neukirchen <chneukirchen@gmail.com> | 2015-12-10 18:14:16 +0100 |
commit | b43f0e6ee8d97b6490a1c0c9666b23133300677b (patch) | |
tree | d04051aace0ca491feab861318cc708cf6d99bfe | |
parent | a6b3434895a3f95a089b500070a6dbdaa22a7155 (diff) | |
download | xe-b43f0e6ee8d97b6490a1c0c9666b23133300677b.tar.gz xe-b43f0e6ee8d97b6490a1c0c9666b23133300677b.tar.xz xe-b43f0e6ee8d97b6490a1c0c9666b23133300677b.zip |
bump max arguments to 8192 and don't reallocate
-rw-r--r-- | xe.c | 12 |
1 files changed, 2 insertions, 10 deletions
diff --git a/xe.c b/xe.c index 05eed2a..652d22e 100644 --- a/xe.c +++ b/xe.c @@ -143,14 +143,6 @@ scanargs() char *s = buf; size_t i; - if (argslen + 1 >= argscap) { - while (argslen + 1 >= argscap) - argscap *= 2; - args = realloc(args, sizeof args[0] * argscap); - if (!args) - exit(1); - } - for (i = 0; i < argslen; i++) { args[i] = s; s += strlen(s) + 1; @@ -163,7 +155,7 @@ pusharg(const char *a) { size_t l = strlen(a) + 1; // including nul - if (buflen >= argmax - l) { + if (buflen >= argmax - l || argslen + 1 >= argscap) { push_overflowed = 1; return 0; } @@ -235,7 +227,7 @@ main(int argc, char *argv[]) bufcap = 4096; buf = malloc(bufcap); - argscap = 4096; + argscap = 8192; args = malloc(sizeof args[0] * argscap); if (!buf || !args) |