Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Fix for [b9ecf3ce98], [uplevel] unnecessarily generates string representation. |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | core-8-branch |
Files: | files | file ages | folders |
SHA3-256: |
45569c70843466323a8aab1c59328c03 |
User & Date: | pooryorick 2020-09-19 14:10:44.335 |
References
2020-09-19
| ||
14:15 | • Ticket [b9ecf3ce98] uplevel $list, uplevel 1 $list and generation of string representations status still Open with 3 other changes artifact: bf67df259c user: pooryorick | |
Context
2020-09-19
| ||
16:48 | merge mark (safety) check-in: 7d49ac4d02 user: dgp tags: core-8-branch | |
14:33 | Fix for [b9ecf3ce98], [uplevel] unnecessarily generates string representation. check-in: d67c23f6d1 user: pooryorick tags: core-8-6-branch | |
14:10 | Fix for [b9ecf3ce98], [uplevel] unnecessarily generates string representation. check-in: 45569c7084 user: pooryorick tags: core-8-branch | |
2020-09-17
| ||
13:48 | Eliminate many usages of Tcl_NewObj (-> TclNewObj) and Tcl_NewIntObj (-> TclNewIntObj or Tcl_NewWide... check-in: ef22eb8ac3 user: jan.nijtmans tags: core-8-branch | |
Changes
Changes to generic/tclProc.c.
︙ | ︙ | |||
901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 | int objc, /* Number of arguments. */ Tcl_Obj *const objv[]) /* Argument objects. */ { Interp *iPtr = (Interp *) interp; CmdFrame *invoker = NULL; int word = 0; int result; CallFrame *savedVarFramePtr, *framePtr; Tcl_Obj *objPtr; if (objc < 2) { uplevelSyntax: Tcl_WrongNumArgs(interp, 1, objv, "?level? command ?arg ...?"); return TCL_ERROR; | > > > > > > > > > > > > > > > | > > > | > > > | | | | | | | | | | | | > > | 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 | int objc, /* Number of arguments. */ Tcl_Obj *const objv[]) /* Argument objects. */ { Interp *iPtr = (Interp *) interp; CmdFrame *invoker = NULL; int word = 0; int havelevel = 0; int result; CallFrame *savedVarFramePtr, *framePtr; Tcl_Obj *objPtr; if (objc < 2) { /* to do * simplify things by interpreting the argument as a command when there * is only one argument. This requires a TIP since currently a single * argument is interpreted as a level indicator if possible. */ uplevelSyntax: Tcl_WrongNumArgs(interp, 1, objv, "?level? command ?arg ...?"); return TCL_ERROR; } else if (objc == 2) { int status ,llength; status = Tcl_ListObjLength(interp, objv[1], &llength); if (status == TCL_OK && llength > 1) { /* the first argument can't interpreted as a level. Avoid * generating a string representation of the script. */ result = TclGetFrame(interp, "1", &framePtr); if (result == -1) { return TCL_ERROR; } havelevel = 1; objc -= 1; objv += 1; } } if (!havelevel) { /* * Find the level to use for executing the command. */ result = TclObjGetFrame(interp, objv[1], &framePtr); if (result == -1) { return TCL_ERROR; } objc -= result + 1; if (objc == 0) { goto uplevelSyntax; } objv += result + 1; } /* * Modify the interpreter state to execute in the given frame. */ savedVarFramePtr = iPtr->varFramePtr; iPtr->varFramePtr = framePtr; |
︙ | ︙ |
Changes to tests/uplevel.test.
︙ | ︙ | |||
300 301 302 303 304 305 306 | } foo moo } -cleanup { rename foo {} rename moo {} } -result {3 3 3} | | > > > > > > > > > > > > > > > > > | 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 | } foo moo } -cleanup { rename foo {} rename moo {} } -result {3 3 3} test uplevel-8.0 { string representation isn't generated when there is only one argument } -body { set res {} set script [list lindex 5] lappend res [apply {script { uplevel $script }} $script] lappend res [string match {value is a list *no string representation*} [ ::tcl::unsupported::representation $script]] } -cleanup { unset script unset res } -result {5 1} # cleanup ::tcltest::cleanupTests return # Local Variables: # mode: tcl # fill-column: 78 |
︙ | ︙ |