Index: generic/xotcl.c =================================================================== diff -u -rf588c8777ffaa66c942be57e8ce4a37c79359bc3 -rccc949c8c4ddea8f3a33006780a0c393a437bc52 --- generic/xotcl.c (.../xotcl.c) (revision f588c8777ffaa66c942be57e8ce4a37c79359bc3) +++ generic/xotcl.c (.../xotcl.c) (revision ccc949c8c4ddea8f3a33006780a0c393a437bc52) @@ -5291,7 +5291,6 @@ * but we have to check what happens in the finish target etc. */ XOTcl_PushFrameCsc(interp, obj, cscPtr); - /*fprintf(stderr, "pushing callframe for %s\n",methodName);*/ /*XOTcl_PushFrame(interp, obj);*/ } #endif @@ -5357,12 +5356,12 @@ Tcl_Command cmd, XOTclObject *obj, XOTclClass *cl, char *methodName, int frameType) { ClientData cp = Tcl_Command_objClientData(cmd); - XOTclCallStackContent *cscPtr; + XOTclCallStackContent csc, *cscPtr; register Tcl_ObjCmdProc *proc = Tcl_Command_objProc(cmd); int result; assert (!obj->teardown); - /*fprintf(stderr, "InvokeMethod method '%s' cmd %p cp=%p objc=%d\n",methodName,cmd, cp, objc);*/ + /*fprintf(stderr, "InvokeMethod method '%s' cmd %p cp=%p objc=%d\n", methodName, cmd, cp, objc);*/ if (proc == TclObjInterpProc) { #if defined(NRE) @@ -5371,7 +5370,6 @@ fprintf(stderr, "---- csc alloc %p method %s\n", cscPtr, methodName); # endif #else - XOTclCallStackContent csc; cscPtr = &csc; #endif /* @@ -5393,7 +5391,6 @@ return result; } else if (cp) { - XOTclCallStackContent csc; cscPtr = &csc; /* some cmd with client data */ @@ -5436,6 +5433,7 @@ } result = invokeCmdMethod(cp, interp, objc, objv, methodName, obj, cmd, cscPtr); if (cscPtr) { + /* make sure, that csc is still in the scope; therefore, csc is currently on the top scope of this function */ CallStackPop(interp, cscPtr); } return result;