diff options
author | jilles <jilles@FreeBSD.org> | 2017-05-14 20:17:50 +0000 |
---|---|---|
committer | jilles <jilles@FreeBSD.org> | 2017-05-14 20:17:50 +0000 |
commit | 79418433f6d86af1b6b965812d6f81b8efb5e81f (patch) | |
tree | 56eb4f3fa68d1c0f669bd7e4258d4bcfd7baab80 | |
parent | 8dad4589a874ed1c832c9c4aa0ac59a53fe24e8c (diff) | |
download | FreeBSD-src-79418433f6d86af1b6b965812d6f81b8efb5e81f.zip FreeBSD-src-79418433f6d86af1b6b965812d6f81b8efb5e81f.tar.gz |
MFC r317912: sh: Fix INTOFF leak after a builtin with different locale
settings.
After executing a builtin with different locale settings such as
LC_ALL=C true
SIGINT handling was left disabled indefinitely.
-rw-r--r-- | bin/sh/tests/builtins/Makefile | 1 | ||||
-rw-r--r-- | bin/sh/tests/builtins/locale2.0 | 5 | ||||
-rw-r--r-- | bin/sh/var.c | 2 |
3 files changed, 7 insertions, 1 deletions
diff --git a/bin/sh/tests/builtins/Makefile b/bin/sh/tests/builtins/Makefile index bd23550..5a359f9 100644 --- a/bin/sh/tests/builtins/Makefile +++ b/bin/sh/tests/builtins/Makefile @@ -117,6 +117,7 @@ ${PACKAGE}FILES+= local7.0 .if ${MK_NLS} != "no" ${PACKAGE}FILES+= locale1.0 .endif +${PACKAGE}FILES+= locale2.0 ${PACKAGE}FILES+= printf1.0 ${PACKAGE}FILES+= printf2.0 ${PACKAGE}FILES+= printf3.0 diff --git a/bin/sh/tests/builtins/locale2.0 b/bin/sh/tests/builtins/locale2.0 new file mode 100644 index 0000000..86dd237 --- /dev/null +++ b/bin/sh/tests/builtins/locale2.0 @@ -0,0 +1,5 @@ +# $FreeBSD$ + +$SH -c 'LC_ALL=C true; kill -INT $$; echo continued' +r=$? +[ "$r" -gt 128 ] && [ "$(kill -l "$r")" = INT ] diff --git a/bin/sh/var.c b/bin/sh/var.c index 03d529b..882db9e 100644 --- a/bin/sh/var.c +++ b/bin/sh/var.c @@ -512,7 +512,7 @@ bltinunsetlocale(void) if (localevar(cmdenviron->args[i])) { setlocale(LC_ALL, ""); updatecharset(); - return; + break; } } INTON; |