diff options
author | antirez <antirez> | 2005-03-02 14:03:51 +0000 |
---|---|---|
committer | antirez <antirez> | 2005-03-02 14:03:51 +0000 |
commit | 23fc2772eb021846ecccd2966a9a3575a687100c (patch) | |
tree | a6092ac9fb994903ee4e6d11c743e9e0b119d306 /jim.c | |
parent | 6b156ff1140feb3212a3810f6fa53fd630c80c75 (diff) | |
download | jimtcl-23fc2772eb021846ecccd2966a9a3575a687100c.zip jimtcl-23fc2772eb021846ecccd2966a9a3575a687100c.tar.gz jimtcl-23fc2772eb021846ecccd2966a9a3575a687100c.tar.bz2 |
fix for [ Bug #3513 ] Jim crashed after dict sugar substitution in string
Diffstat (limited to 'jim.c')
-rw-r--r-- | jim.c | 17 |
1 files changed, 10 insertions, 7 deletions
@@ -6201,18 +6201,21 @@ int Jim_InterpolateTokens(Jim_Interp *interp, ScriptToken *token, intv[i] = token[i].objPtr; break; case JIM_TT_VAR: - intv[i] = Jim_GetVariable( - interp, - token[i].objPtr, - JIM_ERRMSG); + intv[i] = Jim_GetVariable(interp, token[i].objPtr, JIM_ERRMSG); + if (!intv[i]) { + retcode = JIM_ERR; + goto err; + } + break; + case JIM_TT_DICTSUGAR: + intv[i] = Jim_ExpandDictSugar(interp, token[i].objPtr); if (!intv[i]) { retcode = JIM_ERR; goto err; } break; case JIM_TT_CMD: - retcode = Jim_EvalObj(interp, - token[i].objPtr); + retcode = Jim_EvalObj(interp, token[i].objPtr); if (retcode != JIM_OK) goto err; intv[i] = Jim_GetResult(interp); @@ -6220,7 +6223,7 @@ int Jim_InterpolateTokens(Jim_Interp *interp, ScriptToken *token, default: Jim_Panic( "default token type reached " - "in Jim_EvalObj()."); + "in Jim_InterpolateTokens()."); break; } Jim_IncrRefCount(intv[i]); |