diff options
author | jilles <jilles@FreeBSD.org> | 2010-11-13 22:10:26 +0000 |
---|---|---|
committer | jilles <jilles@FreeBSD.org> | 2010-11-13 22:10:26 +0000 |
commit | f9809fb86293b0c9bd995106b9dfea480d4262b0 (patch) | |
tree | 9c55bb4d20783dc50915498ddb8f1a91ed301d90 /bin/sh/var.c | |
parent | 6eeacebcd780af4ecce3c12d3790ac693caec7cb (diff) | |
download | FreeBSD-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.c | 1 |
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 { |