diff options
author | Steve Bennett <steveb@workware.net.au> | 2024-02-15 08:47:44 +1000 |
---|---|---|
committer | Steve Bennett <steveb@workware.net.au> | 2024-02-15 08:47:44 +1000 |
commit | d1612743af1e84d5eafd4f3ee5ac5ebeaab12d4e (patch) | |
tree | c270669e0d9d1bc3dcc8a55b03eeb3b6348cbf5e | |
parent | 67e32c82fa2248a70a02d0828b8785b9a25692b0 (diff) | |
download | jimtcl-d1612743af1e84d5eafd4f3ee5ac5ebeaab12d4e.zip jimtcl-d1612743af1e84d5eafd4f3ee5ac5ebeaab12d4e.tar.gz jimtcl-d1612743af1e84d5eafd4f3ee5ac5ebeaab12d4e.tar.bz2 |
subst: don't ignore vars after first failed var
If $ is followed by something that isn't a variable name,
previously all subsequent variables were being ignored.
Fixes #296
Signed-off-by: Steve Bennett <steveb@workware.net.au>
-rw-r--r-- | jim.c | 8 | ||||
-rw-r--r-- | tests/subst.test | 5 |
2 files changed, 10 insertions, 3 deletions
@@ -109,7 +109,7 @@ /* Maximum size of an integer */ #define JIM_INTEGER_SPACE 24 -#if defined(DEBUG_SHOW_SCRIPT) || defined(DEBUG_SHOW_SCRIPT_TOKENS) || defined(JIM_DEBUG_COMMAND) +#if defined(DEBUG_SHOW_SCRIPT) || defined(DEBUG_SHOW_SCRIPT_TOKENS) || defined(JIM_DEBUG_COMMAND) || defined(DEBUG_SHOW_SUBST) static const char *jim_tt_name(int type); #endif @@ -9273,7 +9273,7 @@ static int JimParseExprOperator(struct JimParserCtx *pc) return JIM_OK; } -#if (defined(DEBUG_SHOW_SCRIPT) || defined(DEBUG_SHOW_SCRIPT_TOKENS) || defined(JIM_DEBUG_COMMAND)) && !defined(JIM_BOOTSTRAP) +#if (defined(DEBUG_SHOW_SCRIPT) || defined(DEBUG_SHOW_SCRIPT_TOKENS) || defined(JIM_DEBUG_COMMAND) || defined(DEBUG_SHOW_SUBST)) && !defined(JIM_BOOTSTRAP) static const char *jim_tt_name(int type) { static const char * const tt_names[JIM_TT_EXPR_OP] = @@ -11736,7 +11736,9 @@ static void JimParseSubst(struct JimParserCtx *pc, int flags) } /* Not a var, so treat as a string */ pc->tstart = pc->p; - flags |= JIM_SUBST_NOVAR; + /* Skip this $ */ + pc->p++; + pc->len--; } while (pc->len) { if (*pc->p == '$' && !(flags & JIM_SUBST_NOVAR)) { diff --git a/tests/subst.test b/tests/subst.test index 5128a99..5450130 100644 --- a/tests/subst.test +++ b/tests/subst.test @@ -176,6 +176,11 @@ test subst-12.3 {variable inside [] with -noc} { subst -noc {x[join $a]y} } {x[join 1]y} +test subst-12.4 {variable after not variable} { + set a 1 + subst -noc {$\[ $a} +} {$[ 1} + # cleanup testreport |