summaryrefslogtreecommitdiffstats
path: root/bin/sh/var.c
diff options
context:
space:
mode:
authorjilles <jilles@FreeBSD.org>2010-11-13 22:10:26 +0000
committerjilles <jilles@FreeBSD.org>2010-11-13 22:10:26 +0000
commitf9809fb86293b0c9bd995106b9dfea480d4262b0 (patch)
tree9c55bb4d20783dc50915498ddb8f1a91ed301d90 /bin/sh/var.c
parent6eeacebcd780af4ecce3c12d3790ac693caec7cb (diff)
downloadFreeBSD-src-f9809fb86293b0c9bd995106b9dfea480d4262b0.zip
FreeBSD-src-f9809fb86293b0c9bd995106b9dfea480d4262b0.tar.gz
sh: Do the additional actions if 'local -' restore changes -i/-m/-E/-V.
Example: f() { local -; set +m; }; f caused failure to execute external programs because the job control tty fd was not opened.
Diffstat (limited to 'bin/sh/var.c')
-rw-r--r--bin/sh/var.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/bin/sh/var.c b/bin/sh/var.c
index f5ea775..3bba368 100644
--- a/bin/sh/var.c
+++ b/bin/sh/var.c
@@ -805,6 +805,7 @@ poplocalvars(void)
if (vp == NULL) { /* $- saved */
memcpy(optlist, lvp->text, sizeof optlist);
ckfree(lvp->text);
+ optschanged();
} else if ((lvp->flags & (VUNSET|VSTRFIXED)) == VUNSET) {
(void)unsetvar(vp->text);
} else {
OpenPOWER on IntegriCloud