diff options
Diffstat (limited to 'generic/tclCmdIL.c')
| -rw-r--r-- | generic/tclCmdIL.c | 25 |
1 files changed, 24 insertions, 1 deletions
diff --git a/generic/tclCmdIL.c b/generic/tclCmdIL.c index aef0399..3198cc9 100644 --- a/generic/tclCmdIL.c +++ b/generic/tclCmdIL.c @@ -1160,8 +1160,31 @@ InfoFrameCmd( } corPtr = corPtr->callerEEPtr->corPtr; } - topLevel += (*cmdFramePtrPtr)->level; + if (iPtr->cmdFramePtr == NULL || *cmdFramePtrPtr == NULL) { + if (objc == 1) { + Tcl_SetObjResult(interp, Tcl_NewIntObj(1)); + } else { + if (TclGetIntFromObj(interp, objv[1], &level) != TCL_OK) { + code = TCL_ERROR; + } else { + Tcl_Obj *objs[2]; + /* + * TODO - "precompiled" is a lie. Chosen only because as documented + * no other fields in the dictionary need be returned. Should + * add a new type like "unknown" meaning no further information + * available. + * TODO - should we check that "level" is 1 ? + */ + TclNewLiteralStringObj(objs[0], "type"); + TclNewLiteralStringObj(objs[1], "precompiled"); + Tcl_SetObjResult(interp, Tcl_NewListObj(2, objs)); + } + } + return code; + } + + topLevel += (*cmdFramePtrPtr)->level; if (topLevel != iPtr->cmdFramePtr->level) { framePtr = iPtr->cmdFramePtr; while (framePtr) { |
