diff options
author | Steve Bennett <steveb@workware.net.au> | 2010-01-24 10:19:39 +1000 |
---|---|---|
committer | Steve Bennett <steveb@workware.net.au> | 2010-10-15 11:02:38 +1000 |
commit | c4ec906079ac99fe52e8c4b27036ca0f2495848f (patch) | |
tree | 426e3d1895585bf2f03c5c099aa1da176f0aaa12 /jim.c | |
parent | c7527a0ba18bccd34d9653f681bad80c25a2e9af (diff) | |
download | jimtcl-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.c | 10 |
1 files changed, 6 insertions, 4 deletions
@@ -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); |