char *
nalloc(pp, size, asize)
register char **pp;
{
char *malloc(), *realloc();
register char *p; int np;
for (;;) {
if ((p = pp[1]) + size <= pp[2])
return (pp[1] += size, p);
if (p = pp[0])
np = pp[1] - p, p = realloc(p, asize += pp[2] - p);
else
np = 0, p = malloc(asize);
if (p == 0)
return 0;
pp[0] = p;
pp[1] = p + np;
pp[2] = p + asize;
}
}