X-Git-Url: https://git.distorted.org.uk/~mdw/mLib/blobdiff_plain/2be33c7cbc32a245d360be404a5cc190f4ee0029..adec5584e13c63662fda18915280ec026063b29d:/struct/dstr.c diff --git a/struct/dstr.c b/struct/dstr.c index 7e154ae..eee34cc 100644 --- a/struct/dstr.c +++ b/struct/dstr.c @@ -33,6 +33,7 @@ #include "alloc.h" #include "dstr.h" +#include "growbuf.h" /*----- Tunable constants -------------------------------------------------*/ @@ -91,29 +92,7 @@ void dstr_reset(dstr *d) { DRESET(d); } */ void dstr_ensure(dstr *d, size_t sz) -{ - size_t rq = d->len + sz; - size_t nsz; - - /* --- If we have enough space, just leave it --- */ - - if (rq <= d->sz) - return; - - /* --- Grow the buffer --- */ - - nsz = d->sz; - - if (nsz == 0) - nsz = (DSTR_INITSZ >> 1); - do nsz <<= 1; while (nsz < rq); - - if (d->buf) - d->buf = x_realloc(d->a, d->buf, nsz, d->sz); - else - d->buf = x_alloc(d->a, nsz); - d->sz = nsz; -} + { GROWBUF_EXTEND(d->a, d->buf, d->sz, d->len + sz, DSTR_INITSZ, 1); } /* --- @dstr_putc@ --- * *