summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorandreask <andreask>2010-12-16 13:38:48 (GMT)
committerandreask <andreask>2010-12-16 13:38:48 (GMT)
commit5be660ed63626e584d77e8c41c883fcc16ddb0e0 (patch)
treeca7ba34358f709ddb3aeebe3eefd7b1129dd02b2
parente51db86160793e3fa0274e732014815de90aabab (diff)
downloadtcl-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.c5
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);