Index: generic/xotclStack.c =================================================================== diff -u -r26a70d9d268d8d827ec0ed631549fa6c5217d832 -rfa7bc22b99d66e75f67999d3b153d38f024c1be7 --- generic/xotclStack.c (.../xotclStack.c) (revision 26a70d9d268d8d827ec0ed631549fa6c5217d832) +++ generic/xotclStack.c (.../xotclStack.c) (revision fa7bc22b99d66e75f67999d3b153d38f024c1be7) @@ -65,6 +65,24 @@ return NULL; } +XOTclCallStackContent * +XOTclCallStackFindActiveFrame(Tcl_Interp *interp, int offset) { + XOTclCallStack *cs = &RUNTIME_STATE(interp)->cs; + register XOTclCallStackContent *csc; + + /* search for first active frame and set tcl frame pointers */ + for (csc=cs->top-offset; csc > cs->content; csc --) { + if (!(csc->frameType & XOTCL_CSC_TYPE_INACTIVE)) { + /* we found the highest active frame */ + return csc; + } + } + /* we could not find an active frame; called from toplevel? */ + return NULL; +} + + + static void CallStackClearCmdReferences(Tcl_Interp *interp, Tcl_Command cmd) { XOTclCallStack *cs = &RUNTIME_STATE(interp)->cs;