From 137ab99aa35a94ad1519b294906522ce108e3451 Mon Sep 17 00:00:00 2001 From: Rob Landley Date: Wed, 28 Apr 2021 03:07:49 -0500 Subject: Toysh don't free function arguments before function returns. --- toys/pending/sh.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/toys/pending/sh.c b/toys/pending/sh.c index d0e73dc8..3ae66f62 100644 --- a/toys/pending/sh.c +++ b/toys/pending/sh.c @@ -2327,6 +2327,10 @@ static struct sh_process *run_command(void) // Create new function context to hold local vars? if (funk != TT.funcslen || (envlen && pp->arg.c) || TT.ff->blk->pipe) { call_function(); + if (funk != TT.funcslen) { + TT.ff->delete = pp->delete; + pp->delete = 0; + } addvar(0, TT.ff); // function context (not source) so end_function deletes locals = 1; } -- cgit v1.2.3