Index: generic/nsfStack.c =================================================================== diff -u -r92ab630ebd3c1b907e3d0fdf97cc07914245c028 -r236b6dfeb5bc9a7fa81e596f9f5d0bb7dfa6ea9e --- generic/nsfStack.c (.../nsfStack.c) (revision 92ab630ebd3c1b907e3d0fdf97cc07914245c028) +++ generic/nsfStack.c (.../nsfStack.c) (revision 236b6dfeb5bc9a7fa81e596f9f5d0bb7dfa6ea9e) @@ -734,10 +734,10 @@ * *---------------------------------------------------------------------- */ -static Tcl_Obj* CallStackMethodPath(Tcl_Interp *interp, Tcl_CallFrame *framePtr) nonnull(1) nonnull(2); +static Tcl_Obj* CallStackMethodPath(Tcl_Interp *interp, int skip, Tcl_CallFrame *framePtr) nonnull(1) nonnull(3); static Tcl_Obj* -CallStackMethodPath(Tcl_Interp *interp, Tcl_CallFrame *framePtr) { +CallStackMethodPath(Tcl_Interp *interp, int skip, Tcl_CallFrame *framePtr) { int elements; Tcl_Obj *resultObj; Tcl_Obj *methodPathObj = Tcl_NewListObj(0, NULL); @@ -749,8 +749,10 @@ * Append all ensemble names to the specified list obj */ + while(skip--) {framePtr = Tcl_CallFrame_callerPtr(framePtr);} + for (/* Skipping the starting frame, assuming a "leaf" frame in an ensemble dispatch */ - framePtr = Tcl_CallFrame_callerPtr(framePtr), elements = 0; + elements = 0; Tcl_CallFrame_isProcCallFrame(framePtr) & (FRAME_IS_NSF_CMETHOD|FRAME_IS_NSF_METHOD); framePtr = Tcl_CallFrame_callerPtr(framePtr)) {