From: Mark Wooding Date: Thu, 13 May 2021 15:24:32 +0000 (+0100) Subject: lib.c: Don't try pointer arithmetic on void pointers. X-Git-Url: https://git.distorted.org.uk/~mdw/runlisp/commitdiff_plain/acbcd7d7005baa17b888bd27df570171c3e2a51b lib.c: Don't try pointer arithmetic on void pointers. Here, `av->o' is a count of array slots, not bytes, so this is wrong: rewrite to use the correct kind of pointer. Fortunately, nothing actually uses this machinery. It's honestly a bit vexing that GCC lets me get away with this. Spotted by Coverity. --- diff --git a/lib.c b/lib.c index edb6e33..0d618f6 100644 --- a/lib.c +++ b/lib.c @@ -267,7 +267,7 @@ void argv_ensure(struct argv *av, size_t n) if (need <= av->sz) return; newsz = av->sz ? 2*av->sz : 8; while (newsz < need) newsz *= 2; - av->v = xrealloc(av->v - av->o, newsz*sizeof(char *)) + av->o; + av->v = xrealloc(av->v - av->o, newsz*sizeof(char *)); av->v += av->o; av->sz = newsz; }