From 0eab788437d42afb290637441f88542fc496c307 Mon Sep 17 00:00:00 2001 From: Jun-ichi Takimoto Date: Wed, 13 Sep 2023 09:59:42 +0900 Subject: 52122 + 52129: fix (#) parameter expansion flag Without the X flag, null string "" is substituted for bad math expression. --- Src/subst.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) (limited to 'Src/subst.c') diff --git a/Src/subst.c b/Src/subst.c index 14947ae36..d68159227 100644 --- a/Src/subst.c +++ b/Src/subst.c @@ -1489,11 +1489,18 @@ subst_parse_str(char **sp, int single, int err) static char * substevalchar(char *ptr) { - zlong ires = mathevali(ptr); + zlong ires; int len = 0; + int saved_errflag = errflag; - if (errflag) - return NULL; + errflag = 0; + ires = mathevali(ptr); + + if (errflag) { /* not a valid numerical expression */ + errflag |= saved_errflag; + return noerrs ? dupstring(""): NULL; + } + errflag |= saved_errflag; #ifdef MULTIBYTE_SUPPORT if (isset(MULTIBYTE) && ires > 127) { /* '\\' + 'U' + 8 bytes of character + '\0' */ -- cgit 1.4.1