diff options
Diffstat (limited to 'shell')
-rw-r--r-- | shell/ash.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/shell/ash.c b/shell/ash.c index f7fc18f0d..3604af4fc 100644 --- a/shell/ash.c +++ b/shell/ash.c | |||
@@ -9539,7 +9539,7 @@ static const struct builtincmd builtintab[] = { | |||
9539 | #if ENABLE_FEATURE_SH_MATH | 9539 | #if ENABLE_FEATURE_SH_MATH |
9540 | { BUILTIN_NOSPEC "let" , letcmd }, | 9540 | { BUILTIN_NOSPEC "let" , letcmd }, |
9541 | #endif | 9541 | #endif |
9542 | { BUILTIN_ASSIGN "local" , localcmd }, | 9542 | { BUILTIN_SPEC_REG_ASSG "local" , localcmd }, |
9543 | #if ENABLE_ASH_PRINTF | 9543 | #if ENABLE_ASH_PRINTF |
9544 | { BUILTIN_REGULAR "printf" , printfcmd }, | 9544 | { BUILTIN_REGULAR "printf" , printfcmd }, |
9545 | #endif | 9545 | #endif |
@@ -9849,9 +9849,11 @@ evalcommand(union node *cmd, int flags) | |||
9849 | /* NOTREACHED */ | 9849 | /* NOTREACHED */ |
9850 | } /* default */ | 9850 | } /* default */ |
9851 | case CMDBUILTIN: | 9851 | case CMDBUILTIN: |
9852 | poplocalvars(spclbltin > 0 || argc == 0); | 9852 | if (spclbltin > 0 || argc == 0) { |
9853 | if (cmd_is_exec && argc > 1) | 9853 | poplocalvars(1); |
9854 | listsetvar(varlist.list, VEXPORT); | 9854 | if (cmd_is_exec && argc > 1) |
9855 | listsetvar(varlist.list, VEXPORT); | ||
9856 | } | ||
9855 | 9857 | ||
9856 | /* Tight loop with builtins only: | 9858 | /* Tight loop with builtins only: |
9857 | * "while kill -0 $child; do true; done" | 9859 | * "while kill -0 $child; do true; done" |