aboutsummaryrefslogtreecommitdiff
path: root/jim.c
diff options
context:
space:
mode:
authorSteve Bennett <steveb@workware.net.au>2010-01-24 10:19:39 +1000
committerSteve Bennett <steveb@workware.net.au>2010-10-15 11:02:38 +1000
commitc4ec906079ac99fe52e8c4b27036ca0f2495848f (patch)
tree426e3d1895585bf2f03c5c099aa1da176f0aaa12 /jim.c
parentc7527a0ba18bccd34d9653f681bad80c25a2e9af (diff)
downloadjimtcl-c4ec906079ac99fe52e8c4b27036ca0f2495848f.zip
jimtcl-c4ec906079ac99fe52e8c4b27036ca0f2495848f.tar.gz
jimtcl-c4ec906079ac99fe52e8c4b27036ca0f2495848f.tar.bz2
Fix a couple of small bugs
*: Need to null terminate the buffer in Jim_EvalFile() *: If an object is used a subst and a script, a crash will result. set x abc subst $x eval $x ------------------------------------------------------------------------
Diffstat (limited to 'jim.c')
-rw-r--r--jim.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/jim.c b/jim.c
index 2bceb5d..cfb54c6 100644
--- a/jim.c
+++ b/jim.c
@@ -2880,10 +2880,9 @@ static void ScriptObjAddToken(Jim_Interp *interp, struct ScriptObj *script,
/* Add an integer into the command structure field of the script object. */
static void ScriptObjAddInt(struct ScriptObj *script, int val)
{
- script->csLen++;
script->cmdStruct = Jim_Realloc(script->cmdStruct,
- sizeof(int)*script->csLen);
- script->cmdStruct[script->csLen-1] = val;
+ sizeof(int)*(script->csLen+1));
+ script->cmdStruct[script->csLen++] = val;
}
/* Search a Jim_Obj contained in 'script' with the same stinrg repr.
@@ -8517,6 +8516,7 @@ int Jim_EvalFile(Jim_Interp *interp, const char *filename)
Jim_Free(buf);
return JIM_ERR;
}
+ buf[sb.st_size] = 0;
scriptObjPtr = Jim_NewStringObjNoAlloc(interp, buf, sb.st_size);
JimSetSourceInfo(interp, scriptObjPtr, filename, 1);
@@ -10751,8 +10751,10 @@ static int Jim_TimeCoreCommand(Jim_Interp *interp, int argc,
while (i-- > 0) {
int retval;
- if ((retval = Jim_EvalObj(interp, argv[1])) != JIM_OK)
+ retval = Jim_EvalObj(interp, argv[1]);
+ if (retval != JIM_OK) {
return retval;
+ }
}
elapsed = JimClock() - start;
sprintf(buf, fmt, elapsed/count);