diff options
author | jan.nijtmans <nijtmans@users.sourceforge.net> | 2013-08-14 14:40:40 (GMT) |
---|---|---|
committer | jan.nijtmans <nijtmans@users.sourceforge.net> | 2013-08-14 14:40:40 (GMT) |
commit | c4aa43f6610f7f0f1001cdec79b606032f2a146a (patch) | |
tree | 94e91ae3890b4925326560afe5560319949c4c6d /generic/tclCmdIL.c | |
parent | cb022ef5bd73c2dcf81758815c2b7812e33cb7f5 (diff) | |
parent | 34f83405d31dbe1b95f1608c91f483f9170c4d23 (diff) | |
download | tcl-c4aa43f6610f7f0f1001cdec79b606032f2a146a.zip tcl-c4aa43f6610f7f0f1001cdec79b606032f2a146a.tar.gz tcl-c4aa43f6610f7f0f1001cdec79b606032f2a146a.tar.bz2 |
merge trunk
Diffstat (limited to 'generic/tclCmdIL.c')
-rw-r--r-- | generic/tclCmdIL.c | 34 |
1 files changed, 8 insertions, 26 deletions
diff --git a/generic/tclCmdIL.c b/generic/tclCmdIL.c index 01c24fc..a4c422e 100644 --- a/generic/tclCmdIL.c +++ b/generic/tclCmdIL.c @@ -1302,28 +1302,12 @@ TclInfoFrame( */ ADD_PAIR("type", Tcl_NewStringObj(typeString[framePtr->type], -1)); - ADD_PAIR("line", Tcl_NewIntObj(framePtr->line[0])); - ADD_PAIR("cmd", Tcl_NewStringObj(framePtr->cmd.str.cmd, - framePtr->cmd.str.len)); - break; - - case TCL_LOCATION_EVAL_LIST: - /* - * List optimized evaluation. Type, line, cmd, the latter through - * listPtr, possibly a frame. - */ - - ADD_PAIR("type", Tcl_NewStringObj(typeString[framePtr->type], -1)); - ADD_PAIR("line", Tcl_NewIntObj(1)); - - /* - * We put a duplicate of the command list obj into the result to - * ensure that the 'pure List'-property of the command itself is not - * destroyed. Otherwise the query here would disable the list - * optimization path in Tcl_EvalObjEx. - */ - - ADD_PAIR("cmd", Tcl_DuplicateObj(framePtr->cmd.listPtr)); + if (framePtr->line) { + ADD_PAIR("line", Tcl_NewIntObj(framePtr->line[0])); + } else { + ADD_PAIR("line", Tcl_NewIntObj(1)); + } + ADD_PAIR("cmd", TclGetSourceFromFrame(framePtr, 0, NULL)); break; case TCL_LOCATION_PREBC: @@ -1371,8 +1355,7 @@ TclInfoFrame( Tcl_DecrRefCount(fPtr->data.eval.path); } - ADD_PAIR("cmd", - Tcl_NewStringObj(fPtr->cmd.str.cmd, fPtr->cmd.str.len)); + ADD_PAIR("cmd", TclGetSourceFromFrame(fPtr, 0, NULL)); TclStackFree(interp, fPtr); break; } @@ -1391,8 +1374,7 @@ TclInfoFrame( * the result list object. */ - ADD_PAIR("cmd", Tcl_NewStringObj(framePtr->cmd.str.cmd, - framePtr->cmd.str.len)); + ADD_PAIR("cmd", TclGetSourceFromFrame(framePtr, 0, NULL)); break; case TCL_LOCATION_PROC: |