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.
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;
}