Index: generic/nsfStack.c =================================================================== diff -u -ra58654d068b1dbd5395f9d26884a70a95363c892 -r134e9484601ec4c2fb68787c129d85ce3c1f5ed2 --- generic/nsfStack.c (.../nsfStack.c) (revision a58654d068b1dbd5395f9d26884a70a95363c892) +++ generic/nsfStack.c (.../nsfStack.c) (revision 134e9484601ec4c2fb68787c129d85ce3c1f5ed2) @@ -418,6 +418,9 @@ if (Tcl_CallFrame_isProcCallFrame(varFramePtr) & (FRAME_IS_NSF_METHOD|FRAME_IS_NSF_CMETHOD)) { NsfCallStackContent *cscPtr = (NsfCallStackContent *)Tcl_CallFrame_clientData(varFramePtr); + /* + * A NSF method frame. + */ if ((cscPtr->flags & (NSF_CSC_CALL_IS_NEXT|NSF_CSC_CALL_IS_ENSEMBLE)) || (cscPtr->frameType & NSF_CSC_TYPE_INACTIVE)) { continue; @@ -429,8 +432,20 @@ if (framePtrPtr) *framePtrPtr = varFramePtr; return cscPtr; } + } else if (Tcl_CallFrame_isProcCallFrame(varFramePtr)) { + + /* + * A Tcl proc frame. + */ + if (offset) { + offset--; + } else if (Tcl_CallFrame_level(varFramePtr) < lvl) { + if (framePtrPtr) *framePtrPtr = varFramePtr; + return NULL; + } } } + if (framePtrPtr) *framePtrPtr = NULL; return NULL; }