Artifact
ca3291e8620365c1dff17545a43c1ff776e70b1b:
Attachment "958222-supp.patch" to
ticket [958222ffff]
added by
dgp
2006-02-23 00:39:53.
0000: 49 6e 64 65 78 3a 20 67 65 6e 65 72 69 63 2f 74 Index: generic/t
0010: 63 6c 42 61 73 69 63 2e 63 0a 3d 3d 3d 3d 3d 3d clBasic.c.======
0020: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0030: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0040: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0050: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 52 43 =============.RC
0060: 53 20 66 69 6c 65 3a 20 2f 63 76 73 72 6f 6f 74 S file: /cvsroot
0070: 2f 74 63 6c 2f 74 63 6c 2f 67 65 6e 65 72 69 63 /tcl/tcl/generic
0080: 2f 74 63 6c 42 61 73 69 63 2e 63 2c 76 0a 72 65 /tclBasic.c,v.re
0090: 74 72 69 65 76 69 6e 67 20 72 65 76 69 73 69 6f trieving revisio
00a0: 6e 20 31 2e 31 39 30 0a 64 69 66 66 20 2d 75 20 n 1.190.diff -u
00b0: 2d 72 31 2e 31 39 30 20 74 63 6c 42 61 73 69 63 -r1.190 tclBasic
00c0: 2e 63 0a 2d 2d 2d 20 67 65 6e 65 72 69 63 2f 74 .c.--- generic/t
00d0: 63 6c 42 61 73 69 63 2e 63 09 38 20 46 65 62 20 clBasic.c.8 Feb
00e0: 32 30 30 36 20 32 31 3a 34 31 3a 32 37 20 2d 30 2006 21:41:27 -0
00f0: 30 30 30 09 31 2e 31 39 30 0a 2b 2b 2b 20 67 65 000.1.190.+++ ge
0100: 6e 65 72 69 63 2f 74 63 6c 42 61 73 69 63 2e 63 neric/tclBasic.c
0110: 09 32 32 20 46 65 62 20 32 30 30 36 20 31 37 3a .22 Feb 2006 17:
0120: 32 37 3a 32 35 20 2d 30 30 30 30 0a 40 40 20 2d 27:25 -0000.@@ -
0130: 33 32 34 30 2c 31 33 20 2b 33 32 34 30 2c 31 30 3240,13 +3240,10
0140: 20 40 40 0a 20 20 20 20 20 69 6e 74 20 69 3b 0a @@. int i;.
0150: 20 20 20 20 20 43 61 6c 6c 46 72 61 6d 65 20 2a CallFrame *
0160: 73 61 76 65 64 56 61 72 46 72 61 6d 65 50 74 72 savedVarFramePtr
0170: 3b 2f 2a 20 53 61 76 65 73 20 6f 6c 64 20 63 6f ;/* Saves old co
0180: 70 79 20 6f 66 20 69 50 74 72 2d 3e 76 61 72 46 py of iPtr->varF
0190: 72 61 6d 65 50 74 72 20 69 6e 20 63 61 73 65 0a ramePtr in case.
01a0: 20 09 09 09 09 20 2a 20 54 43 4c 5f 45 56 41 4c .... * TCL_EVAL
01b0: 5f 47 4c 4f 42 41 4c 20 77 61 73 20 73 65 74 2e _GLOBAL was set.
01c0: 20 2a 2f 0a 2d 20 20 20 20 4e 61 6d 65 73 70 61 */.- Namespa
01d0: 63 65 20 2a 63 75 72 72 4e 73 50 74 72 20 3d 20 ce *currNsPtr =
01e0: 4e 55 4c 4c 3b 2f 2a 20 55 73 65 64 20 74 6f 20 NULL;/* Used to
01f0: 63 68 65 63 6b 20 66 6f 72 20 61 6e 64 20 69 6e check for and in
0200: 76 6f 6b 65 20 61 6e 79 0a 2d 20 20 20 20 20 20 voke any.-
0210: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0220: 20 20 20 20 20 20 20 20 20 20 20 2a 20 72 65 67 * reg
0230: 69 73 74 65 72 65 64 20 75 6e 6b 6e 6f 77 6e 20 istered unknown
0240: 63 6f 6d 6d 61 6e 64 0a 2d 20 20 20 20 20 20 20 command.-
0250: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0260: 20 20 20 20 20 20 20 20 20 20 2a 20 68 61 6e 64 * hand
0270: 6c 65 72 20 66 6f 72 20 74 68 65 20 63 75 72 72 ler for the curr
0280: 65 6e 74 20 6e 61 6d 65 73 70 61 63 65 0a 2d 20 ent namespace.-
0290: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
02a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
02b0: 2a 20 28 73 65 65 20 54 49 50 20 31 38 31 29 2e * (see TIP 181).
02c0: 20 2a 2f 0a 20 20 20 20 20 69 6e 74 20 63 6f 64 */. int cod
02d0: 65 20 3d 20 54 43 4c 5f 4f 4b 3b 0a 20 20 20 20 e = TCL_OK;.
02e0: 20 69 6e 74 20 74 72 61 63 65 43 6f 64 65 20 3d int traceCode =
02f0: 20 54 43 4c 5f 4f 4b 3b 0a 20 20 20 20 20 69 6e TCL_OK;. in
0300: 74 20 63 68 65 63 6b 54 72 61 63 65 73 20 3d 20 t checkTraces =
0310: 31 3b 0a 2b 20 20 20 20 69 6e 74 20 63 6d 64 45 1;.+ int cmdE
0320: 70 6f 63 68 3b 0a 20 0a 20 20 20 20 20 69 66 20 poch;. . if
0330: 28 54 63 6c 49 6e 74 65 72 70 52 65 61 64 79 28 (TclInterpReady(
0340: 69 6e 74 65 72 70 29 20 3d 3d 20 54 43 4c 5f 45 interp) == TCL_E
0350: 52 52 4f 52 29 20 7b 0a 20 09 72 65 74 75 72 6e RROR) {. .return
0360: 20 54 43 4c 5f 45 52 52 4f 52 3b 0a 40 40 20 2d TCL_ERROR;.@@ -
0370: 33 32 37 33 2c 36 31 20 2b 33 32 37 30 2c 35 32 3273,61 +3270,52
0380: 20 40 40 0a 20 0a 20 20 20 72 65 70 61 72 73 65 @@. . reparse
0390: 42 65 63 61 75 73 65 4f 66 54 72 61 63 65 73 3a BecauseOfTraces:
03a0: 0a 20 20 20 20 20 73 61 76 65 64 56 61 72 46 72 . savedVarFr
03b0: 61 6d 65 50 74 72 20 3d 20 69 50 74 72 2d 3e 76 amePtr = iPtr->v
03c0: 61 72 46 72 61 6d 65 50 74 72 3b 0a 2b 20 20 20 arFramePtr;.+
03d0: 20 2f 2a 0a 2b 20 20 20 20 20 2a 20 42 6f 74 68 /*.+ * Both
03e0: 20 49 4e 56 4f 4b 45 20 61 6e 64 20 47 4c 4f 42 INVOKE and GLOB
03f0: 41 4c 20 66 6c 61 67 73 20 64 69 63 74 61 74 65 AL flags dictate
0400: 20 74 68 61 74 20 63 6f 6d 6d 61 6e 64 20 72 65 that command re
0410: 73 6f 6c 75 74 69 6f 6e 0a 2b 20 20 20 20 20 2a solution.+ *
0420: 20 68 61 70 70 65 6e 73 20 69 6e 20 61 6e 20 5b happens in an [
0430: 75 70 6c 65 76 65 6c 20 23 30 5d 20 63 6f 6e 74 uplevel #0] cont
0440: 65 78 74 2e 20 28 69 50 74 72 2d 3e 76 61 72 46 ext. (iPtr->varF
0450: 72 61 6d 65 50 74 72 20 3d 3d 20 4e 55 4c 4c 29 ramePtr == NULL)
0460: 0a 2b 20 20 20 20 20 2a 2f 0a 20 20 20 20 20 69 .+ */. i
0470: 66 20 28 66 6c 61 67 73 20 26 20 28 54 43 4c 5f f (flags & (TCL_
0480: 45 56 41 4c 5f 49 4e 56 4f 4b 45 20 7c 20 54 43 EVAL_INVOKE | TC
0490: 4c 5f 45 56 41 4c 5f 47 4c 4f 42 41 4c 29 29 20 L_EVAL_GLOBAL))
04a0: 7b 0a 20 09 69 50 74 72 2d 3e 76 61 72 46 72 61 {. .iPtr->varFra
04b0: 6d 65 50 74 72 20 3d 20 4e 55 4c 4c 3b 0a 20 20 mePtr = NULL;.
04c0: 20 20 20 7d 0a 20 20 20 20 20 63 6d 64 50 74 72 }. cmdPtr
04d0: 20 3d 20 28 43 6f 6d 6d 61 6e 64 20 2a 29 20 54 = (Command *) T
04e0: 63 6c 5f 47 65 74 43 6f 6d 6d 61 6e 64 46 72 6f cl_GetCommandFro
04f0: 6d 4f 62 6a 28 69 6e 74 65 72 70 2c 20 6f 62 6a mObj(interp, obj
0500: 76 5b 30 5d 29 3b 0a 2d 20 20 20 20 2f 2a 0a 2d v[0]);.- /*.-
0510: 20 20 20 20 20 2a 20 47 72 61 62 20 63 75 72 72 * Grab curr
0520: 65 6e 74 20 6e 61 6d 65 73 70 61 63 65 20 62 65 ent namespace be
0530: 66 6f 72 65 20 72 65 73 74 6f 72 69 6e 67 20 76 fore restoring v
0540: 61 72 20 66 72 61 6d 65 2c 20 66 6f 72 20 75 6e ar frame, for un
0550: 6b 6e 6f 77 6e 0a 2d 20 20 20 20 20 2a 20 68 61 known.- * ha
0560: 6e 64 6c 65 72 20 63 68 65 63 6b 20 62 65 6c 6f ndler check belo
0570: 77 2e 0a 2d 20 20 20 20 20 2a 2f 0a 2d 20 20 20 w..- */.-
0580: 20 69 66 20 28 69 50 74 72 2d 3e 76 61 72 46 72 if (iPtr->varFr
0590: 61 6d 65 50 74 72 20 21 3d 20 4e 55 4c 4c 20 26 amePtr != NULL &
05a0: 26 20 69 50 74 72 2d 3e 76 61 72 46 72 61 6d 65 & iPtr->varFrame
05b0: 50 74 72 2d 3e 6e 73 50 74 72 20 21 3d 20 4e 55 Ptr->nsPtr != NU
05c0: 4c 4c 29 20 7b 0a 2d 20 20 20 20 20 20 20 20 63 LL) {.- c
05d0: 75 72 72 4e 73 50 74 72 20 3d 20 69 50 74 72 2d urrNsPtr = iPtr-
05e0: 3e 76 61 72 46 72 61 6d 65 50 74 72 2d 3e 6e 73 >varFramePtr->ns
05f0: 50 74 72 3b 0a 2d 20 20 20 20 7d 20 65 6c 73 65 Ptr;.- } else
0600: 20 7b 0a 2d 20 20 20 20 20 20 20 20 2f 2a 20 4e {.- /* N
0610: 6f 74 65 3a 20 61 73 73 75 6d 65 73 20 67 6c 6f ote: assumes glo
0620: 62 61 6c 4e 73 50 74 72 20 63 61 6e 20 6e 65 76 balNsPtr can nev
0630: 65 72 20 62 65 20 4e 55 4c 4c 2e 20 2a 2f 0a 2d er be NULL. */.-
0640: 20 20 20 20 20 20 20 20 63 75 72 72 4e 73 50 74 currNsPt
0650: 72 20 3d 20 69 50 74 72 2d 3e 67 6c 6f 62 61 6c r = iPtr->global
0660: 4e 73 50 74 72 3b 0a 2d 20 20 20 20 20 20 20 20 NsPtr;.-
0670: 69 66 20 28 63 75 72 72 4e 73 50 74 72 20 3d 3d if (currNsPtr ==
0680: 20 4e 55 4c 4c 29 20 7b 0a 2d 20 20 20 20 20 20 NULL) {.-
0690: 20 20 20 20 20 20 54 63 6c 5f 50 61 6e 69 63 28 Tcl_Panic(
06a0: 22 54 63 6c 45 76 61 6c 4f 62 6a 76 49 6e 74 65 "TclEvalObjvInte
06b0: 72 6e 61 6c 3a 20 4e 55 4c 4c 20 67 6c 6f 62 61 rnal: NULL globa
06c0: 6c 20 6e 61 6d 65 73 70 61 63 65 20 70 6f 69 6e l namespace poin
06d0: 74 65 72 22 29 3b 0a 2d 20 20 20 20 20 20 20 20 ter");.-
06e0: 7d 0a 2d 20 20 20 20 7d 0a 2d 20 20 20 20 69 50 }.- }.- iP
06f0: 74 72 2d 3e 76 61 72 46 72 61 6d 65 50 74 72 20 tr->varFramePtr
0700: 3d 20 73 61 76 65 64 56 61 72 46 72 61 6d 65 50 = savedVarFrameP
0710: 74 72 3b 0a 2d 0a 20 20 20 20 20 69 66 20 28 63 tr;.-. if (c
0720: 6d 64 50 74 72 20 3d 3d 20 4e 55 4c 4c 29 20 7b mdPtr == NULL) {
0730: 0a 2b 09 4e 61 6d 65 73 70 61 63 65 20 2a 63 75 .+.Namespace *cu
0740: 72 72 4e 73 50 74 72 20 3d 20 4e 55 4c 4c 3b 09 rrNsPtr = NULL;.
0750: 2f 2a 20 55 73 65 64 20 74 6f 20 63 68 65 63 6b /* Used to check
0760: 20 66 6f 72 20 61 6e 64 20 69 6e 76 6f 6b 65 20 for and invoke
0770: 61 6e 79 0a 2b 09 09 09 09 09 20 2a 20 72 65 67 any.+..... * reg
0780: 69 73 74 65 72 65 64 20 75 6e 6b 6e 6f 77 6e 20 istered unknown
0790: 63 6f 6d 6d 61 6e 64 20 68 61 6e 64 6c 65 72 0a command handler.
07a0: 2b 09 09 09 09 09 20 2a 20 66 6f 72 20 74 68 65 +..... * for the
07b0: 20 63 75 72 72 65 6e 74 20 6e 61 6d 65 73 70 61 current namespa
07c0: 63 65 0a 2b 09 09 09 09 09 20 2a 20 28 54 49 50 ce.+..... * (TIP
07d0: 20 31 38 31 29 2e 20 2a 2f 0a 20 20 20 20 20 20 181). */.
07e0: 20 20 20 69 6e 74 20 6e 65 77 4f 62 6a 63 2c 20 int newObjc,
07f0: 68 61 6e 64 6c 65 72 4f 62 6a 63 3b 0a 20 20 20 handlerObjc;.
0800: 20 20 20 20 20 20 54 63 6c 5f 4f 62 6a 20 2a 2a Tcl_Obj **
0810: 68 61 6e 64 6c 65 72 4f 62 6a 76 3b 0a 2d 20 20 handlerObjv;.-
0820: 20 20 20 20 20 20 2f 2a 0a 2d 20 20 20 20 20 20 /*.-
0830: 20 20 20 2a 20 43 68 65 63 6b 20 69 66 20 74 68 * Check if th
0840: 65 72 65 20 69 73 20 61 6e 20 75 6e 6b 6e 6f 77 ere is an unknow
0850: 6e 20 68 61 6e 64 6c 65 72 20 72 65 67 69 73 74 n handler regist
0860: 65 72 65 64 20 66 6f 72 20 74 68 69 73 20 6e 61 ered for this na
0870: 6d 65 73 70 61 63 65 2e 0a 2d 20 20 20 20 20 20 mespace..-
0880: 20 20 20 2a 20 4f 74 68 65 72 77 69 73 65 2c 20 * Otherwise,
0890: 75 73 65 20 74 68 65 20 67 6c 6f 62 61 6c 20 6e use the global n
08a0: 61 6d 65 73 70 61 63 65 20 75 6e 6b 6e 6f 77 6e amespace unknown
08b0: 20 68 61 6e 64 6c 65 72 2e 0a 2d 20 20 20 20 20 handler..-
08c0: 20 20 20 20 2a 2f 0a 2b 0a 2b 09 69 66 20 28 69 */.+.+.if (i
08d0: 50 74 72 2d 3e 76 61 72 46 72 61 6d 65 50 74 72 Ptr->varFramePtr
08e0: 20 21 3d 20 4e 55 4c 4c 29 20 7b 0a 2b 09 20 20 != NULL) {.+.
08f0: 20 20 63 75 72 72 4e 73 50 74 72 20 3d 20 69 50 currNsPtr = iP
0900: 74 72 2d 3e 76 61 72 46 72 61 6d 65 50 74 72 2d tr->varFramePtr-
0910: 3e 6e 73 50 74 72 3b 0a 2b 09 7d 0a 2b 09 69 66 >nsPtr;.+.}.+.if
0920: 20 28 28 63 75 72 72 4e 73 50 74 72 20 3d 3d 20 ((currNsPtr ==
0930: 4e 55 4c 4c 29 20 7c 7c 20 28 63 75 72 72 4e 73 NULL) || (currNs
0940: 50 74 72 2d 3e 75 6e 6b 6e 6f 77 6e 48 61 6e 64 Ptr->unknownHand
0950: 6c 65 72 50 74 72 20 3d 3d 20 4e 55 4c 4c 29 29 lerPtr == NULL))
0960: 20 7b 0a 2b 09 20 20 20 20 63 75 72 72 4e 73 50 {.+. currNsP
0970: 74 72 20 3d 20 69 50 74 72 2d 3e 67 6c 6f 62 61 tr = iPtr->globa
0980: 6c 4e 73 50 74 72 3b 0a 2b 09 7d 0a 2b 09 69 66 lNsPtr;.+.}.+.if
0990: 20 28 63 75 72 72 4e 73 50 74 72 20 3d 3d 20 4e (currNsPtr == N
09a0: 55 4c 4c 29 20 7b 0a 2b 09 20 20 20 20 54 63 6c ULL) {.+. Tcl
09b0: 5f 50 61 6e 69 63 28 22 54 63 6c 45 76 61 6c 4f _Panic("TclEvalO
09c0: 62 6a 76 49 6e 74 65 72 6e 61 6c 3a 20 4e 55 4c bjvInternal: NUL
09d0: 4c 20 67 6c 6f 62 61 6c 20 6e 61 6d 65 73 70 61 L global namespa
09e0: 63 65 20 70 6f 69 6e 74 65 72 22 29 3b 0a 2b 09 ce pointer");.+.
09f0: 7d 0a 20 20 20 20 20 20 20 20 20 69 66 20 28 63 }. if (c
0a00: 75 72 72 4e 73 50 74 72 2d 3e 75 6e 6b 6e 6f 77 urrNsPtr->unknow
0a10: 6e 48 61 6e 64 6c 65 72 50 74 72 20 3d 3d 20 4e nHandlerPtr == N
0a20: 55 4c 4c 29 20 7b 0a 2d 20 20 20 20 20 20 20 20 ULL) {.-
0a30: 20 20 20 20 63 75 72 72 4e 73 50 74 72 20 3d 20 currNsPtr =
0a40: 69 50 74 72 2d 3e 67 6c 6f 62 61 6c 4e 73 50 74 iPtr->globalNsPt
0a50: 72 3b 0a 2d 20 20 20 20 20 20 20 20 7d 0a 2d 20 r;.- }.-
0a60: 20 20 20 20 20 20 20 69 66 20 28 63 75 72 72 4e if (currN
0a70: 73 50 74 72 20 3d 3d 20 69 50 74 72 2d 3e 67 6c sPtr == iPtr->gl
0a80: 6f 62 61 6c 4e 73 50 74 72 20 26 26 0a 2d 20 20 obalNsPtr &&.-
0a90: 20 20 20 20 20 20 20 20 20 20 63 75 72 72 4e 73 currNs
0aa0: 50 74 72 2d 3e 75 6e 6b 6e 6f 77 6e 48 61 6e 64 Ptr->unknownHand
0ab0: 6c 65 72 50 74 72 20 3d 3d 20 4e 55 4c 4c 29 20 lerPtr == NULL)
0ac0: 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 2f {. /
0ad0: 2a 20 47 6c 6f 62 61 6c 20 6e 61 6d 65 73 70 61 * Global namespa
0ae0: 63 65 20 68 61 73 20 6c 6f 73 74 20 75 6e 6b 6e ce has lost unkn
0af0: 6f 77 6e 20 68 61 6e 64 6c 65 72 2c 20 72 65 73 own handler, res
0b00: 65 74 2e 20 2a 2f 0a 2d 20 20 20 20 20 20 20 20 et. */.-
0b10: 20 20 20 20 63 75 72 72 4e 73 50 74 72 2d 3e 75 currNsPtr->u
0b20: 6e 6b 6e 6f 77 6e 48 61 6e 64 6c 65 72 50 74 72 nknownHandlerPtr
0b30: 20 3d 0a 2d 20 20 20 20 20 20 20 20 20 20 20 20 =.-
0b40: 20 20 20 20 54 63 6c 5f 4e 65 77 53 74 72 69 6e Tcl_NewStrin
0b50: 67 4f 62 6a 28 22 3a 3a 75 6e 6b 6e 6f 77 6e 22 gObj("::unknown"
0b60: 2c 20 2d 31 29 3b 0a 2b 20 20 20 20 20 20 20 20 , -1);.+
0b70: 20 20 20 20 63 75 72 72 4e 73 50 74 72 2d 3e 75 currNsPtr->u
0b80: 6e 6b 6e 6f 77 6e 48 61 6e 64 6c 65 72 50 74 72 nknownHandlerPtr
0b90: 20 3d 20 54 63 6c 5f 4e 65 77 53 74 72 69 6e 67 = Tcl_NewString
0ba0: 4f 62 6a 28 22 3a 3a 75 6e 6b 6e 6f 77 6e 22 2c Obj("::unknown",
0bb0: 20 2d 31 29 3b 0a 20 20 20 20 20 20 20 20 20 20 -1);.
0bc0: 20 20 20 54 63 6c 5f 49 6e 63 72 52 65 66 43 6f Tcl_IncrRefCo
0bd0: 75 6e 74 28 63 75 72 72 4e 73 50 74 72 2d 3e 75 unt(currNsPtr->u
0be0: 6e 6b 6e 6f 77 6e 48 61 6e 64 6c 65 72 50 74 72 nknownHandlerPtr
0bf0: 29 3b 0a 20 20 20 20 20 20 20 20 20 7d 0a 2d 20 );. }.-
0c00: 20 20 20 20 20 20 20 69 66 20 28 54 63 6c 5f 4c if (Tcl_L
0c10: 69 73 74 4f 62 6a 47 65 74 45 6c 65 6d 65 6e 74 istObjGetElement
0c20: 73 28 69 6e 74 65 72 70 2c 0a 2d 20 20 20 20 20 s(interp,.-
0c30: 20 20 20 20 20 20 20 63 75 72 72 4e 73 50 74 72 currNsPtr
0c40: 2d 3e 75 6e 6b 6e 6f 77 6e 48 61 6e 64 6c 65 72 ->unknownHandler
0c50: 50 74 72 2c 20 26 68 61 6e 64 6c 65 72 4f 62 6a Ptr, &handlerObj
0c60: 63 2c 20 26 68 61 6e 64 6c 65 72 4f 62 6a 76 29 c, &handlerObjv)
0c70: 0a 2d 20 20 20 20 20 20 20 20 20 20 20 20 21 3d .- !=
0c80: 20 54 43 4c 5f 4f 4b 29 20 7b 0a 2d 20 20 20 20 TCL_OK) {.-
0c90: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 54 return T
0ca0: 43 4c 5f 45 52 52 4f 52 3b 0a 2d 20 20 20 20 20 CL_ERROR;.-
0cb0: 20 20 20 7d 0a 2b 20 20 20 20 20 20 20 20 54 63 }.+ Tc
0cc0: 6c 5f 4c 69 73 74 4f 62 6a 47 65 74 45 6c 65 6d l_ListObjGetElem
0cd0: 65 6e 74 73 28 4e 55 4c 4c 2c 20 63 75 72 72 4e ents(NULL, currN
0ce0: 73 50 74 72 2d 3e 75 6e 6b 6e 6f 77 6e 48 61 6e sPtr->unknownHan
0cf0: 64 6c 65 72 50 74 72 2c 0a 2b 09 09 26 68 61 6e dlerPtr,.+..&han
0d00: 64 6c 65 72 4f 62 6a 63 2c 20 26 68 61 6e 64 6c dlerObjc, &handl
0d10: 65 72 4f 62 6a 76 29 3b 0a 20 20 20 20 20 20 20 erObjv);.
0d20: 20 20 6e 65 77 4f 62 6a 63 20 3d 20 6f 62 6a 63 newObjc = objc
0d30: 20 2b 20 68 61 6e 64 6c 65 72 4f 62 6a 63 3b 0a + handlerObjc;.
0d40: 20 09 6e 65 77 4f 62 6a 76 20 3d 20 28 54 63 6c .newObjv = (Tcl
0d50: 5f 4f 62 6a 20 2a 2a 29 20 63 6b 61 6c 6c 6f 63 _Obj **) ckalloc
0d60: 28 28 75 6e 73 69 67 6e 65 64 29 0a 20 20 20 20 ((unsigned).
0d70: 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6e 65 (ne
0d80: 77 4f 62 6a 63 20 2a 20 73 69 7a 65 6f 66 28 54 wObjc * sizeof(T
0d90: 63 6c 5f 4f 62 6a 20 2a 29 29 29 3b 0a 20 20 20 cl_Obj *)));.
0da0: 20 20 20 20 20 20 2f 2a 20 43 6f 70 79 20 63 6f /* Copy co
0db0: 6d 6d 61 6e 64 20 70 72 65 66 69 78 20 66 72 6f mmand prefix fro
0dc0: 6d 20 75 6e 6b 6e 6f 77 6e 20 68 61 6e 64 6c 65 m unknown handle
0dd0: 72 2e 20 2a 2f 0a 20 20 20 20 20 20 20 20 20 66 r. */. f
0de0: 6f 72 20 28 69 20 3d 20 30 3b 20 69 20 3c 20 68 or (i = 0; i < h
0df0: 61 6e 64 6c 65 72 4f 62 6a 63 3b 20 2b 2b 69 29 andlerObjc; ++i)
0e00: 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 {.
0e10: 6e 65 77 4f 62 6a 76 5b 69 5d 20 3d 20 68 61 6e newObjv[i] = han
0e20: 64 6c 65 72 4f 62 6a 76 5b 69 5d 3b 0a 2b 09 20 dlerObjv[i];.+.
0e30: 20 20 20 54 63 6c 5f 49 6e 63 72 52 65 66 43 6f Tcl_IncrRefCo
0e40: 75 6e 74 28 6e 65 77 4f 62 6a 76 5b 69 5d 29 3b unt(newObjv[i]);
0e50: 0a 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 . }.
0e60: 20 20 20 20 20 2f 2a 20 41 64 64 20 69 6e 20 63 /* Add in c
0e70: 6f 6d 6d 61 6e 64 20 6e 61 6d 65 20 61 6e 64 20 ommand name and
0e80: 61 72 67 75 6d 65 6e 74 73 2e 20 2a 2f 0a 20 20 arguments. */.
0e90: 20 20 20 20 20 20 20 66 6f 72 20 28 69 20 3d 20 for (i =
0ea0: 6f 62 6a 63 2d 31 3b 20 69 20 3e 3d 20 30 3b 20 objc-1; i >= 0;
0eb0: 2d 2d 69 29 20 7b 0a 20 20 20 20 20 20 20 20 20 --i) {.
0ec0: 20 20 20 20 6e 65 77 4f 62 6a 76 5b 69 2b 68 61 newObjv[i+ha
0ed0: 6e 64 6c 65 72 4f 62 6a 63 5d 20 3d 20 6f 62 6a ndlerObjc] = obj
0ee0: 76 5b 69 5d 3b 0a 20 20 20 20 20 20 20 20 20 7d v[i];. }
0ef0: 0a 2d 09 54 63 6c 5f 49 6e 63 72 52 65 66 43 6f .-.Tcl_IncrRefCo
0f00: 75 6e 74 28 6e 65 77 4f 62 6a 76 5b 30 5d 29 3b unt(newObjv[0]);
0f10: 0a 20 09 63 6d 64 50 74 72 20 3d 20 28 43 6f 6d . .cmdPtr = (Com
0f20: 6d 61 6e 64 20 2a 29 20 54 63 6c 5f 47 65 74 43 mand *) Tcl_GetC
0f30: 6f 6d 6d 61 6e 64 46 72 6f 6d 4f 62 6a 28 69 6e ommandFromObj(in
0f40: 74 65 72 70 2c 20 6e 65 77 4f 62 6a 76 5b 30 5d terp, newObjv[0]
0f50: 29 3b 0a 2d 20 20 20 20 20 20 20 20 0a 2b 09 69 );.- .+.i
0f60: 50 74 72 2d 3e 76 61 72 46 72 61 6d 65 50 74 72 Ptr->varFramePtr
0f70: 20 3d 20 73 61 76 65 64 56 61 72 46 72 61 6d 65 = savedVarFrame
0f80: 50 74 72 3b 0a 20 09 69 66 20 28 63 6d 64 50 74 Ptr;. .if (cmdPt
0f90: 72 20 3d 3d 20 4e 55 4c 4c 29 20 7b 0a 20 09 20 r == NULL) {. .
0fa0: 20 20 20 54 63 6c 5f 41 70 70 65 6e 64 52 65 73 Tcl_AppendRes
0fb0: 75 6c 74 28 69 6e 74 65 72 70 2c 20 22 69 6e 76 ult(interp, "inv
0fc0: 61 6c 69 64 20 63 6f 6d 6d 61 6e 64 20 6e 61 6d alid command nam
0fd0: 65 20 5c 22 22 2c 0a 20 09 09 20 20 20 20 54 63 e \"",. .. Tc
0fe0: 6c 47 65 74 53 74 72 69 6e 67 28 6f 62 6a 76 5b lGetString(objv[
0ff0: 30 5d 29 2c 20 22 5c 22 22 2c 20 4e 55 4c 4c 29 0]), "\"", NULL)
1000: 3b 0a 40 40 20 2d 33 33 33 35 2c 32 30 20 2b 33 ;.@@ -3335,20 +3
1010: 33 32 33 2c 32 33 20 40 40 0a 20 09 7d 20 65 6c 323,23 @@. .} el
1020: 73 65 20 7b 0a 20 09 20 20 20 20 69 50 74 72 2d se {. . iPtr-
1030: 3e 6e 75 6d 4c 65 76 65 6c 73 2b 2b 3b 0a 20 09 >numLevels++;. .
1040: 20 20 20 20 63 6f 64 65 20 3d 20 54 63 6c 45 76 code = TclEv
1050: 61 6c 4f 62 6a 76 49 6e 74 65 72 6e 61 6c 28 69 alObjvInternal(i
1060: 6e 74 65 72 70 2c 20 6e 65 77 4f 62 6a 63 2c 20 nterp, newObjc,
1070: 6e 65 77 4f 62 6a 76 2c 20 63 6f 6d 6d 61 6e 64 newObjv, command
1080: 2c 0a 2d 09 09 09 20 20 20 20 6c 65 6e 67 74 68 ,.-... length
1090: 2c 20 30 29 3b 0a 2b 09 09 09 20 20 20 20 6c 65 , 0);.+... le
10a0: 6e 67 74 68 2c 20 66 6c 61 67 73 29 3b 0a 20 09 ngth, flags);. .
10b0: 20 20 20 20 69 50 74 72 2d 3e 6e 75 6d 4c 65 76 iPtr->numLev
10c0: 65 6c 73 2d 2d 3b 0a 20 09 7d 0a 2d 09 54 63 6c els--;. .}.-.Tcl
10d0: 5f 44 65 63 72 52 65 66 43 6f 75 6e 74 28 6e 65 _DecrRefCount(ne
10e0: 77 4f 62 6a 76 5b 30 5d 29 3b 0a 2b 20 20 20 20 wObjv[0]);.+
10f0: 20 20 20 20 66 6f 72 20 28 69 20 3d 20 30 3b 20 for (i = 0;
1100: 69 20 3c 20 68 61 6e 64 6c 65 72 4f 62 6a 63 3b i < handlerObjc;
1110: 20 2b 2b 69 29 20 7b 0a 2b 09 20 20 20 20 54 63 ++i) {.+. Tc
1120: 6c 5f 44 65 63 72 52 65 66 43 6f 75 6e 74 28 6e l_DecrRefCount(n
1130: 65 77 4f 62 6a 76 5b 69 5d 29 3b 0a 2b 20 20 20 ewObjv[i]);.+
1140: 20 20 20 20 20 7d 0a 20 09 63 6b 66 72 65 65 28 }. .ckfree(
1150: 28 63 68 61 72 20 2a 29 20 6e 65 77 4f 62 6a 76 (char *) newObjv
1160: 29 3b 0a 2d 09 67 6f 74 6f 20 64 6f 6e 65 3b 0a );.-.goto done;.
1170: 2b 09 72 65 74 75 72 6e 20 63 6f 64 65 3b 0a 20 +.return code;.
1180: 20 20 20 20 7d 0a 2b 20 20 20 20 69 50 74 72 2d }.+ iPtr-
1190: 3e 76 61 72 46 72 61 6d 65 50 74 72 20 3d 20 73 >varFramePtr = s
11a0: 61 76 65 64 56 61 72 46 72 61 6d 65 50 74 72 3b avedVarFramePtr;
11b0: 0a 20 0a 20 20 20 20 20 2f 2a 0a 20 20 20 20 20 . . /*.
11c0: 20 2a 20 43 61 6c 6c 20 74 72 61 63 65 20 66 75 * Call trace fu
11d0: 6e 63 74 69 6f 6e 73 20 69 66 20 6e 65 65 64 65 nctions if neede
11e0: 64 2e 0a 20 20 20 20 20 20 2a 2f 0a 20 0a 2b 20 d.. */. .+
11f0: 20 20 20 63 6d 64 45 70 6f 63 68 20 3d 20 63 6d cmdEpoch = cm
1200: 64 50 74 72 2d 3e 63 6d 64 45 70 6f 63 68 3b 0a dPtr->cmdEpoch;.
1210: 20 20 20 20 20 69 66 20 28 28 63 68 65 63 6b 54 if ((checkT
1220: 72 61 63 65 73 29 20 26 26 20 28 63 6f 6d 6d 61 races) && (comma
1230: 6e 64 20 21 3d 20 4e 55 4c 4c 29 29 20 7b 0a 2d nd != NULL)) {.-
1240: 09 69 6e 74 20 63 6d 64 45 70 6f 63 68 20 3d 20 .int cmdEpoch =
1250: 63 6d 64 50 74 72 2d 3e 63 6d 64 45 70 6f 63 68 cmdPtr->cmdEpoch
1260: 3b 0a 20 09 63 6d 64 50 74 72 2d 3e 72 65 66 43 ;. .cmdPtr->refC
1270: 6f 75 6e 74 2b 2b 3b 0a 20 0a 20 09 2f 2a 0a 40 ount++;. . ./*.@
1280: 40 20 2d 33 33 36 36 2c 31 34 20 2b 33 33 35 37 @ -3366,14 +3357
1290: 2c 31 31 20 40 40 0a 20 09 09 20 20 20 20 63 6d ,11 @@. .. cm
12a0: 64 50 74 72 2c 20 63 6f 64 65 2c 20 54 43 4c 5f dPtr, code, TCL_
12b0: 54 52 41 43 45 5f 45 4e 54 45 52 5f 45 58 45 43 TRACE_ENTER_EXEC
12c0: 2c 20 6f 62 6a 63 2c 20 6f 62 6a 76 29 3b 0a 20 , objc, objv);.
12d0: 09 7d 0a 20 09 63 6d 64 50 74 72 2d 3e 72 65 66 .}. .cmdPtr->ref
12e0: 43 6f 75 6e 74 2d 2d 3b 0a 2d 09 69 66 20 28 63 Count--;.-.if (c
12f0: 6d 64 45 70 6f 63 68 20 21 3d 20 63 6d 64 50 74 mdEpoch != cmdPt
1300: 72 2d 3e 63 6d 64 45 70 6f 63 68 29 20 7b 0a 2d r->cmdEpoch) {.-
1310: 09 20 20 20 20 2f 2a 0a 2d 09 20 20 20 20 20 2a . /*.-. *
1320: 20 54 68 65 20 63 6f 6d 6d 61 6e 64 20 68 61 73 The command has
1330: 20 62 65 65 6e 20 6d 6f 64 69 66 69 65 64 20 69 been modified i
1340: 6e 20 73 6f 6d 65 20 77 61 79 2e 0a 2d 09 20 20 n some way..-.
1350: 20 20 20 2a 2f 0a 2d 0a 2d 09 20 20 20 20 63 68 */.-.-. ch
1360: 65 63 6b 54 72 61 63 65 73 20 3d 20 30 3b 0a 2d eckTraces = 0;.-
1370: 09 20 20 20 20 67 6f 74 6f 20 72 65 70 61 72 73 . goto repars
1380: 65 42 65 63 61 75 73 65 4f 66 54 72 61 63 65 73 eBecauseOfTraces
1390: 3b 0a 2d 09 7d 0a 2b 20 20 20 20 7d 0a 2b 20 20 ;.-.}.+ }.+
13a0: 20 20 69 66 20 28 63 6d 64 45 70 6f 63 68 20 21 if (cmdEpoch !
13b0: 3d 20 63 6d 64 50 74 72 2d 3e 63 6d 64 45 70 6f = cmdPtr->cmdEpo
13c0: 63 68 29 20 7b 0a 2b 09 2f 2a 20 54 68 65 20 63 ch) {.+./* The c
13d0: 6f 6d 6d 61 6e 64 20 68 61 73 20 62 65 65 6e 20 ommand has been
13e0: 6d 6f 64 69 66 69 65 64 20 69 6e 20 73 6f 6d 65 modified in some
13f0: 20 77 61 79 2e 20 2a 2f 0a 2b 09 63 68 65 63 6b way. */.+.check
1400: 54 72 61 63 65 73 20 3d 20 30 3b 0a 2b 09 67 6f Traces = 0;.+.go
1410: 74 6f 20 72 65 70 61 72 73 65 42 65 63 61 75 73 to reparseBecaus
1420: 65 4f 66 54 72 61 63 65 73 3b 0a 20 20 20 20 20 eOfTraces;.
1430: 7d 0a 20 0a 20 20 20 20 20 2f 2a 0a 40 40 20 2d }. . /*.@@ -
1440: 33 33 38 34 2c 36 20 2b 33 33 37 32 2c 31 31 20 3384,6 +3372,11
1450: 40 40 0a 20 20 20 20 20 69 50 74 72 2d 3e 63 6d @@. iPtr->cm
1460: 64 43 6f 75 6e 74 2b 2b 3b 0a 20 20 20 20 20 69 dCount++;. i
1470: 66 20 28 63 6f 64 65 20 3d 3d 20 54 43 4c 5f 4f f (code == TCL_O
1480: 4b 20 26 26 20 74 72 61 63 65 43 6f 64 65 20 3d K && traceCode =
1490: 3d 20 54 43 4c 5f 4f 4b 20 26 26 20 21 54 63 6c = TCL_OK && !Tcl
14a0: 5f 4c 69 6d 69 74 45 78 63 65 65 64 65 64 28 69 _LimitExceeded(i
14b0: 6e 74 65 72 70 29 29 20 7b 0a 20 09 73 61 76 65 nterp)) {. .save
14c0: 64 56 61 72 46 72 61 6d 65 50 74 72 20 3d 20 69 dVarFramePtr = i
14d0: 50 74 72 2d 3e 76 61 72 46 72 61 6d 65 50 74 72 Ptr->varFramePtr
14e0: 3b 0a 2b 09 2f 2a 0a 2b 09 20 2a 20 4f 6e 6c 79 ;.+./*.+. * Only
14f0: 20 74 68 65 20 47 4c 4f 42 41 4c 20 66 6c 61 67 the GLOBAL flag
1500: 20 64 69 63 74 61 74 65 73 20 63 6f 6d 6d 61 6e dictates comman
1510: 64 20 70 72 6f 63 65 64 75 72 65 20 65 78 65 63 d procedure exec
1520: 74 69 6f 6e 20 28 64 69 73 74 69 6e 63 74 0a 2b tion (distinct.+
1530: 09 20 2a 20 66 72 6f 6d 20 63 6f 6d 6d 61 6e 64 . * from command
1540: 20 6e 61 6d 65 20 72 65 73 6f 6c 75 74 69 6f 6e name resolution
1550: 20 61 62 6f 76 65 29 20 68 61 70 70 65 6e 73 20 above) happens
1560: 69 6e 20 61 6e 20 5b 75 70 6c 65 76 65 6c 20 23 in an [uplevel #
1570: 30 5d 0a 2b 09 20 2a 20 63 6f 6e 74 65 78 74 2e 0].+. * context.
1580: 20 28 69 50 74 72 2d 3e 76 61 72 46 72 61 6d 65 (iPtr->varFrame
1590: 50 74 72 20 3d 3d 20 4e 55 4c 4c 29 20 0a 2b 09 Ptr == NULL) .+.
15a0: 20 2a 2f 0a 20 09 69 66 20 28 66 6c 61 67 73 20 */. .if (flags
15b0: 26 20 54 43 4c 5f 45 56 41 4c 5f 47 4c 4f 42 41 & TCL_EVAL_GLOBA
15c0: 4c 29 20 7b 0a 20 09 20 20 20 20 69 50 74 72 2d L) {. . iPtr-
15d0: 3e 76 61 72 46 72 61 6d 65 50 74 72 20 3d 20 4e >varFramePtr = N
15e0: 55 4c 4c 3b 0a 20 09 7d 0a 40 40 20 2d 33 34 33 ULL;. .}.@@ -343
15f0: 38 2c 38 20 2b 33 34 33 31 2c 36 20 40 40 0a 20 8,8 +3431,6 @@.
1600: 20 20 20 20 69 66 20 28 2a 28 69 50 74 72 2d 3e if (*(iPtr->
1610: 72 65 73 75 6c 74 29 20 21 3d 20 30 29 20 7b 0a result) != 0) {.
1620: 20 09 28 76 6f 69 64 29 20 54 63 6c 5f 47 65 74 .(void) Tcl_Get
1630: 4f 62 6a 52 65 73 75 6c 74 28 69 6e 74 65 72 70 ObjResult(interp
1640: 29 3b 0a 20 20 20 20 20 7d 0a 2d 0a 2d 20 20 64 );. }.-.- d
1650: 6f 6e 65 3a 0a 20 20 20 20 20 72 65 74 75 72 6e one:. return
1660: 20 63 6f 64 65 3b 0a 20 7d 0a 20 0c 0a 49 6e 64 code;. }. ..Ind
1670: 65 78 3a 20 74 65 73 74 73 2f 6e 61 6d 65 73 70 ex: tests/namesp
1680: 61 63 65 2e 74 65 73 74 0a 3d 3d 3d 3d 3d 3d 3d ace.test.=======
1690: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
16a0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
16b0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
16c0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 52 43 53 ============.RCS
16d0: 20 66 69 6c 65 3a 20 2f 63 76 73 72 6f 6f 74 2f file: /cvsroot/
16e0: 74 63 6c 2f 74 63 6c 2f 74 65 73 74 73 2f 6e 61 tcl/tcl/tests/na
16f0: 6d 65 73 70 61 63 65 2e 74 65 73 74 2c 76 0a 72 mespace.test,v.r
1700: 65 74 72 69 65 76 69 6e 67 20 72 65 76 69 73 69 etrieving revisi
1710: 6f 6e 20 31 2e 35 33 0a 64 69 66 66 20 2d 75 20 on 1.53.diff -u
1720: 2d 72 31 2e 35 33 20 6e 61 6d 65 73 70 61 63 65 -r1.53 namespace
1730: 2e 74 65 73 74 0a 2d 2d 2d 20 74 65 73 74 73 2f .test.--- tests/
1740: 6e 61 6d 65 73 70 61 63 65 2e 74 65 73 74 09 31 namespace.test.1
1750: 20 46 65 62 20 32 30 30 36 20 31 38 3a 32 37 3a Feb 2006 18:27:
1760: 34 38 20 2d 30 30 30 30 09 31 2e 35 33 0a 2b 2b 48 -0000.1.53.++
1770: 2b 20 74 65 73 74 73 2f 6e 61 6d 65 73 70 61 63 + tests/namespac
1780: 65 2e 74 65 73 74 09 32 32 20 46 65 62 20 32 30 e.test.22 Feb 20
1790: 30 36 20 31 37 3a 32 37 3a 32 38 20 2d 30 30 30 06 17:27:28 -000
17a0: 30 0a 40 40 20 2d 32 34 39 32 2c 36 20 2b 32 34 0.@@ -2492,6 +24
17b0: 39 32 2c 37 33 20 40 40 0a 20 20 20 20 20 24 69 92,73 @@. $i
17c0: 20 69 6e 76 6f 6b 65 68 69 64 64 65 6e 20 70 72 invokehidden pr
17d0: 6f 63 20 75 6e 6b 6e 6f 77 6e 20 61 72 67 73 20 oc unknown args
17e0: 7b 20 72 65 74 75 72 6e 20 22 46 49 4e 45 22 20 { return "FINE"
17f0: 7d 0a 20 20 20 20 20 24 69 20 65 76 61 6c 20 7b }. $i eval {
1800: 20 66 6f 6f 20 62 61 72 20 62 6f 62 20 7d 0a 20 foo bar bob }.
1810: 7d 20 7b 46 49 4e 45 7d 0a 2b 74 65 73 74 20 6e } {FINE}.+test n
1820: 61 6d 65 73 70 61 63 65 2d 35 32 2e 39 20 7b 75 amespace-52.9 {u
1830: 6e 6b 6e 6f 77 6e 3a 20 72 65 66 63 6f 75 6e 74 nknown: refcount
1840: 69 6e 67 7d 20 2d 73 65 74 75 70 20 7b 0a 2b 20 ing} -setup {.+
1850: 20 20 20 70 72 6f 63 20 74 68 69 73 20 61 72 67 proc this arg
1860: 73 20 7b 0a 2b 09 75 6e 73 65 74 20 61 72 67 73 s {.+.unset args
1870: 09 09 3b 23 20 73 74 6f 70 20 73 68 61 72 69 6e ..;# stop sharin
1880: 67 0a 2b 09 73 65 74 20 63 6f 70 79 20 5b 6e 61 g.+.set copy [na
1890: 6d 65 73 70 61 63 65 20 75 6e 6b 6e 6f 77 6e 5d mespace unknown]
18a0: 0a 2b 09 73 74 72 69 6e 67 20 6c 65 6e 67 74 68 .+.string length
18b0: 20 24 63 6f 70 79 09 3b 23 20 73 68 69 6d 6d 65 $copy.;# shimme
18c0: 72 20 61 77 61 79 20 6c 69 73 74 20 72 65 70 0a r away list rep.
18d0: 2b 09 69 6e 66 6f 20 6c 65 76 65 6c 20 30 0a 2b +.info level 0.+
18e0: 20 20 20 20 7d 0a 2b 20 20 20 20 73 65 74 20 68 }.+ set h
18f0: 61 6e 64 6c 65 72 20 5b 6e 61 6d 65 73 70 61 63 andler [namespac
1900: 65 20 75 6e 6b 6e 6f 77 6e 5d 0a 2b 20 20 20 20 e unknown].+
1910: 6e 61 6d 65 73 70 61 63 65 20 75 6e 6b 6e 6f 77 namespace unknow
1920: 6e 20 7b 74 68 69 73 20 69 73 20 61 20 74 65 73 n {this is a tes
1930: 74 7d 0a 2b 20 20 20 20 63 61 74 63 68 20 7b 72 t}.+ catch {r
1940: 65 6e 61 6d 65 20 6e 6f 53 75 63 68 43 6f 6d 6d ename noSuchComm
1950: 61 6e 64 20 7b 7d 7d 0a 2b 7d 20 2d 62 6f 64 79 and {}}.+} -body
1960: 20 7b 0a 2b 20 20 20 20 6e 6f 53 75 63 68 43 6f {.+ noSuchCo
1970: 6d 6d 61 6e 64 0a 2b 7d 20 2d 63 6c 65 61 6e 75 mmand.+} -cleanu
1980: 70 20 7b 0a 2b 20 20 20 20 6e 61 6d 65 73 70 61 p {.+ namespa
1990: 63 65 20 75 6e 6b 6e 6f 77 6e 20 24 68 61 6e 64 ce unknown $hand
19a0: 6c 65 72 0a 2b 20 20 20 20 72 65 6e 61 6d 65 20 ler.+ rename
19b0: 74 68 69 73 20 7b 7d 0a 2b 7d 20 2d 72 65 73 75 this {}.+} -resu
19c0: 6c 74 20 7b 74 68 69 73 20 69 73 20 61 20 74 65 lt {this is a te
19d0: 73 74 20 6e 6f 53 75 63 68 43 6f 6d 6d 61 6e 64 st noSuchCommand
19e0: 7d 0a 2b 74 65 73 74 20 6e 61 6d 65 73 70 61 63 }.+test namespac
19f0: 65 2d 35 32 2e 31 30 20 7b 75 6e 6b 6e 6f 77 6e e-52.10 {unknown
1a00: 3a 20 77 69 74 68 20 54 43 4c 5f 45 56 41 4c 5f : with TCL_EVAL_
1a10: 47 4c 4f 42 41 4c 7d 20 2d 73 65 74 75 70 20 7b GLOBAL} -setup {
1a20: 0a 2b 20 20 20 20 72 65 6e 61 6d 65 20 3a 3a 75 .+ rename ::u
1a30: 6e 6b 6e 6f 77 6e 20 75 6e 6b 6e 6f 77 6e 2e 73 nknown unknown.s
1a40: 61 76 65 0a 2b 20 20 20 20 70 72 6f 63 20 3a 3a ave.+ proc ::
1a50: 75 6e 6b 6e 6f 77 6e 20 61 72 67 73 20 7b 0a 2b unknown args {.+
1a60: 09 73 65 74 20 63 61 6c 6c 65 72 20 5b 75 70 6c .set caller [upl
1a70: 65 76 65 6c 20 31 20 7b 6e 61 6d 65 73 70 61 63 evel 1 {namespac
1a80: 65 20 63 75 72 72 65 6e 74 7d 5d 0a 2b 09 6e 61 e current}].+.na
1a90: 6d 65 73 70 61 63 65 20 65 76 61 6c 20 24 63 61 mespace eval $ca
1aa0: 6c 6c 65 72 20 7b 0a 2b 09 20 20 20 20 76 61 72 ller {.+. var
1ab0: 69 61 62 6c 65 20 66 6f 6f 0a 2b 09 20 20 20 20 iable foo.+.
1ac0: 72 65 74 75 72 6e 20 24 66 6f 6f 0a 2b 09 7d 0a return $foo.+.}.
1ad0: 2b 20 20 20 20 7d 0a 2b 20 20 20 20 63 61 74 63 + }.+ catc
1ae0: 68 20 7b 72 65 6e 61 6d 65 20 3a 3a 6e 6f 53 75 h {rename ::noSu
1af0: 63 68 43 6f 6d 6d 61 6e 64 20 7b 7d 7d 0a 2b 7d chCommand {}}.+}
1b00: 20 2d 62 6f 64 79 20 7b 0a 2b 20 20 20 20 6e 61 -body {.+ na
1b10: 6d 65 73 70 61 63 65 20 65 76 61 6c 20 3a 3a 20 mespace eval ::
1b20: 7b 0a 2b 09 76 61 72 69 61 62 6c 65 20 66 6f 6f {.+.variable foo
1b30: 20 53 55 43 43 45 53 53 0a 2b 20 20 20 20 7d 0a SUCCESS.+ }.
1b40: 2b 20 20 20 20 6e 61 6d 65 73 70 61 63 65 20 65 + namespace e
1b50: 76 61 6c 20 74 65 73 74 5f 6e 73 5f 31 20 7b 0a val test_ns_1 {.
1b60: 2b 09 76 61 72 69 61 62 6c 65 20 66 6f 6f 20 46 +.variable foo F
1b70: 41 49 4c 0a 2b 09 74 65 73 74 65 76 61 6c 6f 62 AIL.+.testevalob
1b80: 6a 76 20 31 20 6e 6f 53 75 63 68 43 6f 6d 6d 61 jv 1 noSuchComma
1b90: 6e 64 0a 2b 20 20 20 20 7d 0a 2b 7d 20 2d 63 6c nd.+ }.+} -cl
1ba0: 65 61 6e 75 70 20 7b 0a 2b 20 20 20 20 75 6e 73 eanup {.+ uns
1bb0: 65 74 20 2d 6e 6f 63 6f 6d 70 6c 61 69 6e 20 3a et -nocomplain :
1bc0: 3a 66 6f 6f 0a 2b 20 20 20 20 6e 61 6d 65 73 70 :foo.+ namesp
1bd0: 61 63 65 20 64 65 6c 65 74 65 20 74 65 73 74 5f ace delete test_
1be0: 6e 73 5f 31 0a 2b 20 20 20 20 72 65 6e 61 6d 65 ns_1.+ rename
1bf0: 20 3a 3a 75 6e 6b 6e 6f 77 6e 20 7b 7d 0a 2b 20 ::unknown {}.+
1c00: 20 20 20 72 65 6e 61 6d 65 20 75 6e 6b 6e 6f 77 rename unknow
1c10: 6e 2e 73 61 76 65 20 3a 3a 75 6e 6b 6e 6f 77 6e n.save ::unknown
1c20: 0a 2b 7d 20 2d 72 65 73 75 6c 74 20 53 55 43 43 .+} -result SUCC
1c30: 45 53 53 0a 2b 74 65 73 74 20 6e 61 6d 65 73 70 ESS.+test namesp
1c40: 61 63 65 2d 35 32 2e 31 31 20 7b 75 6e 6b 6e 6f ace-52.11 {unkno
1c50: 77 6e 3a 20 77 69 74 68 20 54 43 4c 5f 45 56 41 wn: with TCL_EVA
1c60: 4c 5f 49 4e 56 4f 4b 45 7d 20 2d 73 65 74 75 70 L_INVOKE} -setup
1c70: 20 7b 0a 2b 20 20 20 20 73 65 74 20 68 61 6e 64 {.+ set hand
1c80: 6c 65 72 20 5b 6e 61 6d 65 73 70 61 63 65 20 65 ler [namespace e
1c90: 76 61 6c 20 3a 3a 20 7b 6e 61 6d 65 73 70 61 63 val :: {namespac
1ca0: 65 20 75 6e 6b 6e 6f 77 6e 7d 5d 0a 2b 20 20 20 e unknown}].+
1cb0: 20 6e 61 6d 65 73 70 61 63 65 20 65 76 61 6c 20 namespace eval
1cc0: 3a 3a 20 7b 6e 61 6d 65 73 70 61 63 65 20 75 6e :: {namespace un
1cd0: 6b 6e 6f 77 6e 20 75 6e 6b 6e 6f 77 6e 7d 0a 2b known unknown}.+
1ce0: 20 20 20 20 72 65 6e 61 6d 65 20 3a 3a 75 6e 6b rename ::unk
1cf0: 6e 6f 77 6e 20 75 6e 6b 6e 6f 77 6e 2e 73 61 76 nown unknown.sav
1d00: 65 0a 2b 20 20 20 20 6e 61 6d 65 73 70 61 63 65 e.+ namespace
1d10: 20 65 76 61 6c 20 3a 3a 20 7b 0a 2b 09 70 72 6f eval :: {.+.pro
1d20: 63 20 75 6e 6b 6e 6f 77 6e 20 61 72 67 73 20 7b c unknown args {
1d30: 0a 2b 09 20 20 20 20 72 65 74 75 72 6e 20 53 55 .+. return SU
1d40: 43 43 45 53 53 0a 2b 09 7d 0a 2b 20 20 20 20 7d CCESS.+.}.+ }
1d50: 0a 2b 20 20 20 20 63 61 74 63 68 20 7b 72 65 6e .+ catch {ren
1d60: 61 6d 65 20 3a 3a 6e 6f 53 75 63 68 43 6f 6d 6d ame ::noSuchComm
1d70: 61 6e 64 20 7b 7d 7d 0a 2b 20 20 20 20 73 65 74 and {}}.+ set
1d80: 20 73 6c 61 76 65 20 5b 69 6e 74 65 72 70 20 63 slave [interp c
1d90: 72 65 61 74 65 5d 0a 2b 7d 20 2d 62 6f 64 79 20 reate].+} -body
1da0: 7b 0a 2b 20 20 20 20 24 73 6c 61 76 65 20 61 6c {.+ $slave al
1db0: 69 61 73 20 62 61 72 20 6e 6f 53 75 63 68 43 6f ias bar noSuchCo
1dc0: 6d 6d 61 6e 64 0a 2b 20 20 20 20 6e 61 6d 65 73 mmand.+ names
1dd0: 70 61 63 65 20 65 76 61 6c 20 74 65 73 74 5f 6e pace eval test_n
1de0: 73 5f 31 20 7b 0a 2b 09 6e 61 6d 65 73 70 61 63 s_1 {.+.namespac
1df0: 65 20 75 6e 6b 6e 6f 77 6e 20 75 6e 6b 6e 6f 77 e unknown unknow
1e00: 6e 0a 2b 09 70 72 6f 63 20 75 6e 6b 6e 6f 77 6e n.+.proc unknown
1e10: 20 61 72 67 73 20 7b 0a 2b 09 20 20 20 20 72 65 args {.+. re
1e20: 74 75 72 6e 20 46 41 49 4c 0a 2b 09 7d 0a 2b 09 turn FAIL.+.}.+.
1e30: 24 73 6c 61 76 65 20 65 76 61 6c 20 62 61 72 0a $slave eval bar.
1e40: 2b 20 20 20 20 7d 0a 2b 7d 20 2d 63 6c 65 61 6e + }.+} -clean
1e50: 75 70 20 7b 0a 2b 20 20 20 20 69 6e 74 65 72 70 up {.+ interp
1e60: 20 64 65 6c 65 74 65 20 24 73 6c 61 76 65 0a 2b delete $slave.+
1e70: 20 20 20 20 6e 61 6d 65 73 70 61 63 65 20 64 65 namespace de
1e80: 6c 65 74 65 20 74 65 73 74 5f 6e 73 5f 31 0a 2b lete test_ns_1.+
1e90: 20 20 20 20 72 65 6e 61 6d 65 20 3a 3a 75 6e 6b rename ::unk
1ea0: 6e 6f 77 6e 20 7b 7d 0a 2b 20 20 20 20 72 65 6e nown {}.+ ren
1eb0: 61 6d 65 20 75 6e 6b 6e 6f 77 6e 2e 73 61 76 65 ame unknown.save
1ec0: 20 3a 3a 75 6e 6b 6e 6f 77 6e 0a 2b 20 20 20 20 ::unknown.+
1ed0: 6e 61 6d 65 73 70 61 63 65 20 65 76 61 6c 20 3a namespace eval :
1ee0: 3a 20 5b 6c 69 73 74 20 6e 61 6d 65 73 70 61 63 : [list namespac
1ef0: 65 20 75 6e 6b 6e 6f 77 6e 20 24 68 61 6e 64 6c e unknown $handl
1f00: 65 72 5d 0a 2b 7d 20 2d 72 65 73 75 6c 74 20 53 er].+} -result S
1f10: 55 43 43 45 53 53 0a 20 20 20 20 20 0a 20 23 20 UCCESS. . #
1f20: 63 6c 65 61 6e 75 70 0a 20 63 61 74 63 68 20 7b cleanup. catch {
1f30: 72 65 6e 61 6d 65 20 63 6d 64 31 20 7b 7d 7d 0a rename cmd1 {}}.