From ab683420df0c0f3c223181ddca5bb5a9927c153f Mon Sep 17 00:00:00 2001 From: tg Date: Thu, 19 Feb 2015 21:58:19 +0000 Subject: [PATCH] =?UTF-8?q?fix=20use=20of=20$*/$@=20in=20scalar=20context?= =?UTF-8?q?=20in=20[[=20=E2=80=A6=20]]=20and=20case;=20spotted=20by=20St?= =?UTF-8?q?=C3=A9phane=20Chazelas?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- exec.c | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/exec.c b/exec.c index 754ee92..0642917 100644 --- a/exec.c +++ b/exec.c @@ -23,7 +23,7 @@ #include "sh.h" -__RCSID("$MirOS: src/bin/mksh/exec.c,v 1.143 2015/02/06 10:56:46 tg Exp $"); +__RCSID("$MirOS: src/bin/mksh/exec.c,v 1.144 2015/02/19 21:58:19 tg Exp $"); #ifndef MKSH_DEFAULT_EXECSHELL #define MKSH_DEFAULT_EXECSHELL "/bin/sh" @@ -403,7 +403,7 @@ execute(struct op * volatile t, case TCASE: i = 0; - ccp = evalstr(t->str, DOTILDE); + ccp = evalstr(t->str, DOTILDE | DOSCALAR); for (t = t->left; t != NULL && t->type == TPAT; t = t->right) { for (ap = (const char **)t->vars; *ap; ap++) { if (i || ((s = evalstr(*ap, DOTILDE|DOPAT)) && @@ -1735,6 +1735,7 @@ static const char * dbteste_getopnd(Test_env *te, Test_op op, bool do_eval) { const char *s = *te->pos.wp; + int flags = DOTILDE | DOSCALAR; if (!s) return (NULL); @@ -1745,11 +1746,9 @@ dbteste_getopnd(Test_env *te, Test_op op, bool do_eval) return (null); if (op == TO_STEQL || op == TO_STNEQ) - s = evalstr(s, DOTILDE | DOPAT); - else - s = evalstr(s, DOTILDE); + flags |= DOPAT; - return (s); + return (evalstr(s, flags)); } static void