diff options
author | andreask <andreask> | 2010-12-16 13:38:48 (GMT) |
---|---|---|
committer | andreask <andreask> | 2010-12-16 13:38:48 (GMT) |
commit | 5be660ed63626e584d77e8c41c883fcc16ddb0e0 (patch) | |
tree | ca7ba34358f709ddb3aeebe3eefd7b1129dd02b2 | |
parent | e51db86160793e3fa0274e732014815de90aabab (diff) | |
download | tcl-activestate_nre_excised_variant_1_roll_forward.zip tcl-activestate_nre_excised_variant_1_roll_forward.tar.gz tcl-activestate_nre_excised_variant_1_roll_forward.tar.bz2 |
while 'info' is destroyed and becoms inaccessible after TclEvalObjEx.activestate_nre_excised_variant_1_roll_forward
-rw-r--r-- | generic/tclCmdMZ.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/generic/tclCmdMZ.c b/generic/tclCmdMZ.c index 7809902..0e0adca 100644 --- a/generic/tclCmdMZ.c +++ b/generic/tclCmdMZ.c @@ -4337,7 +4337,7 @@ TryPostBody( Tcl_ListObjGetElements(NULL, handlersObj, &numHandlers, &handlers); for (i=0 ; i<numHandlers ; i++) { - Tcl_Obj *handlerBodyObj; + Tcl_Obj *handlerBodyObj, *kindObj; Tcl_ListObjGetElements(NULL, handlers[i], &dummy, &info); if (!found) { @@ -4438,12 +4438,13 @@ TryPostBody( */ handlerBodyObj = info[4]; + kindObj = info[0]; Tcl_DecrRefCount(handlersObj); result = TclEvalObjEx(interp, handlerBodyObj, 0, ((Interp *) interp)->cmdFramePtr, 4*i + 5); - return TryPostHandler (objv, options, info[0], + return TryPostHandler (objv, options, kindObj, finallyObj == NULL ? 0 : objc - 1, interp, result); |