aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRon Yorston <rmy@pobox.com>2019-04-15 10:49:35 +0100
committerDenys Vlasenko <vda.linux@googlemail.com>2019-04-16 18:29:52 +0200
commitd96c69d87619e62a88cad1eeda795ac36b417c1c (patch)
treedaebd789c3a21eb49f1e3c798291f349b5cb031b
parenta81700bc0810b2cad59d450a380ece20a8eb96a4 (diff)
downloadbusybox-d96c69d87619e62a88cad1eeda795ac36b417c1c.tar.gz
ash: an unset dynamic variable should not be dynamic
Commit b28d4c346 (ash: [VAR] Move unsetvar functionality into setvareq) dropped the code that caused dynamic variables to lose their special properties when unset. Add it back again. function old new delta setvareq 346 360 +14 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 1/0 up/down: 14/0) Total: 14 bytes Signed-off-by: Ron Yorston <rmy@pobox.com> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
-rw-r--r--shell/ash.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/shell/ash.c b/shell/ash.c
index 34d5d6d68..255d57e62 100644
--- a/shell/ash.c
+++ b/shell/ash.c
@@ -2364,6 +2364,10 @@ setvareq(char *s, int flags)
}
flags |= vp->flags & ~(VTEXTFIXED|VSTACK|VNOSAVE|VUNSET);
+#if ENABLE_ASH_RANDOM_SUPPORT
+ if (flags & VUNSET)
+ flags &= ~VDYNAMIC;
+#endif
} else {
/* variable s is not found */
if (flags & VNOSET)