diff options
author | Herbert Xu <herbert@gondor.apana.org.au> | 2007-10-06 00:45:52 +0800 |
---|---|---|
committer | Herbert Xu <herbert@gondor.apana.org.au> | 2007-10-06 00:45:52 +0800 |
commit | 8e633ab936625fa1e897c5c062f70705996e7b85 (patch) | |
tree | 3e2bcf12e7584983749e6616123f8e36096b8e86 /src/expand.c | |
parent | [MEMALLOC] Made grabstackblock an inline wrapper for stalloc (diff) | |
download | dash-8e633ab936625fa1e897c5c062f70705996e7b85.tar.gz dash-8e633ab936625fa1e897c5c062f70705996e7b85.zip |
[MEMALLOC] Add pushstackmark
This patch gets rid of the stack mark tracking hack by allocating a little bit of stack memory if we're at risk of planting a stack mark which may be grown later. To do this a new function pushstackmark is added which lets the user pick a bigger amount to allocate since some users do that anyway after setting a stack mark.
Diffstat (limited to '')
-rw-r--r-- | src/expand.c | 6 |
1 files changed, 2 insertions, 4 deletions
diff --git a/src/expand.c b/src/expand.c index 98ad718..e3e5d8f 100644 --- a/src/expand.c +++ b/src/expand.c @@ -546,10 +546,8 @@ expbackq(union node *cmd, int flag) struct stackmark smark; INTOFF; - setstackmark(&smark); - dest = expdest; - startloc = dest - (char *)stackblock(); - grabstackstr(dest); + startloc = expdest - (char *)stackblock(); + pushstackmark(&smark, startloc); evalbackcmd(cmd, (struct backcmd *) &in); popstackmark(&smark); |