aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorantirez <antirez>2005-03-02 14:03:51 +0000
committerantirez <antirez>2005-03-02 14:03:51 +0000
commit23fc2772eb021846ecccd2966a9a3575a687100c (patch)
treea6092ac9fb994903ee4e6d11c743e9e0b119d306
parent6b156ff1140feb3212a3810f6fa53fd630c80c75 (diff)
downloadjimtcl-23fc2772eb021846ecccd2966a9a3575a687100c.zip
jimtcl-23fc2772eb021846ecccd2966a9a3575a687100c.tar.gz
jimtcl-23fc2772eb021846ecccd2966a9a3575a687100c.tar.bz2
fix for [ Bug #3513 ] Jim crashed after dict sugar substitution in string
-rw-r--r--jim.c17
1 files changed, 10 insertions, 7 deletions
diff --git a/jim.c b/jim.c
index 3d5aa43..572e91a 100644
--- a/jim.c
+++ b/jim.c
@@ -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]);