Index: generic/xotcl.c =================================================================== diff -u -rd4e66214fc3323aea509676709c9b7ace64f0f50 -rcde16e9d87173d7ef9179ce40e10c2f1f708940e --- generic/xotcl.c (.../xotcl.c) (revision d4e66214fc3323aea509676709c9b7ace64f0f50) +++ generic/xotcl.c (.../xotcl.c) (revision cde16e9d87173d7ef9179ce40e10c2f1f708940e) @@ -5224,7 +5224,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 @@ -5290,12 +5289,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) @@ -5304,7 +5303,6 @@ fprintf(stderr, "---- csc alloc %p method %s\n", cscPtr, methodName); # endif #else - XOTclCallStackContent csc; cscPtr = &csc; #endif /* @@ -5326,7 +5324,6 @@ return result; } else if (cp) { - XOTclCallStackContent csc; cscPtr = &csc; /* some cmd with client data */ @@ -5369,6 +5366,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;