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 /jim.c | |
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>
Diffstat (limited to 'jim.c')
-rw-r--r-- | jim.c | 8 |
1 files changed, 5 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)) { |