diff options
author | Herbert Xu <herbert@gondor.apana.org.au> | 2018-05-19 02:39:46 +0800 |
---|---|---|
committer | Herbert Xu <herbert@gondor.apana.org.au> | 2018-05-28 17:12:23 +0800 |
commit | a9c4e4c9fc11cf1bd17d08e166405f7ab355a9f3 (patch) | |
tree | 32908ba144ab91e89b3d483b3a25c659ddad2a78 /src/memalloc.c | |
parent | jobs: Replace some uses of fmtstr with stpcpy/stpncpy (diff) | |
download | dash-a9c4e4c9fc11cf1bd17d08e166405f7ab355a9f3.tar.gz dash-a9c4e4c9fc11cf1bd17d08e166405f7ab355a9f3.zip |
memalloc: Add growstackto helper
This patch adds the growstackto helper which repeatedly calls growstackblock until the requested size is reached. Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Diffstat (limited to 'src/memalloc.c')
-rw-r--r-- | src/memalloc.c | 20 |
1 files changed, 9 insertions, 11 deletions
diff --git a/src/memalloc.c b/src/memalloc.c index d8e4413..9d1de74 100644 --- a/src/memalloc.c +++ b/src/memalloc.c @@ -265,6 +265,14 @@ growstackstr(void) return stackblock() + len; } +char *growstackto(size_t len) +{ + while (stackblocksize() < len) + growstackblock(); + + return stackblock(); +} + /* * Called from CHECKSTRSPACE. */ @@ -273,18 +281,8 @@ char * makestrspace(size_t newlen, char *p) { size_t len = p - stacknxt; - size_t size; - for (;;) { - size_t nleft; - - size = stackblocksize(); - nleft = size - len; - if (nleft >= newlen) - break; - growstackblock(); - } - return stackblock() + len; + return growstackto(len + newlen) + len; } char * |