Attachment "varframe.patch" to
ticket [1577278fff]
added by
msofer
2006-10-15 00:21:10.
0000: 49 6e 64 65 78 3a 20 67 65 6e 65 72 69 63 2f 74 Index: generic/t
0010: 63 6c 2e 68 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d cl.h.===========
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 0a 52 43 53 20 66 69 6c ========.RCS fil
0060: 65 3a 20 2f 63 76 73 72 6f 6f 74 2f 74 63 6c 2f e: /cvsroot/tcl/
0070: 74 63 6c 2f 67 65 6e 65 72 69 63 2f 74 63 6c 2e tcl/generic/tcl.
0080: 68 2c 76 0a 72 65 74 72 69 65 76 69 6e 67 20 72 h,v.retrieving r
0090: 65 76 69 73 69 6f 6e 20 31 2e 32 31 37 0a 64 69 evision 1.217.di
00a0: 66 66 20 2d 75 20 2d 72 31 2e 32 31 37 20 74 63 ff -u -r1.217 tc
00b0: 6c 2e 68 0a 2d 2d 2d 20 67 65 6e 65 72 69 63 2f l.h.--- generic/
00c0: 74 63 6c 2e 68 09 35 20 4f 63 74 20 32 30 30 36 tcl.h.5 Oct 2006
00d0: 20 32 31 3a 32 34 3a 33 39 20 2d 30 30 30 30 09 21:24:39 -0000.
00e0: 31 2e 32 31 37 0a 2b 2b 2b 20 67 65 6e 65 72 69 1.217.+++ generi
00f0: 63 2f 74 63 6c 2e 68 09 31 34 20 4f 63 74 20 32 c/tcl.h.14 Oct 2
0100: 30 30 36 20 31 36 3a 35 38 3a 35 39 20 2d 30 30 006 16:58:59 -00
0110: 30 30 0a 40 40 20 2d 31 30 36 32 2c 37 20 2b 31 00.@@ -1062,7 +1
0120: 30 36 32 2c 37 20 40 40 0a 20 20 2a 09 54 43 4c 062,7 @@. *.TCL
0130: 5f 45 56 41 4c 5f 47 4c 4f 42 41 4c 3a 09 45 78 _EVAL_GLOBAL:.Ex
0140: 65 63 75 74 65 20 73 63 72 69 70 74 20 69 6e 20 ecute script in
0150: 67 6c 6f 62 61 6c 20 6e 61 6d 65 73 70 61 63 65 global namespace
0160: 0a 20 20 2a 09 54 43 4c 5f 45 56 41 4c 5f 44 49 . *.TCL_EVAL_DI
0170: 52 45 43 54 3a 09 44 6f 20 6e 6f 74 20 63 6f 6d RECT:.Do not com
0180: 70 69 6c 65 20 74 68 69 73 20 73 63 72 69 70 74 pile this script
0190: 0a 20 20 2a 09 54 43 4c 5f 45 56 41 4c 5f 49 4e . *.TCL_EVAL_IN
01a0: 56 4f 4b 45 3a 09 4d 61 67 69 63 61 6c 20 54 63 VOKE:.Magical Tc
01b0: 6c 5f 45 76 61 6c 4f 62 6a 76 20 6d 6f 64 65 20 l_EvalObjv mode
01c0: 66 6f 72 20 61 6c 69 61 73 65 73 2f 65 6e 73 65 for aliases/ense
01d0: 6d 62 6c 65 73 0a 2d 20 2a 09 09 09 09 6f 20 52 mbles.- *....o R
01e0: 75 6e 20 69 6e 20 67 6c 6f 62 61 6c 20 6e 61 6d un in global nam
01f0: 65 73 70 61 63 65 0a 2b 20 2a 09 09 09 09 6f 20 espace.+ *....o
0200: 52 75 6e 20 69 6e 20 69 50 74 72 2d 3e 6c 6f 6f Run in iPtr->loo
0210: 6b 75 70 4e 73 50 74 72 20 6f 72 20 67 6c 6f 62 kupNsPtr or glob
0220: 61 6c 20 6e 61 6d 65 73 70 61 63 65 0a 20 20 2a al namespace. *
0230: 09 09 09 09 6f 20 43 75 74 20 6f 75 74 20 6f 66 ....o Cut out of
0240: 20 65 72 72 6f 72 20 74 72 61 63 65 73 0a 20 20 error traces.
0250: 2a 09 09 09 09 6f 20 44 6f 6e 27 74 20 72 65 73 *....o Don't res
0260: 65 74 20 74 68 65 20 66 6c 61 67 73 20 63 6f 6e et the flags con
0270: 74 72 6f 6c 6c 69 6e 67 20 65 6e 73 65 6d 62 6c trolling ensembl
0280: 65 0a 20 20 2a 09 09 09 09 20 20 65 72 72 6f 72 e. *.... error
0290: 20 6d 65 73 73 61 67 65 20 72 65 77 72 69 74 69 message rewriti
02a0: 6e 67 2e 0a 49 6e 64 65 78 3a 20 67 65 6e 65 72 ng..Index: gener
02b0: 69 63 2f 74 63 6c 42 61 73 69 63 2e 63 0a 3d 3d ic/tclBasic.c.==
02c0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
02d0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
02e0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
02f0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0300: 3d 0a 52 43 53 20 66 69 6c 65 3a 20 2f 63 76 73 =.RCS file: /cvs
0310: 72 6f 6f 74 2f 74 63 6c 2f 74 63 6c 2f 67 65 6e root/tcl/tcl/gen
0320: 65 72 69 63 2f 74 63 6c 42 61 73 69 63 2e 63 2c eric/tclBasic.c,
0330: 76 0a 72 65 74 72 69 65 76 69 6e 67 20 72 65 76 v.retrieving rev
0340: 69 73 69 6f 6e 20 31 2e 31 39 37 0a 64 69 66 66 ision 1.197.diff
0350: 20 2d 75 20 2d 72 31 2e 31 39 37 20 74 63 6c 42 -u -r1.197 tclB
0360: 61 73 69 63 2e 63 0a 2d 2d 2d 20 67 65 6e 65 72 asic.c.--- gener
0370: 69 63 2f 74 63 6c 42 61 73 69 63 2e 63 09 32 32 ic/tclBasic.c.22
0380: 20 53 65 70 20 32 30 30 36 20 31 38 3a 31 33 3a Sep 2006 18:13:
0390: 32 37 20 2d 30 30 30 30 09 31 2e 31 39 37 0a 2b 27 -0000.1.197.+
03a0: 2b 2b 20 67 65 6e 65 72 69 63 2f 74 63 6c 42 61 ++ generic/tclBa
03b0: 73 69 63 2e 63 09 31 34 20 4f 63 74 20 32 30 30 sic.c.14 Oct 200
03c0: 36 20 31 36 3a 35 39 3a 30 31 20 2d 30 30 30 30 6 16:59:01 -0000
03d0: 0a 40 40 20 2d 32 37 32 2c 37 20 2b 32 37 32 2c .@@ -272,7 +272,
03e0: 39 20 40 40 0a 20 20 20 20 20 42 79 74 65 43 6f 9 @@. ByteCo
03f0: 64 65 53 74 61 74 73 20 2a 73 74 61 74 73 50 74 deStats *statsPt
0400: 72 3b 0a 20 23 65 6e 64 69 66 20 2f 2a 20 54 43 r;. #endif /* TC
0410: 4c 5f 43 4f 4d 50 49 4c 45 5f 53 54 41 54 53 20 L_COMPILE_STATS
0420: 2a 2f 0a 20 20 20 20 20 63 68 61 72 20 6d 61 74 */. char mat
0430: 68 46 75 6e 63 4e 61 6d 65 5b 33 32 5d 3b 0a 2d hFuncName[32];.-
0440: 0a 2b 20 20 20 20 43 61 6c 6c 46 72 61 6d 65 20 .+ CallFrame
0450: 2a 66 72 61 6d 65 50 74 72 3b 0a 2b 20 20 20 20 *framePtr;.+
0460: 69 6e 74 20 72 65 73 75 6c 74 3b 0a 2b 20 20 20 int result;.+
0470: 20 0a 20 20 20 20 20 54 63 6c 49 6e 69 74 53 75 . TclInitSu
0480: 62 73 79 73 74 65 6d 73 28 29 3b 0a 20 0a 20 20 bsystems();. .
0490: 20 20 20 2f 2a 0a 40 40 20 2d 33 30 36 2c 38 20 /*.@@ -306,8
04a0: 2b 33 30 38 2c 38 20 40 40 0a 20 0a 20 20 20 20 +308,8 @@. .
04b0: 20 69 50 74 72 2d 3e 6e 75 6d 4c 65 76 65 6c 73 iPtr->numLevels
04c0: 20 3d 20 30 3b 0a 20 20 20 20 20 69 50 74 72 2d = 0;. iPtr-
04d0: 3e 6d 61 78 4e 65 73 74 69 6e 67 44 65 70 74 68 >maxNestingDepth
04e0: 20 3d 20 4d 41 58 5f 4e 45 53 54 49 4e 47 5f 44 = MAX_NESTING_D
04f0: 45 50 54 48 3b 0a 2d 20 20 20 20 69 50 74 72 2d EPTH;.- iPtr-
0500: 3e 66 72 61 6d 65 50 74 72 20 3d 20 4e 55 4c 4c >framePtr = NULL
0510: 3b 0a 2d 20 20 20 20 69 50 74 72 2d 3e 76 61 72 ;.- iPtr->var
0520: 46 72 61 6d 65 50 74 72 20 3d 20 4e 55 4c 4c 3b FramePtr = NULL;
0530: 0a 2b 20 20 20 20 69 50 74 72 2d 3e 66 72 61 6d .+ iPtr->fram
0540: 65 50 74 72 20 3d 20 4e 55 4c 4c 3b 20 20 20 20 ePtr = NULL;
0550: 2f 2a 20 69 6e 69 74 69 61 6c 69 73 65 20 61 73 /* initialise as
0560: 20 73 6f 6f 6e 20 61 73 20 3a 3a 20 69 73 20 61 soon as :: is a
0570: 76 61 69 6c 61 62 6c 65 20 2a 2f 0a 2b 20 20 20 vailable */.+
0580: 20 69 50 74 72 2d 3e 76 61 72 46 72 61 6d 65 50 iPtr->varFrameP
0590: 74 72 20 3d 20 4e 55 4c 4c 3b 20 2f 2a 20 69 6e tr = NULL; /* in
05a0: 69 74 69 61 6c 69 73 65 20 61 73 20 73 6f 6f 6e itialise as soon
05b0: 20 61 73 20 3a 3a 20 69 73 20 61 76 61 69 6c 61 as :: is availa
05c0: 62 6c 65 20 2a 2f 0a 20 20 20 20 20 69 50 74 72 ble */. iPtr
05d0: 2d 3e 61 63 74 69 76 65 56 61 72 54 72 61 63 65 ->activeVarTrace
05e0: 50 74 72 20 3d 20 4e 55 4c 4c 3b 0a 20 0a 20 20 Ptr = NULL;. .
05f0: 20 20 20 69 50 74 72 2d 3e 72 65 74 75 72 6e 4f iPtr->returnO
0600: 70 74 73 20 3d 20 4e 55 4c 4c 3b 0a 40 40 20 2d pts = NULL;.@@ -
0610: 33 32 30 2c 36 20 2b 33 32 32 2c 39 20 40 40 0a 320,6 +322,9 @@.
0620: 20 20 20 20 20 69 50 74 72 2d 3e 72 65 74 75 72 iPtr->retur
0630: 6e 4c 65 76 65 6c 20 3d 20 31 3b 0a 20 20 20 20 nLevel = 1;.
0640: 20 69 50 74 72 2d 3e 72 65 74 75 72 6e 43 6f 64 iPtr->returnCod
0650: 65 20 3d 20 54 43 4c 5f 4f 4b 3b 0a 20 0a 2b 20 e = TCL_OK;. .+
0660: 20 20 20 69 50 74 72 2d 3e 72 6f 6f 74 46 72 61 iPtr->rootFra
0670: 6d 65 50 74 72 20 3d 20 4e 55 4c 4c 3b 20 2f 2a mePtr = NULL; /*
0680: 20 69 6e 69 74 69 61 6c 69 73 65 20 61 73 20 73 initialise as s
0690: 6f 6f 6e 20 61 73 20 3a 3a 20 69 73 20 61 76 61 oon as :: is ava
06a0: 69 6c 61 62 6c 65 20 2a 2f 0a 2b 20 20 20 20 69 ilable */.+ i
06b0: 50 74 72 2d 3e 6c 6f 6f 6b 75 70 4e 73 50 74 72 Ptr->lookupNsPtr
06c0: 20 3d 20 4e 55 4c 4c 3b 0a 2b 0a 20 20 20 20 20 = NULL;.+.
06d0: 69 50 74 72 2d 3e 61 70 70 65 6e 64 52 65 73 75 iPtr->appendResu
06e0: 6c 74 20 3d 20 4e 55 4c 4c 3b 0a 20 20 20 20 20 lt = NULL;.
06f0: 69 50 74 72 2d 3e 61 70 70 65 6e 64 41 76 6c 20 iPtr->appendAvl
0700: 3d 20 30 3b 0a 20 20 20 20 20 69 50 74 72 2d 3e = 0;. iPtr->
0710: 61 70 70 65 6e 64 55 73 65 64 20 3d 20 30 3b 0a appendUsed = 0;.
0720: 40 40 20 2d 33 35 39 2c 36 20 2b 33 36 34 2c 32 @@ -359,6 +364,2
0730: 34 20 40 40 0a 20 20 20 20 20 7d 0a 20 0a 20 20 4 @@. }. .
0740: 20 20 20 2f 2a 0a 2b 20 20 20 20 20 2a 20 49 6e /*.+ * In
0750: 69 74 69 61 6c 69 73 65 20 74 68 65 20 72 6f 6f itialise the roo
0760: 74 43 61 6c 6c 66 72 61 6d 65 2e 20 49 74 20 63 tCallframe. It c
0770: 61 6e 6e 6f 74 20 62 65 20 61 6c 6c 6f 63 61 74 annot be allocat
0780: 65 64 20 6f 6e 20 74 68 65 20 73 74 61 63 6b 2c ed on the stack,
0790: 20 61 73 0a 2b 20 20 20 20 20 2a 20 69 74 20 68 as.+ * it h
07a0: 61 73 20 74 6f 20 62 65 20 69 6e 20 70 6c 61 63 as to be in plac
07b0: 65 20 62 65 66 6f 72 65 20 54 63 6c 43 72 65 61 e before TclCrea
07c0: 74 65 45 78 65 63 45 6e 76 20 74 72 69 65 73 20 teExecEnv tries
07d0: 74 6f 20 75 73 65 20 61 20 76 61 72 69 61 62 6c to use a variabl
07e0: 65 2e 20 0a 2b 20 20 20 20 20 2a 2f 0a 2b 0a 2b e. .+ */.+.+
07f0: 20 20 20 20 2f 2a 20 54 68 69 73 20 69 73 20 6e /* This is n
0800: 65 65 64 65 64 20 74 6f 20 73 61 74 69 73 66 79 eeded to satisfy
0810: 20 47 43 43 20 33 2e 33 27 73 20 73 74 72 69 63 GCC 3.3's stric
0820: 74 20 61 6c 69 61 73 69 6e 67 20 72 75 6c 65 73 t aliasing rules
0830: 20 2a 2f 0a 2b 20 20 20 20 66 72 61 6d 65 50 74 */.+ framePt
0840: 72 20 3d 20 28 43 61 6c 6c 46 72 61 6d 65 20 2a r = (CallFrame *
0850: 29 20 63 6b 61 6c 6c 6f 63 28 73 69 7a 65 6f 66 ) ckalloc(sizeof
0860: 28 43 61 6c 6c 46 72 61 6d 65 29 29 3b 0a 2b 20 (CallFrame));.+
0870: 20 20 20 72 65 73 75 6c 74 20 3d 20 54 63 6c 5f result = Tcl_
0880: 50 75 73 68 43 61 6c 6c 46 72 61 6d 65 28 69 6e PushCallFrame(in
0890: 74 65 72 70 2c 20 28 54 63 6c 5f 43 61 6c 6c 46 terp, (Tcl_CallF
08a0: 72 61 6d 65 20 2a 29 20 66 72 61 6d 65 50 74 72 rame *) framePtr
08b0: 2c 0a 2b 09 20 20 20 20 28 54 63 6c 5f 4e 61 6d ,.+. (Tcl_Nam
08c0: 65 73 70 61 63 65 20 2a 29 20 69 50 74 72 2d 3e espace *) iPtr->
08d0: 67 6c 6f 62 61 6c 4e 73 50 74 72 2c 20 2f 2a 69 globalNsPtr, /*i
08e0: 73 50 72 6f 63 43 61 6c 6c 46 72 61 6d 65 2a 2f sProcCallFrame*/
08f0: 20 30 29 3b 0a 2b 20 20 20 20 69 66 20 28 72 65 0);.+ if (re
0900: 73 75 6c 74 20 21 3d 20 54 43 4c 5f 4f 4b 29 20 sult != TCL_OK)
0910: 7b 0a 2b 09 54 63 6c 5f 50 61 6e 69 63 28 22 54 {.+.Tcl_Panic("T
0920: 63 6c 5f 43 72 65 61 74 65 49 6e 74 65 72 70 3a cl_CreateInterp:
0930: 20 66 61 69 6c 65 20 74 6f 20 70 75 73 68 20 74 faile to push t
0940: 68 65 20 72 6f 6f 74 20 73 74 61 63 6b 20 66 72 he root stack fr
0950: 61 6d 65 22 29 3b 0a 2b 20 20 20 20 7d 0a 2b 20 ame");.+ }.+
0960: 20 20 20 66 72 61 6d 65 50 74 72 2d 3e 6f 62 6a framePtr->obj
0970: 63 20 3d 20 30 3b 0a 2b 0a 2b 20 20 20 20 69 50 c = 0;.+.+ iP
0980: 74 72 2d 3e 66 72 61 6d 65 50 74 72 20 3d 20 66 tr->framePtr = f
0990: 72 61 6d 65 50 74 72 3b 20 0a 2b 20 20 20 20 69 ramePtr; .+ i
09a0: 50 74 72 2d 3e 76 61 72 46 72 61 6d 65 50 74 72 Ptr->varFramePtr
09b0: 20 3d 20 66 72 61 6d 65 50 74 72 3b 0a 2b 20 20 = framePtr;.+
09c0: 20 20 69 50 74 72 2d 3e 72 6f 6f 74 46 72 61 6d iPtr->rootFram
09d0: 65 50 74 72 20 3d 20 66 72 61 6d 65 50 74 72 3b ePtr = framePtr;
09e0: 0a 2b 0a 2b 20 20 20 20 2f 2a 0a 20 20 20 20 20 .+.+ /*.
09f0: 20 2a 20 49 6e 69 74 69 61 6c 69 7a 65 20 73 75 * Initialize su
0a00: 70 70 6f 72 74 20 66 6f 72 20 63 6f 64 65 20 63 pport for code c
0a10: 6f 6d 70 69 6c 61 74 69 6f 6e 20 61 6e 64 20 65 ompilation and e
0a20: 78 65 63 75 74 69 6f 6e 2e 20 57 65 20 63 61 6c xecution. We cal
0a30: 6c 0a 20 20 20 20 20 20 2a 20 54 63 6c 43 72 65 l. * TclCre
0a40: 61 74 65 45 78 65 63 45 6e 76 20 61 66 74 65 72 ateExecEnv after
0a50: 20 69 6e 69 74 69 61 6c 69 7a 69 6e 67 20 6e 61 initializing na
0a60: 6d 65 73 70 61 63 65 73 20 73 69 6e 63 65 20 69 mespaces since i
0a70: 74 20 74 72 69 65 73 20 74 6f 0a 20 20 20 20 20 t tries to.
0a80: 20 2a 20 72 65 66 65 72 65 6e 63 65 20 61 20 54 * reference a T
0a90: 63 6c 20 76 61 72 69 61 62 6c 65 20 28 69 74 20 cl variable (it
0aa0: 6c 69 6e 6b 73 20 74 6f 20 74 68 65 20 54 63 6c links to the Tcl
0ab0: 20 22 74 63 6c 5f 74 72 61 63 65 45 78 65 63 22 "tcl_traceExec"
0ac0: 0a 40 40 20 2d 31 30 35 34 2c 36 20 2b 31 30 37 .@@ -1054,6 +107
0ad0: 37 2c 31 32 20 40 40 0a 20 20 20 20 20 20 2a 2f 7,12 @@. */
0ae0: 0a 20 0a 20 20 20 20 20 54 63 6c 5f 44 65 6c 65 . . Tcl_Dele
0af0: 74 65 4e 61 6d 65 73 70 61 63 65 28 28 54 63 6c teNamespace((Tcl
0b00: 5f 4e 61 6d 65 73 70 61 63 65 20 2a 29 20 69 50 _Namespace *) iP
0b10: 74 72 2d 3e 67 6c 6f 62 61 6c 4e 73 50 74 72 29 tr->globalNsPtr)
0b20: 3b 0a 2b 20 20 20 20 69 66 20 28 69 50 74 72 2d ;.+ if (iPtr-
0b30: 3e 66 72 61 6d 65 50 74 72 20 21 3d 20 69 50 74 >framePtr != iPt
0b40: 72 2d 3e 72 6f 6f 74 46 72 61 6d 65 50 74 72 29 r->rootFramePtr)
0b50: 20 7b 0a 2b 09 54 63 6c 5f 50 61 6e 69 63 28 22 {.+.Tcl_Panic("
0b60: 44 65 6c 65 74 65 49 6e 74 65 72 70 50 72 6f 63 DeleteInterpProc
0b70: 3a 20 70 6f 70 70 69 6e 67 20 72 6f 6f 74 43 61 : popping rootCa
0b80: 6c 6c 46 72 61 6d 65 20 77 69 74 68 20 6f 74 68 llFrame with oth
0b90: 65 72 20 66 72 61 6d 65 73 20 6f 6e 20 74 6f 70 er frames on top
0ba0: 22 29 3b 0a 2b 20 20 20 20 7d 0a 2b 20 20 20 20 ");.+ }.+
0bb0: 54 63 6c 5f 50 6f 70 43 61 6c 6c 46 72 61 6d 65 Tcl_PopCallFrame
0bc0: 28 69 6e 74 65 72 70 29 3b 0a 2b 20 20 20 20 63 (interp);.+ c
0bd0: 6b 66 72 65 65 28 28 63 68 61 72 20 2a 29 69 50 kfree((char *)iP
0be0: 74 72 2d 3e 72 6f 6f 74 46 72 61 6d 65 50 74 72 tr->rootFramePtr
0bf0: 29 3b 0a 2b 20 20 20 20 69 50 74 72 2d 3e 72 6f );.+ iPtr->ro
0c00: 6f 74 46 72 61 6d 65 50 74 72 20 3d 20 4e 55 4c otFramePtr = NUL
0c10: 4c 3b 0a 20 0a 20 20 20 20 20 2f 2a 0a 20 20 20 L;. . /*.
0c20: 20 20 20 2a 20 46 72 65 65 20 75 70 20 74 68 65 * Free up the
0c30: 20 72 65 73 75 6c 74 20 2a 61 66 74 65 72 2a 20 result *after*
0c40: 64 65 6c 65 74 69 6e 67 20 76 61 72 69 61 62 6c deleting variabl
0c50: 65 73 2c 20 73 69 6e 63 65 20 76 61 72 69 61 62 es, since variab
0c60: 6c 65 20 64 65 6c 65 74 69 6f 6e 0a 40 40 20 2d le deletion.@@ -
0c70: 33 32 34 30 2c 31 30 20 2b 33 32 36 39 2c 31 30 3240,10 +3269,10
0c80: 20 40 40 0a 20 20 20 20 20 49 6e 74 65 72 70 20 @@. Interp
0c90: 2a 69 50 74 72 20 3d 20 28 49 6e 74 65 72 70 20 *iPtr = (Interp
0ca0: 2a 29 20 69 6e 74 65 72 70 3b 0a 20 20 20 20 20 *) interp;.
0cb0: 54 63 6c 5f 4f 62 6a 20 2a 2a 6e 65 77 4f 62 6a Tcl_Obj **newObj
0cc0: 76 3b 0a 20 20 20 20 20 69 6e 74 20 69 3b 0a 2d v;. int i;.-
0cd0: 20 20 20 20 43 61 6c 6c 46 72 61 6d 65 20 2a 73 CallFrame *s
0ce0: 61 76 65 64 56 61 72 46 72 61 6d 65 50 74 72 3b avedVarFramePtr;
0cf0: 2f 2a 20 53 61 76 65 73 20 6f 6c 64 20 63 6f 70 /* Saves old cop
0d00: 79 20 6f 66 20 69 50 74 72 2d 3e 76 61 72 46 72 y of iPtr->varFr
0d10: 61 6d 65 50 74 72 20 69 6e 20 63 61 73 65 0a 2d amePtr in case.-
0d20: 09 09 09 09 20 2a 20 54 43 4c 5f 45 56 41 4c 5f .... * TCL_EVAL_
0d30: 47 4c 4f 42 41 4c 20 77 61 73 20 73 65 74 2e 20 GLOBAL was set.
0d40: 2a 2f 0a 2b 20 20 20 20 43 61 6c 6c 46 72 61 6d */.+ CallFram
0d50: 65 20 2a 73 61 76 65 64 56 61 72 46 72 61 6d 65 e *savedVarFrame
0d60: 50 74 72 20 3d 20 4e 55 4c 4c 3b 0a 2b 20 20 20 Ptr = NULL;.+
0d70: 20 43 61 6c 6c 46 72 61 6d 65 20 2a 76 61 72 46 CallFrame *varF
0d80: 72 61 6d 65 50 74 72 20 3d 20 69 50 74 72 2d 3e ramePtr = iPtr->
0d90: 76 61 72 46 72 61 6d 65 50 74 72 3b 0a 20 20 20 varFramePtr;.
0da0: 20 20 69 6e 74 20 63 6f 64 65 20 3d 20 54 43 4c int code = TCL
0db0: 5f 4f 4b 3b 0a 2d 20 20 20 20 69 6e 74 20 74 72 _OK;.- int tr
0dc0: 61 63 65 43 6f 64 65 20 3d 20 54 43 4c 5f 4f 4b aceCode = TCL_OK
0dd0: 3b 0a 2b 20 20 20 20 69 6e 74 20 74 72 61 63 65 ;.+ int trace
0de0: 43 6f 64 65 20 3d 20 54 43 4c 5f 4f 4b 3b 20 0a Code = TCL_OK; .
0df0: 20 20 20 20 20 69 6e 74 20 63 68 65 63 6b 54 72 int checkTr
0e00: 61 63 65 73 20 3d 20 31 3b 0a 20 20 20 20 20 69 aces = 1;. i
0e10: 6e 74 20 63 6d 64 45 70 6f 63 68 3b 0a 20 20 20 nt cmdEpoch;.
0e20: 20 20 4e 61 6d 65 73 70 61 63 65 20 2a 73 61 76 Namespace *sav
0e30: 65 64 4e 73 50 74 72 20 3d 20 4e 55 4c 4c 3b 0a edNsPtr = NULL;.
0e40: 40 40 20 2d 33 32 35 37 2c 31 32 20 2b 33 32 38 @@ -3257,12 +328
0e50: 36 2c 31 39 20 40 40 0a 20 20 20 20 20 7d 0a 20 6,19 @@. }.
0e60: 0a 20 20 20 20 20 2f 2a 20 43 6f 6e 66 69 67 75 . /* Configu
0e70: 72 65 20 65 76 61 6c 75 61 74 69 6f 6e 20 63 6f re evaluation co
0e80: 6e 74 65 78 74 20 74 6f 20 6d 61 74 63 68 20 74 ntext to match t
0e90: 68 65 20 72 65 71 75 65 73 74 65 64 20 66 6c 61 he requested fla
0ea0: 67 73 20 2a 2f 0a 2d 20 20 20 20 73 61 76 65 64 gs */.- saved
0eb0: 56 61 72 46 72 61 6d 65 50 74 72 20 3d 20 69 50 VarFramePtr = iP
0ec0: 74 72 2d 3e 76 61 72 46 72 61 6d 65 50 74 72 3b tr->varFramePtr;
0ed0: 0a 2d 20 20 20 20 69 66 20 28 66 6c 61 67 73 20 .- if (flags
0ee0: 26 20 54 43 4c 5f 45 56 41 4c 5f 47 4c 4f 42 41 & TCL_EVAL_GLOBA
0ef0: 4c 29 20 7b 0a 2d 09 69 50 74 72 2d 3e 76 61 72 L) {.-.iPtr->var
0f00: 46 72 61 6d 65 50 74 72 20 3d 20 4e 55 4c 4c 3b FramePtr = NULL;
0f10: 0a 2d 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 .- } else if
0f20: 28 28 66 6c 61 67 73 20 26 20 54 43 4c 5f 45 56 ((flags & TCL_EV
0f30: 41 4c 5f 49 4e 56 4f 4b 45 29 20 26 26 20 69 50 AL_INVOKE) && iP
0f40: 74 72 2d 3e 76 61 72 46 72 61 6d 65 50 74 72 29 tr->varFramePtr)
0f50: 20 7b 0a 2d 09 73 61 76 65 64 4e 73 50 74 72 20 {.-.savedNsPtr
0f60: 3d 20 69 50 74 72 2d 3e 76 61 72 46 72 61 6d 65 = iPtr->varFrame
0f70: 50 74 72 2d 3e 6e 73 50 74 72 3b 0a 2d 09 69 50 Ptr->nsPtr;.-.iP
0f80: 74 72 2d 3e 76 61 72 46 72 61 6d 65 50 74 72 2d tr->varFramePtr-
0f90: 3e 6e 73 50 74 72 20 3d 20 69 50 74 72 2d 3e 67 >nsPtr = iPtr->g
0fa0: 6c 6f 62 61 6c 4e 73 50 74 72 3b 0a 2b 0a 2b 20 lobalNsPtr;.+.+
0fb0: 20 20 20 69 66 20 28 28 66 6c 61 67 73 20 26 20 if ((flags &
0fc0: 54 43 4c 5f 45 56 41 4c 5f 47 4c 4f 42 41 4c 29 TCL_EVAL_GLOBAL)
0fd0: 0a 2b 09 20 20 20 20 26 26 20 28 76 61 72 46 72 .+. && (varFr
0fe0: 61 6d 65 50 74 72 20 21 3d 20 69 50 74 72 2d 3e amePtr != iPtr->
0ff0: 72 6f 6f 74 46 72 61 6d 65 50 74 72 29 29 20 7b rootFramePtr)) {
1000: 0a 2b 09 76 61 72 46 72 61 6d 65 50 74 72 20 3d .+.varFramePtr =
1010: 20 69 50 74 72 2d 3e 72 6f 6f 74 46 72 61 6d 65 iPtr->rootFrame
1020: 50 74 72 3b 0a 2b 09 73 61 76 65 64 56 61 72 46 Ptr;.+.savedVarF
1030: 72 61 6d 65 50 74 72 20 3d 20 69 50 74 72 2d 3e ramePtr = iPtr->
1040: 76 61 72 46 72 61 6d 65 50 74 72 3b 0a 2b 09 69 varFramePtr;.+.i
1050: 50 74 72 2d 3e 76 61 72 46 72 61 6d 65 50 74 72 Ptr->varFramePtr
1060: 20 3d 20 76 61 72 46 72 61 6d 65 50 74 72 3b 20 = varFramePtr;
1070: 0a 2b 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 .+ } else if
1080: 28 66 6c 61 67 73 20 26 20 54 43 4c 5f 45 56 41 (flags & TCL_EVA
1090: 4c 5f 49 4e 56 4f 4b 45 29 20 7b 0a 2b 09 73 61 L_INVOKE) {.+.sa
10a0: 76 65 64 4e 73 50 74 72 20 3d 20 76 61 72 46 72 vedNsPtr = varFr
10b0: 61 6d 65 50 74 72 2d 3e 6e 73 50 74 72 3b 0a 2b amePtr->nsPtr;.+
10c0: 09 69 66 20 28 69 50 74 72 2d 3e 6c 6f 6f 6b 75 .if (iPtr->looku
10d0: 70 4e 73 50 74 72 29 20 7b 0a 2b 09 20 20 20 20 pNsPtr) {.+.
10e0: 76 61 72 46 72 61 6d 65 50 74 72 2d 3e 6e 73 50 varFramePtr->nsP
10f0: 74 72 20 3d 20 69 50 74 72 2d 3e 6c 6f 6f 6b 75 tr = iPtr->looku
1100: 70 4e 73 50 74 72 3b 0a 2b 09 7d 20 65 6c 73 65 pNsPtr;.+.} else
1110: 20 7b 0a 2b 09 20 20 20 20 76 61 72 46 72 61 6d {.+. varFram
1120: 65 50 74 72 2d 3e 6e 73 50 74 72 20 3d 20 69 50 ePtr->nsPtr = iP
1130: 74 72 2d 3e 67 6c 6f 62 61 6c 4e 73 50 74 72 3b tr->globalNsPtr;
1140: 0a 2b 09 7d 0a 20 20 20 20 20 7d 0a 20 0a 20 20 .+.}. }. .
1150: 20 20 20 2f 2a 0a 40 40 20 2d 33 32 38 36 2c 31 /*.@@ -3286,1
1160: 34 20 2b 33 33 32 32 2c 31 32 20 40 40 0a 20 20 4 +3322,12 @@.
1170: 20 20 20 20 20 20 20 69 6e 74 20 6e 65 77 4f 62 int newOb
1180: 6a 63 2c 20 68 61 6e 64 6c 65 72 4f 62 6a 63 3b jc, handlerObjc;
1190: 0a 20 20 20 20 20 20 20 20 20 54 63 6c 5f 4f 62 . Tcl_Ob
11a0: 6a 20 2a 2a 68 61 6e 64 6c 65 72 4f 62 6a 76 3b j **handlerObjv;
11b0: 0a 20 0a 2d 09 69 66 20 28 69 50 74 72 2d 3e 76 . .-.if (iPtr->v
11c0: 61 72 46 72 61 6d 65 50 74 72 20 21 3d 20 4e 55 arFramePtr != NU
11d0: 4c 4c 29 20 7b 0a 2d 09 20 20 20 20 63 75 72 72 LL) {.-. curr
11e0: 4e 73 50 74 72 20 3d 20 69 50 74 72 2d 3e 76 61 NsPtr = iPtr->va
11f0: 72 46 72 61 6d 65 50 74 72 2d 3e 6e 73 50 74 72 rFramePtr->nsPtr
1200: 3b 0a 2d 09 7d 0a 2b 09 63 75 72 72 4e 73 50 74 ;.-.}.+.currNsPt
1210: 72 20 3d 20 76 61 72 46 72 61 6d 65 50 74 72 2d r = varFramePtr-
1220: 3e 6e 73 50 74 72 3b 0a 20 09 69 66 20 28 28 63 >nsPtr;. .if ((c
1230: 75 72 72 4e 73 50 74 72 20 3d 3d 20 4e 55 4c 4c urrNsPtr == NULL
1240: 29 20 7c 7c 20 28 63 75 72 72 4e 73 50 74 72 2d ) || (currNsPtr-
1250: 3e 75 6e 6b 6e 6f 77 6e 48 61 6e 64 6c 65 72 50 >unknownHandlerP
1260: 74 72 20 3d 3d 20 4e 55 4c 4c 29 29 20 7b 0a 20 tr == NULL)) {.
1270: 09 20 20 20 20 63 75 72 72 4e 73 50 74 72 20 3d . currNsPtr =
1280: 20 69 50 74 72 2d 3e 67 6c 6f 62 61 6c 4e 73 50 iPtr->globalNsP
1290: 74 72 3b 0a 2d 09 7d 0a 2d 09 69 66 20 28 63 75 tr;.-.}.-.if (cu
12a0: 72 72 4e 73 50 74 72 20 3d 3d 20 4e 55 4c 4c 29 rrNsPtr == NULL)
12b0: 20 7b 0a 2d 09 20 20 20 20 54 63 6c 5f 50 61 6e {.-. Tcl_Pan
12c0: 69 63 28 22 54 63 6c 45 76 61 6c 4f 62 6a 76 49 ic("TclEvalObjvI
12d0: 6e 74 65 72 6e 61 6c 3a 20 4e 55 4c 4c 20 67 6c nternal: NULL gl
12e0: 6f 62 61 6c 20 6e 61 6d 65 73 70 61 63 65 20 70 obal namespace p
12f0: 6f 69 6e 74 65 72 22 29 3b 0a 2b 09 20 20 20 20 ointer");.+.
1300: 69 66 20 28 63 75 72 72 4e 73 50 74 72 20 3d 3d if (currNsPtr ==
1310: 20 4e 55 4c 4c 29 20 7b 0a 2b 09 09 54 63 6c 5f NULL) {.+..Tcl_
1320: 50 61 6e 69 63 28 22 54 63 6c 45 76 61 6c 4f 62 Panic("TclEvalOb
1330: 6a 76 49 6e 74 65 72 6e 61 6c 3a 20 4e 55 4c 4c jvInternal: NULL
1340: 20 67 6c 6f 62 61 6c 20 6e 61 6d 65 73 70 61 63 global namespac
1350: 65 20 70 6f 69 6e 74 65 72 22 29 3b 0a 2b 09 20 e pointer");.+.
1360: 20 20 20 7d 0a 20 09 7d 0a 20 20 20 20 20 20 20 }. .}.
1370: 20 20 69 66 20 28 63 75 72 72 4e 73 50 74 72 2d if (currNsPtr-
1380: 3e 75 6e 6b 6e 6f 77 6e 48 61 6e 64 6c 65 72 50 >unknownHandlerP
1390: 74 72 20 3d 3d 20 4e 55 4c 4c 29 20 7b 0a 20 20 tr == NULL) {.
13a0: 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 47 6c /* Gl
13b0: 6f 62 61 6c 20 6e 61 6d 65 73 70 61 63 65 20 68 obal namespace h
13c0: 61 73 20 6c 6f 73 74 20 75 6e 6b 6e 6f 77 6e 20 as lost unknown
13d0: 68 61 6e 64 6c 65 72 2c 20 72 65 73 65 74 2e 20 handler, reset.
13e0: 2a 2f 0a 40 40 20 2d 33 33 33 30 2c 31 34 20 2b */.@@ -3330,14 +
13f0: 33 33 36 34 2c 31 36 20 40 40 0a 20 20 20 20 20 3364,16 @@.
1400: 20 20 20 20 7d 0a 20 09 63 6b 66 72 65 65 28 28 }. .ckfree((
1410: 63 68 61 72 20 2a 29 20 6e 65 77 4f 62 6a 76 29 char *) newObjv)
1420: 3b 0a 20 09 69 66 20 28 73 61 76 65 64 4e 73 50 ;. .if (savedNsP
1430: 74 72 29 20 7b 0a 2d 09 20 20 20 20 69 50 74 72 tr) {.-. iPtr
1440: 2d 3e 76 61 72 46 72 61 6d 65 50 74 72 2d 3e 6e ->varFramePtr->n
1450: 73 50 74 72 20 3d 20 73 61 76 65 64 4e 73 50 74 sPtr = savedNsPt
1460: 72 3b 0a 2b 09 20 20 20 20 76 61 72 46 72 61 6d r;.+. varFram
1470: 65 50 74 72 2d 3e 6e 73 50 74 72 20 3d 20 73 61 ePtr->nsPtr = sa
1480: 76 65 64 4e 73 50 74 72 3b 0a 2b 09 20 20 20 20 vedNsPtr;.+.
1490: 69 50 74 72 2d 3e 6c 6f 6f 6b 75 70 4e 73 50 74 iPtr->lookupNsPt
14a0: 72 20 3d 20 4e 55 4c 4c 3b 0a 20 09 7d 0a 20 09 r = NULL;. .}. .
14b0: 67 6f 74 6f 20 64 6f 6e 65 3b 0a 20 20 20 20 20 goto done;.
14c0: 7d 0a 20 20 20 20 20 69 66 20 28 73 61 76 65 64 }. if (saved
14d0: 4e 73 50 74 72 29 20 7b 0a 2d 09 69 50 74 72 2d NsPtr) {.-.iPtr-
14e0: 3e 76 61 72 46 72 61 6d 65 50 74 72 2d 3e 6e 73 >varFramePtr->ns
14f0: 50 74 72 20 3d 20 73 61 76 65 64 4e 73 50 74 72 Ptr = savedNsPtr
1500: 3b 0a 2b 09 76 61 72 46 72 61 6d 65 50 74 72 2d ;.+.varFramePtr-
1510: 3e 6e 73 50 74 72 20 3d 20 73 61 76 65 64 4e 73 >nsPtr = savedNs
1520: 50 74 72 3b 0a 2b 09 69 50 74 72 2d 3e 6c 6f 6f Ptr;.+.iPtr->loo
1530: 6b 75 70 4e 73 50 74 72 20 3d 20 4e 55 4c 4c 3b kupNsPtr = NULL;
1540: 0a 20 20 20 20 20 7d 0a 2d 0a 2b 20 20 20 20 0a . }.-.+ .
1550: 20 20 20 20 20 2f 2a 0a 20 20 20 20 20 20 2a 20 /*. *
1560: 43 61 6c 6c 20 74 72 61 63 65 20 66 75 6e 63 74 Call trace funct
1570: 69 6f 6e 73 20 69 66 20 6e 65 65 64 65 64 2e 0a ions if needed..
1580: 20 20 20 20 20 20 2a 2f 0a 40 40 20 2d 33 34 32 */.@@ -342
1590: 37 2c 37 20 2b 33 34 36 33 2c 39 20 40 40 0a 20 7,7 +3463,9 @@.
15a0: 20 20 20 20 7d 0a 20 0a 20 20 20 20 20 64 6f 6e }. . don
15b0: 65 3a 0a 2d 20 20 20 20 69 50 74 72 2d 3e 76 61 e:.- iPtr->va
15c0: 72 46 72 61 6d 65 50 74 72 20 3d 20 73 61 76 65 rFramePtr = save
15d0: 64 56 61 72 46 72 61 6d 65 50 74 72 3b 0a 2b 20 dVarFramePtr;.+
15e0: 20 20 20 69 66 20 28 73 61 76 65 64 56 61 72 46 if (savedVarF
15f0: 72 61 6d 65 50 74 72 29 20 7b 0a 2b 09 69 50 74 ramePtr) {.+.iPt
1600: 72 2d 3e 76 61 72 46 72 61 6d 65 50 74 72 20 3d r->varFramePtr =
1610: 20 73 61 76 65 64 56 61 72 46 72 61 6d 65 50 74 savedVarFramePt
1620: 72 3b 0a 2b 20 20 20 20 7d 0a 20 20 20 20 20 72 r;.+ }. r
1630: 65 74 75 72 6e 20 63 6f 64 65 3b 0a 20 7d 0a 20 eturn code;. }.
1640: 0c 0a 40 40 20 2d 33 36 37 34 2c 37 20 2b 33 37 ..@@ -3674,7 +37
1650: 31 32 2c 37 20 40 40 0a 20 0a 20 20 20 20 20 73 12,7 @@. . s
1660: 61 76 65 64 56 61 72 46 72 61 6d 65 50 74 72 20 avedVarFramePtr
1670: 3d 20 69 50 74 72 2d 3e 76 61 72 46 72 61 6d 65 = iPtr->varFrame
1680: 50 74 72 3b 0a 20 20 20 20 20 69 66 20 28 66 6c Ptr;. if (fl
1690: 61 67 73 20 26 20 54 43 4c 5f 45 56 41 4c 5f 47 ags & TCL_EVAL_G
16a0: 4c 4f 42 41 4c 29 20 7b 0a 2d 09 69 50 74 72 2d LOBAL) {.-.iPtr-
16b0: 3e 76 61 72 46 72 61 6d 65 50 74 72 20 3d 20 4e >varFramePtr = N
16c0: 55 4c 4c 3b 0a 2b 09 69 50 74 72 2d 3e 76 61 72 ULL;.+.iPtr->var
16d0: 46 72 61 6d 65 50 74 72 20 3d 20 69 50 74 72 2d FramePtr = iPtr-
16e0: 3e 72 6f 6f 74 46 72 61 6d 65 50 74 72 3b 0a 20 >rootFramePtr;.
16f0: 20 20 20 20 7d 0a 20 0a 20 20 20 20 20 2f 2a 0a }. . /*.
1700: 40 40 20 2d 34 30 35 34 2c 37 20 2b 34 30 39 32 @@ -4054,7 +4092
1710: 2c 37 20 40 40 0a 20 0a 20 09 73 61 76 65 64 56 ,7 @@. . .savedV
1720: 61 72 46 72 61 6d 65 50 74 72 20 3d 20 69 50 74 arFramePtr = iPt
1730: 72 2d 3e 76 61 72 46 72 61 6d 65 50 74 72 3b 0a r->varFramePtr;.
1740: 20 09 69 66 20 28 66 6c 61 67 73 20 26 20 54 43 .if (flags & TC
1750: 4c 5f 45 56 41 4c 5f 47 4c 4f 42 41 4c 29 20 7b L_EVAL_GLOBAL) {
1760: 0a 2d 09 20 20 20 20 69 50 74 72 2d 3e 76 61 72 .-. iPtr->var
1770: 46 72 61 6d 65 50 74 72 20 3d 20 4e 55 4c 4c 3b FramePtr = NULL;
1780: 0a 2b 09 20 20 20 20 69 50 74 72 2d 3e 76 61 72 .+. iPtr->var
1790: 46 72 61 6d 65 50 74 72 20 3d 20 69 50 74 72 2d FramePtr = iPtr-
17a0: 3e 72 6f 6f 74 46 72 61 6d 65 50 74 72 3b 0a 20 >rootFramePtr;.
17b0: 09 7d 0a 20 0a 20 09 72 65 73 75 6c 74 20 3d 20 .}. . .result =
17c0: 54 63 6c 43 6f 6d 70 45 76 61 6c 4f 62 6a 28 69 TclCompEvalObj(i
17d0: 6e 74 65 72 70 2c 20 6f 62 6a 50 74 72 29 3b 0a nterp, objPtr);.
17e0: 40 40 20 2d 34 37 39 34 2c 37 20 2b 34 38 33 32 @@ -4794,7 +4832
17f0: 2c 37 20 40 40 0a 20 20 20 20 20 43 61 6c 6c 46 ,7 @@. CallF
1800: 72 61 6d 65 20 2a 73 61 76 65 64 56 61 72 46 72 rame *savedVarFr
1810: 61 6d 65 50 74 72 3b 0a 20 0a 20 20 20 20 20 73 amePtr;. . s
1820: 61 76 65 64 56 61 72 46 72 61 6d 65 50 74 72 20 avedVarFramePtr
1830: 3d 20 69 50 74 72 2d 3e 76 61 72 46 72 61 6d 65 = iPtr->varFrame
1840: 50 74 72 3b 0a 2d 20 20 20 20 69 50 74 72 2d 3e Ptr;.- iPtr->
1850: 76 61 72 46 72 61 6d 65 50 74 72 20 3d 20 4e 55 varFramePtr = NU
1860: 4c 4c 3b 0a 2b 20 20 20 20 69 50 74 72 2d 3e 76 LL;.+ iPtr->v
1870: 61 72 46 72 61 6d 65 50 74 72 20 3d 20 69 50 74 arFramePtr = iPt
1880: 72 2d 3e 72 6f 6f 74 46 72 61 6d 65 50 74 72 3b r->rootFramePtr;
1890: 0a 20 20 20 20 20 72 65 73 75 6c 74 20 3d 20 54 . result = T
18a0: 63 6c 5f 45 76 61 6c 28 69 6e 74 65 72 70 2c 20 cl_Eval(interp,
18b0: 63 6f 6d 6d 61 6e 64 29 3b 0a 20 20 20 20 20 69 command);. i
18c0: 50 74 72 2d 3e 76 61 72 46 72 61 6d 65 50 74 72 Ptr->varFramePtr
18d0: 20 3d 20 73 61 76 65 64 56 61 72 46 72 61 6d 65 = savedVarFrame
18e0: 50 74 72 3b 0a 20 20 20 20 20 72 65 74 75 72 6e Ptr;. return
18f0: 20 72 65 73 75 6c 74 3b 0a 49 6e 64 65 78 3a 20 result;.Index:
1900: 67 65 6e 65 72 69 63 2f 74 63 6c 43 6d 64 49 4c generic/tclCmdIL
1910: 2e 63 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d .c.=============
1920: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
1930: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
1940: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
1950: 3d 3d 3d 3d 3d 3d 0a 52 43 53 20 66 69 6c 65 3a ======.RCS file:
1960: 20 2f 63 76 73 72 6f 6f 74 2f 74 63 6c 2f 74 63 /cvsroot/tcl/tc
1970: 6c 2f 67 65 6e 65 72 69 63 2f 74 63 6c 43 6d 64 l/generic/tclCmd
1980: 49 4c 2e 63 2c 76 0a 72 65 74 72 69 65 76 69 6e IL.c,v.retrievin
1990: 67 20 72 65 76 69 73 69 6f 6e 20 31 2e 38 37 0a g revision 1.87.
19a0: 64 69 66 66 20 2d 75 20 2d 72 31 2e 38 37 20 74 diff -u -r1.87 t
19b0: 63 6c 43 6d 64 49 4c 2e 63 0a 2d 2d 2d 20 67 65 clCmdIL.c.--- ge
19c0: 6e 65 72 69 63 2f 74 63 6c 43 6d 64 49 4c 2e 63 neric/tclCmdIL.c
19d0: 09 39 20 41 75 67 20 32 30 30 36 20 31 34 3a 31 .9 Aug 2006 14:1
19e0: 36 3a 30 33 20 2d 30 30 30 30 09 31 2e 38 37 0a 6:03 -0000.1.87.
19f0: 2b 2b 2b 20 67 65 6e 65 72 69 63 2f 74 63 6c 43 +++ generic/tclC
1a00: 6d 64 49 4c 2e 63 09 31 34 20 4f 63 74 20 32 30 mdIL.c.14 Oct 20
1a10: 30 36 20 31 36 3a 35 39 3a 30 33 20 2d 30 30 30 06 16:59:03 -000
1a20: 30 0a 40 40 20 2d 31 32 37 38 2c 32 32 20 2b 31 0.@@ -1278,22 +1
1a30: 32 37 38 2c 31 38 20 40 40 0a 20 7b 0a 20 20 20 278,18 @@. {.
1a40: 20 20 49 6e 74 65 72 70 20 2a 69 50 74 72 20 3d Interp *iPtr =
1a50: 20 28 49 6e 74 65 72 70 20 2a 29 20 69 6e 74 65 (Interp *) inte
1a60: 72 70 3b 0a 20 20 20 20 20 69 6e 74 20 6c 65 76 rp;. int lev
1a70: 65 6c 3b 0a 2d 20 20 20 20 43 61 6c 6c 46 72 61 el;.- CallFra
1a80: 6d 65 20 2a 66 72 61 6d 65 50 74 72 3b 0a 2b 20 me *framePtr;.+
1a90: 20 20 20 43 61 6c 6c 46 72 61 6d 65 20 2a 66 72 CallFrame *fr
1aa0: 61 6d 65 50 74 72 2c 20 2a 72 6f 6f 74 46 72 61 amePtr, *rootFra
1ab0: 6d 65 50 74 72 20 3d 20 69 50 74 72 2d 3e 72 6f mePtr = iPtr->ro
1ac0: 6f 74 46 72 61 6d 65 50 74 72 3b 0a 20 20 20 20 otFramePtr;.
1ad0: 20 54 63 6c 5f 4f 62 6a 20 2a 6c 69 73 74 50 74 Tcl_Obj *listPt
1ae0: 72 3b 0a 20 0a 20 20 20 20 20 69 66 20 28 6f 62 r;. . if (ob
1af0: 6a 63 20 3d 3d 20 32 29 20 7b 09 09 2f 2a 20 6a jc == 2) {../* j
1b00: 75 73 74 20 22 69 6e 66 6f 20 6c 65 76 65 6c 22 ust "info level"
1b10: 20 2a 2f 0a 2d 09 69 66 20 28 69 50 74 72 2d 3e */.-.if (iPtr->
1b20: 76 61 72 46 72 61 6d 65 50 74 72 20 3d 3d 20 4e varFramePtr == N
1b30: 55 4c 4c 29 20 7b 0a 2d 09 20 20 20 20 54 63 6c ULL) {.-. Tcl
1b40: 5f 53 65 74 4f 62 6a 52 65 73 75 6c 74 28 69 6e _SetObjResult(in
1b50: 74 65 72 70 2c 20 54 63 6c 5f 4e 65 77 49 6e 74 terp, Tcl_NewInt
1b60: 4f 62 6a 28 30 29 29 3b 0a 2d 09 7d 20 65 6c 73 Obj(0));.-.} els
1b70: 65 20 7b 0a 2d 09 20 20 20 20 54 63 6c 5f 53 65 e {.-. Tcl_Se
1b80: 74 4f 62 6a 52 65 73 75 6c 74 28 69 6e 74 65 72 tObjResult(inter
1b90: 70 2c 20 54 63 6c 5f 4e 65 77 49 6e 74 4f 62 6a p, Tcl_NewIntObj
1ba0: 28 69 50 74 72 2d 3e 76 61 72 46 72 61 6d 65 50 (iPtr->varFrameP
1bb0: 74 72 2d 3e 6c 65 76 65 6c 29 29 3b 0a 2d 09 7d tr->level));.-.}
1bc0: 0a 2b 09 54 63 6c 5f 53 65 74 4f 62 6a 52 65 73 .+.Tcl_SetObjRes
1bd0: 75 6c 74 28 69 6e 74 65 72 70 2c 20 54 63 6c 5f ult(interp, Tcl_
1be0: 4e 65 77 49 6e 74 4f 62 6a 28 69 50 74 72 2d 3e NewIntObj(iPtr->
1bf0: 76 61 72 46 72 61 6d 65 50 74 72 2d 3e 6c 65 76 varFramePtr->lev
1c00: 65 6c 29 29 3b 0a 20 09 72 65 74 75 72 6e 20 54 el));. .return T
1c10: 43 4c 5f 4f 4b 3b 0a 20 20 20 20 20 7d 20 65 6c CL_OK;. } el
1c20: 73 65 20 69 66 20 28 6f 62 6a 63 20 3d 3d 20 33 se if (objc == 3
1c30: 29 20 7b 0a 20 09 69 66 20 28 54 63 6c 5f 47 65 ) {. .if (Tcl_Ge
1c40: 74 49 6e 74 46 72 6f 6d 4f 62 6a 28 69 6e 74 65 tIntFromObj(inte
1c50: 72 70 2c 20 6f 62 6a 76 5b 32 5d 2c 20 26 6c 65 rp, objv[2], &le
1c60: 76 65 6c 29 20 21 3d 20 54 43 4c 5f 4f 4b 29 20 vel) != TCL_OK)
1c70: 7b 0a 20 09 20 20 20 20 72 65 74 75 72 6e 20 54 {. . return T
1c80: 43 4c 5f 45 52 52 4f 52 3b 0a 20 09 7d 0a 20 09 CL_ERROR;. .}. .
1c90: 69 66 20 28 6c 65 76 65 6c 20 3c 3d 20 30 29 20 if (level <= 0)
1ca0: 7b 0a 2d 09 20 20 20 20 69 66 20 28 69 50 74 72 {.-. if (iPtr
1cb0: 2d 3e 76 61 72 46 72 61 6d 65 50 74 72 20 3d 3d ->varFramePtr ==
1cc0: 20 4e 55 4c 4c 29 20 7b 0a 2b 09 20 20 20 20 69 NULL) {.+. i
1cd0: 66 20 28 69 50 74 72 2d 3e 76 61 72 46 72 61 6d f (iPtr->varFram
1ce0: 65 50 74 72 20 3d 3d 20 72 6f 6f 74 46 72 61 6d ePtr == rootFram
1cf0: 65 50 74 72 29 20 7b 0a 20 09 09 6c 65 76 65 6c ePtr) {. ..level
1d00: 45 72 72 6f 72 3a 0a 20 09 09 54 63 6c 5f 41 70 Error:. ..Tcl_Ap
1d10: 70 65 6e 64 52 65 73 75 6c 74 28 69 6e 74 65 72 pendResult(inter
1d20: 70 2c 20 22 62 61 64 20 6c 65 76 65 6c 20 5c 22 p, "bad level \"
1d30: 22 2c 0a 20 09 09 09 54 63 6c 47 65 74 53 74 72 ",. ...TclGetStr
1d40: 69 6e 67 28 6f 62 6a 76 5b 32 5d 29 2c 20 22 5c ing(objv[2]), "\
1d50: 22 22 2c 20 28 63 68 61 72 20 2a 29 20 4e 55 4c "", (char *) NUL
1d60: 4c 29 3b 0a 40 40 20 2d 31 33 30 31 2c 31 33 20 L);.@@ -1301,13
1d70: 2b 31 32 39 37 2c 31 33 20 40 40 0a 20 09 20 20 +1297,13 @@. .
1d80: 20 20 7d 0a 20 09 20 20 20 20 6c 65 76 65 6c 20 }. . level
1d90: 2b 3d 20 69 50 74 72 2d 3e 76 61 72 46 72 61 6d += iPtr->varFram
1da0: 65 50 74 72 2d 3e 6c 65 76 65 6c 3b 0a 20 09 7d ePtr->level;. .}
1db0: 0a 2d 09 66 6f 72 20 28 66 72 61 6d 65 50 74 72 .-.for (framePtr
1dc0: 20 3d 20 69 50 74 72 2d 3e 76 61 72 46 72 61 6d = iPtr->varFram
1dd0: 65 50 74 72 3b 20 20 66 72 61 6d 65 50 74 72 20 ePtr; framePtr
1de0: 21 3d 20 4e 55 4c 4c 3b 0a 2b 09 66 6f 72 20 28 != NULL;.+.for (
1df0: 66 72 61 6d 65 50 74 72 20 3d 20 69 50 74 72 2d framePtr = iPtr-
1e00: 3e 76 61 72 46 72 61 6d 65 50 74 72 3b 20 20 66 >varFramePtr; f
1e10: 72 61 6d 65 50 74 72 20 21 3d 20 72 6f 6f 74 46 ramePtr != rootF
1e20: 72 61 6d 65 50 74 72 3b 0a 20 09 09 66 72 61 6d ramePtr;. ..fram
1e30: 65 50 74 72 20 3d 20 66 72 61 6d 65 50 74 72 2d ePtr = framePtr-
1e40: 3e 63 61 6c 6c 65 72 56 61 72 50 74 72 29 20 7b >callerVarPtr) {
1e50: 0a 20 09 20 20 20 20 69 66 20 28 66 72 61 6d 65 . . if (frame
1e60: 50 74 72 2d 3e 6c 65 76 65 6c 20 3d 3d 20 6c 65 Ptr->level == le
1e70: 76 65 6c 29 20 7b 0a 20 09 09 62 72 65 61 6b 3b vel) {. ..break;
1e80: 0a 20 09 20 20 20 20 7d 0a 20 09 7d 0a 2d 09 69 . . }. .}.-.i
1e90: 66 20 28 66 72 61 6d 65 50 74 72 20 3d 3d 20 4e f (framePtr == N
1ea0: 55 4c 4c 29 20 7b 0a 2b 09 69 66 20 28 66 72 61 ULL) {.+.if (fra
1eb0: 6d 65 50 74 72 20 3d 3d 20 72 6f 6f 74 46 72 61 mePtr == rootFra
1ec0: 6d 65 50 74 72 29 20 7b 0a 20 09 20 20 20 20 67 mePtr) {. . g
1ed0: 6f 74 6f 20 6c 65 76 65 6c 45 72 72 6f 72 3b 0a oto levelError;.
1ee0: 20 09 7d 0a 20 0a 40 40 20 2d 31 34 35 31 2c 38 .}. .@@ -1451,8
1ef0: 20 2b 31 34 34 37 2c 37 20 40 40 0a 20 09 72 65 +1447,7 @@. .re
1f00: 74 75 72 6e 20 54 43 4c 5f 45 52 52 4f 52 3b 0a turn TCL_ERROR;.
1f10: 20 20 20 20 20 7d 0a 20 0a 2d 20 20 20 20 69 66 }. .- if
1f20: 20 28 69 50 74 72 2d 3e 76 61 72 46 72 61 6d 65 (iPtr->varFrame
1f30: 50 74 72 20 3d 3d 20 4e 55 4c 4c 20 7c 7c 0a 2d Ptr == NULL ||.-
1f40: 09 20 20 20 20 21 28 69 50 74 72 2d 3e 76 61 72 . !(iPtr->var
1f50: 46 72 61 6d 65 50 74 72 2d 3e 69 73 50 72 6f 63 FramePtr->isProc
1f60: 43 61 6c 6c 46 72 61 6d 65 20 26 20 46 52 41 4d CallFrame & FRAM
1f70: 45 5f 49 53 5f 50 52 4f 43 20 29 29 20 7b 0a 2b E_IS_PROC )) {.+
1f80: 20 20 20 20 69 66 20 28 21 28 69 50 74 72 2d 3e if (!(iPtr->
1f90: 76 61 72 46 72 61 6d 65 50 74 72 2d 3e 69 73 50 varFramePtr->isP
1fa0: 72 6f 63 43 61 6c 6c 46 72 61 6d 65 20 26 20 46 rocCallFrame & F
1fb0: 52 41 4d 45 5f 49 53 5f 50 52 4f 43 20 29 29 20 RAME_IS_PROC ))
1fc0: 7b 0a 20 09 72 65 74 75 72 6e 20 54 43 4c 5f 4f {. .return TCL_O
1fd0: 4b 3b 0a 20 20 20 20 20 7d 0a 20 0a 40 40 20 2d K;. }. .@@ -
1fe0: 32 30 35 34 2c 38 20 2b 32 30 34 39 2c 37 20 40 2054,8 +2049,7 @
1ff0: 40 0a 20 0a 20 20 20 20 20 6c 69 73 74 50 74 72 @. . listPtr
2000: 20 3d 20 54 63 6c 5f 4e 65 77 4c 69 73 74 4f 62 = Tcl_NewListOb
2010: 6a 28 30 2c 20 28 54 63 6c 5f 4f 62 6a 20 2a 2a j(0, (Tcl_Obj **
2020: 29 20 4e 55 4c 4c 29 3b 0a 20 0a 2d 20 20 20 20 ) NULL);. .-
2030: 69 66 20 28 28 69 50 74 72 2d 3e 76 61 72 46 72 if ((iPtr->varFr
2040: 61 6d 65 50 74 72 20 3d 3d 20 4e 55 4c 4c 29 0a amePtr == NULL).
2050: 2d 09 20 20 20 20 7c 7c 20 21 28 69 50 74 72 2d -. || !(iPtr-
2060: 3e 76 61 72 46 72 61 6d 65 50 74 72 2d 3e 69 73 >varFramePtr->is
2070: 50 72 6f 63 43 61 6c 6c 46 72 61 6d 65 20 26 20 ProcCallFrame &
2080: 46 52 41 4d 45 5f 49 53 5f 50 52 4f 43 29 0a 2b FRAME_IS_PROC).+
2090: 20 20 20 20 69 66 20 28 21 28 69 50 74 72 2d 3e if (!(iPtr->
20a0: 76 61 72 46 72 61 6d 65 50 74 72 2d 3e 69 73 50 varFramePtr->isP
20b0: 72 6f 63 43 61 6c 6c 46 72 61 6d 65 20 26 20 46 rocCallFrame & F
20c0: 52 41 4d 45 5f 49 53 5f 50 52 4f 43 29 0a 20 09 RAME_IS_PROC). .
20d0: 20 20 20 20 7c 7c 20 73 70 65 63 69 66 69 63 4e || specificN
20e0: 73 49 6e 50 61 74 74 65 72 6e 29 20 7b 0a 20 09 sInPattern) {. .
20f0: 2f 2a 0a 20 09 20 2a 20 54 68 65 72 65 20 69 73 /*. . * There is
2100: 20 6e 6f 20 66 72 61 6d 65 20 70 6f 69 6e 74 65 no frame pointe
2110: 72 2c 20 74 68 65 20 66 72 61 6d 65 20 70 6f 69 r, the frame poi
2120: 6e 74 65 72 20 77 61 73 20 70 75 73 68 65 64 20 nter was pushed
2130: 6f 6e 6c 79 20 74 6f 0a 49 6e 64 65 78 3a 20 67 only to.Index: g
2140: 65 6e 65 72 69 63 2f 74 63 6c 49 6e 74 2e 68 0a eneric/tclInt.h.
2150: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
2160: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
2170: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
2180: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
2190: 3d 3d 3d 0a 52 43 53 20 66 69 6c 65 3a 20 2f 63 ===.RCS file: /c
21a0: 76 73 72 6f 6f 74 2f 74 63 6c 2f 74 63 6c 2f 67 vsroot/tcl/tcl/g
21b0: 65 6e 65 72 69 63 2f 74 63 6c 49 6e 74 2e 68 2c eneric/tclInt.h,
21c0: 76 0a 72 65 74 72 69 65 76 69 6e 67 20 72 65 76 v.retrieving rev
21d0: 69 73 69 6f 6e 20 31 2e 32 37 39 0a 64 69 66 66 ision 1.279.diff
21e0: 20 2d 75 20 2d 72 31 2e 32 37 39 20 74 63 6c 49 -u -r1.279 tclI
21f0: 6e 74 2e 68 0a 2d 2d 2d 20 67 65 6e 65 72 69 63 nt.h.--- generic
2200: 2f 74 63 6c 49 6e 74 2e 68 09 33 30 20 53 65 70 /tclInt.h.30 Sep
2210: 20 32 30 30 36 20 31 39 3a 30 30 3a 31 32 20 2d 2006 19:00:12 -
2220: 30 30 30 30 09 31 2e 32 37 39 0a 2b 2b 2b 20 67 0000.1.279.+++ g
2230: 65 6e 65 72 69 63 2f 74 63 6c 49 6e 74 2e 68 09 eneric/tclInt.h.
2240: 31 34 20 4f 63 74 20 32 30 30 36 20 31 36 3a 35 14 Oct 2006 16:5
2250: 39 3a 30 39 20 2d 30 30 30 30 0a 40 40 20 2d 31 9:09 -0000.@@ -1
2260: 33 34 34 2c 31 39 20 2b 31 33 34 34 2c 31 38 20 344,19 +1344,18
2270: 40 40 0a 20 09 09 09 09 20 2a 20 61 73 73 75 6d @@. .... * assum
2280: 65 73 20 74 68 61 74 20 69 6e 66 69 6e 69 74 65 es that infinite
2290: 20 72 65 63 75 72 73 69 6f 6e 20 68 61 73 0a 20 recursion has.
22a0: 09 09 09 09 20 2a 20 6f 63 63 75 72 72 65 64 20 .... * occurred
22b0: 61 6e 64 20 69 74 20 67 65 6e 65 72 61 74 65 73 and it generates
22c0: 20 61 6e 20 65 72 72 6f 72 2e 20 2a 2f 0a 20 20 an error. */.
22d0: 20 20 20 43 61 6c 6c 46 72 61 6d 65 20 2a 66 72 CallFrame *fr
22e0: 61 6d 65 50 74 72 3b 09 2f 2a 20 50 6f 69 6e 74 amePtr;./* Point
22f0: 73 20 74 6f 20 74 6f 70 2d 6d 6f 73 74 20 69 6e s to top-most in
2300: 20 73 74 61 63 6b 20 6f 66 20 61 6c 6c 20 6e 65 stack of all ne
2310: 73 74 65 64 0a 2d 09 09 09 09 20 2a 20 70 72 6f sted.-.... * pro
2320: 63 65 64 75 72 65 20 69 6e 76 6f 63 61 74 69 6f cedure invocatio
2330: 6e 73 2e 20 4e 55 4c 4c 20 6d 65 61 6e 73 20 74 ns. NULL means t
2340: 68 65 72 65 20 61 72 65 0a 2d 09 09 09 09 20 2a here are.-.... *
2350: 20 6e 6f 20 61 63 74 69 76 65 20 70 72 6f 63 65 no active proce
2360: 64 75 72 65 73 2e 20 2a 2f 0a 2b 09 09 09 09 20 dures. */.+....
2370: 2a 20 70 72 6f 63 65 64 75 72 65 20 69 6e 76 6f * procedure invo
2380: 63 61 74 69 6f 6e 73 2e 20 2a 2f 0a 20 20 20 20 cations. */.
2390: 20 43 61 6c 6c 46 72 61 6d 65 20 2a 76 61 72 46 CallFrame *varF
23a0: 72 61 6d 65 50 74 72 3b 09 2f 2a 20 50 6f 69 6e ramePtr;./* Poin
23b0: 74 73 20 74 6f 20 74 68 65 20 63 61 6c 6c 20 66 ts to the call f
23c0: 72 61 6d 65 20 77 68 6f 73 65 20 76 61 72 69 61 rame whose varia
23d0: 62 6c 65 73 0a 20 09 09 09 09 20 2a 20 61 72 65 bles. .... * are
23e0: 20 63 75 72 72 65 6e 74 6c 79 20 69 6e 20 75 73 currently in us
23f0: 65 20 28 73 61 6d 65 20 61 73 20 66 72 61 6d 65 e (same as frame
2400: 50 74 72 0a 2d 09 09 09 09 20 2a 20 75 6e 6c 65 Ptr.-.... * unle
2410: 73 73 20 61 6e 20 22 75 70 6c 65 76 65 6c 22 20 ss an "uplevel"
2420: 63 6f 6d 6d 61 6e 64 20 69 73 20 65 78 65 63 75 command is execu
2430: 74 69 6e 67 29 2e 0a 2d 09 09 09 09 20 2a 20 4e ting)..-.... * N
2440: 55 4c 4c 20 6d 65 61 6e 73 20 6e 6f 20 70 72 6f ULL means no pro
2450: 63 65 64 75 72 65 20 69 73 20 61 63 74 69 76 65 cedure is active
2460: 20 6f 72 0a 2d 09 09 09 09 20 2a 20 22 75 70 6c or.-.... * "upl
2470: 65 76 65 6c 20 30 22 20 69 73 20 65 78 65 63 75 evel 0" is execu
2480: 74 69 6e 67 2e 20 2a 2f 0a 2b 09 09 09 09 20 2a ting. */.+.... *
2490: 20 75 6e 6c 65 73 73 20 61 6e 20 22 75 70 6c 65 unless an "uple
24a0: 76 65 6c 22 20 63 6f 6d 6d 61 6e 64 20 69 73 0a vel" command is.
24b0: 2b 09 09 09 09 20 2a 20 65 78 65 63 75 74 69 6e +.... * executin
24c0: 67 29 2e 20 2a 2f 20 0a 20 20 20 20 20 41 63 74 g). */ . Act
24d0: 69 76 65 56 61 72 54 72 61 63 65 20 2a 61 63 74 iveVarTrace *act
24e0: 69 76 65 56 61 72 54 72 61 63 65 50 74 72 3b 0a iveVarTracePtr;.
24f0: 20 09 09 09 09 2f 2a 20 46 69 72 73 74 20 69 6e ..../* First in
2500: 20 6c 69 73 74 20 6f 66 20 61 63 74 69 76 65 20 list of active
2510: 74 72 61 63 65 73 20 66 6f 72 20 69 6e 74 65 72 traces for inter
2520: 70 2c 0a 20 09 09 09 09 20 2a 20 6f 72 20 4e 55 p,. .... * or NU
2530: 4c 4c 20 69 66 20 6e 6f 20 61 63 74 69 76 65 20 LL if no active
2540: 74 72 61 63 65 73 2e 20 2a 2f 0a 20 20 20 20 20 traces. */.
2550: 69 6e 74 20 72 65 74 75 72 6e 43 6f 64 65 3b 09 int returnCode;.
2560: 09 2f 2a 20 5b 72 65 74 75 72 6e 20 2d 63 6f 64 ./* [return -cod
2570: 65 5d 20 70 61 72 61 6d 65 74 65 72 20 2a 2f 0a e] parameter */.
2580: 2d 20 20 20 20 63 68 61 72 20 2a 75 6e 75 73 65 - char *unuse
2590: 64 33 3b 09 09 2f 2a 20 4e 6f 20 6c 6f 6e 67 65 d3;../* No longe
25a0: 72 20 75 73 65 64 20 28 77 61 73 20 65 72 72 6f r used (was erro
25b0: 72 49 6e 66 6f 29 20 2a 2f 0a 2d 20 20 20 20 63 rInfo) */.- c
25c0: 68 61 72 20 2a 75 6e 75 73 65 64 34 3b 09 09 2f har *unused4;../
25d0: 2a 20 4e 6f 20 6c 6f 6e 67 65 72 20 75 73 65 64 * No longer used
25e0: 20 28 77 61 73 20 65 72 72 6f 72 43 6f 64 65 29 (was errorCode)
25f0: 20 2a 2f 0a 2b 20 20 20 20 43 61 6c 6c 46 72 61 */.+ CallFra
2600: 6d 65 20 2a 72 6f 6f 74 46 72 61 6d 65 50 74 72 me *rootFramePtr
2610: 3b 20 20 20 20 2f 2a 20 47 6c 6f 62 61 6c 20 66 ; /* Global f
2620: 72 61 6d 65 20 70 6f 69 6e 74 65 72 20 66 6f 72 rame pointer for
2630: 20 74 68 69 73 20 69 6e 74 65 72 70 72 65 74 65 this interprete
2640: 72 20 2a 2f 0a 2b 20 20 20 20 4e 61 6d 65 73 70 r */.+ Namesp
2650: 61 63 65 20 2a 6c 6f 6f 6b 75 70 4e 73 50 74 72 ace *lookupNsPtr
2660: 3b 09 2f 2a 20 4e 61 6d 65 73 70 61 63 65 20 74 ;./* Namespace t
2670: 6f 20 75 73 65 20 4f 4e 4c 59 20 6f 6e 20 74 68 o use ONLY on th
2680: 65 20 6e 65 78 74 0a 2b 20 20 20 20 20 20 20 20 e next.+
2690: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
26a0: 20 20 20 20 20 20 20 20 2a 20 54 43 4c 5f 45 56 * TCL_EV
26b0: 41 4c 5f 49 4e 56 4f 4b 45 20 63 61 6c 6c 20 74 AL_INVOKE call t
26c0: 6f 20 54 63 6c 5f 45 76 61 6c 4f 62 6a 76 20 2a o Tcl_EvalObjv *
26d0: 2f 0a 20 0a 20 20 20 20 20 2f 2a 0a 20 20 20 20 /. . /*.
26e0: 20 20 2a 20 49 6e 66 6f 72 6d 61 74 69 6f 6e 20 * Information
26f0: 75 73 65 64 20 62 79 20 54 63 6c 5f 41 70 70 65 used by Tcl_Appe
2700: 6e 64 52 65 73 75 6c 74 20 74 6f 20 6b 65 65 70 ndResult to keep
2710: 20 74 72 61 63 6b 20 6f 66 20 70 61 72 74 69 61 track of partia
2720: 6c 20 72 65 73 75 6c 74 73 2e 0a 49 6e 64 65 78 l results..Index
2730: 3a 20 67 65 6e 65 72 69 63 2f 74 63 6c 4e 61 6d : generic/tclNam
2740: 65 73 70 2e 63 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d esp.c.==========
2750: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
2760: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
2770: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
2780: 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 52 43 53 20 66 69 =========.RCS fi
2790: 6c 65 3a 20 2f 63 76 73 72 6f 6f 74 2f 74 63 6c le: /cvsroot/tcl
27a0: 2f 74 63 6c 2f 67 65 6e 65 72 69 63 2f 74 63 6c /tcl/generic/tcl
27b0: 4e 61 6d 65 73 70 2e 63 2c 76 0a 72 65 74 72 69 Namesp.c,v.retri
27c0: 65 76 69 6e 67 20 72 65 76 69 73 69 6f 6e 20 31 eving revision 1
27d0: 2e 31 30 31 0a 64 69 66 66 20 2d 75 20 2d 72 31 .101.diff -u -r1
27e0: 2e 31 30 31 20 74 63 6c 4e 61 6d 65 73 70 2e 63 .101 tclNamesp.c
27f0: 0a 2d 2d 2d 20 67 65 6e 65 72 69 63 2f 74 63 6c .--- generic/tcl
2800: 4e 61 6d 65 73 70 2e 63 09 31 30 20 4f 63 74 20 Namesp.c.10 Oct
2810: 32 30 30 36 20 31 36 3a 34 35 3a 30 34 20 2d 30 2006 16:45:04 -0
2820: 30 30 30 09 31 2e 31 30 31 0a 2b 2b 2b 20 67 65 000.1.101.+++ ge
2830: 6e 65 72 69 63 2f 74 63 6c 4e 61 6d 65 73 70 2e neric/tclNamesp.
2840: 63 09 31 34 20 4f 63 74 20 32 30 30 36 20 31 36 c.14 Oct 2006 16
2850: 3a 35 39 3a 31 34 20 2d 30 30 30 30 0a 40 40 20 :59:14 -0000.@@
2860: 2d 33 33 33 2c 31 31 20 2b 33 33 33 2c 37 20 40 -333,11 +333,7 @
2870: 40 0a 20 20 20 20 20 72 65 67 69 73 74 65 72 20 @. register
2880: 49 6e 74 65 72 70 20 2a 69 50 74 72 20 3d 20 28 Interp *iPtr = (
2890: 49 6e 74 65 72 70 20 2a 29 20 69 6e 74 65 72 70 Interp *) interp
28a0: 3b 0a 20 20 20 20 20 72 65 67 69 73 74 65 72 20 ;. register
28b0: 4e 61 6d 65 73 70 61 63 65 20 2a 6e 73 50 74 72 Namespace *nsPtr
28c0: 3b 0a 20 0a 2d 20 20 20 20 69 66 20 28 69 50 74 ;. .- if (iPt
28d0: 72 2d 3e 76 61 72 46 72 61 6d 65 50 74 72 20 21 r->varFramePtr !
28e0: 3d 20 4e 55 4c 4c 29 20 7b 0a 2d 09 6e 73 50 74 = NULL) {.-.nsPt
28f0: 72 20 3d 20 69 50 74 72 2d 3e 76 61 72 46 72 61 r = iPtr->varFra
2900: 6d 65 50 74 72 2d 3e 6e 73 50 74 72 3b 0a 2d 20 mePtr->nsPtr;.-
2910: 20 20 20 7d 20 65 6c 73 65 20 7b 0a 2d 09 6e 73 } else {.-.ns
2920: 50 74 72 20 3d 20 69 50 74 72 2d 3e 67 6c 6f 62 Ptr = iPtr->glob
2930: 61 6c 4e 73 50 74 72 3b 0a 2d 20 20 20 20 7d 0a alNsPtr;.- }.
2940: 2b 20 20 20 20 6e 73 50 74 72 20 3d 20 69 50 74 + nsPtr = iPt
2950: 72 2d 3e 76 61 72 46 72 61 6d 65 50 74 72 2d 3e r->varFramePtr->
2960: 6e 73 50 74 72 3b 0a 20 20 20 20 20 72 65 74 75 nsPtr;. retu
2970: 72 6e 20 28 54 63 6c 5f 4e 61 6d 65 73 70 61 63 rn (Tcl_Namespac
2980: 65 20 2a 29 20 6e 73 50 74 72 3b 0a 20 7d 0a 20 e *) nsPtr;. }.
2990: 0c 0a 40 40 20 2d 34 33 36 2c 37 20 2b 34 33 32 ..@@ -436,7 +432
29a0: 2c 37 20 40 40 0a 20 20 20 20 20 69 66 20 28 69 ,7 @@. if (i
29b0: 50 74 72 2d 3e 76 61 72 46 72 61 6d 65 50 74 72 Ptr->varFramePtr
29c0: 20 21 3d 20 4e 55 4c 4c 29 20 7b 0a 20 09 66 72 != NULL) {. .fr
29d0: 61 6d 65 50 74 72 2d 3e 6c 65 76 65 6c 20 3d 20 amePtr->level =
29e0: 28 69 50 74 72 2d 3e 76 61 72 46 72 61 6d 65 50 (iPtr->varFrameP
29f0: 74 72 2d 3e 6c 65 76 65 6c 20 2b 20 31 29 3b 0a tr->level + 1);.
2a00: 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 2d 09 } else {.-.
2a10: 66 72 61 6d 65 50 74 72 2d 3e 6c 65 76 65 6c 20 framePtr->level
2a20: 3d 20 31 3b 0a 2b 09 66 72 61 6d 65 50 74 72 2d = 1;.+.framePtr-
2a30: 3e 6c 65 76 65 6c 20 3d 20 30 3b 0a 20 20 20 20 >level = 0;.
2a40: 20 7d 0a 20 20 20 20 20 66 72 61 6d 65 50 74 72 }. framePtr
2a50: 2d 3e 70 72 6f 63 50 74 72 20 3d 20 4e 55 4c 4c ->procPtr = NULL
2a60: 3b 09 09 2f 2a 20 6e 6f 20 63 61 6c 6c 65 64 20 ;../* no called
2a70: 70 72 6f 63 65 64 75 72 65 20 2a 2f 0a 20 20 20 procedure */.
2a80: 20 20 66 72 61 6d 65 50 74 72 2d 3e 76 61 72 54 framePtr->varT
2a90: 61 62 6c 65 50 74 72 20 3d 20 4e 55 4c 4c 3b 09 ablePtr = NULL;.
2aa0: 2f 2a 20 61 6e 64 20 6e 6f 20 6c 6f 63 61 6c 20 /* and no local
2ab0: 76 61 72 69 61 62 6c 65 73 20 2a 2f 0a 40 40 20 variables */.@@
2ac0: 2d 34 38 36 2c 38 20 2b 34 38 32 2c 31 32 20 40 -486,8 +482,12 @
2ad0: 40 0a 20 20 20 20 20 20 2a 20 74 68 65 20 76 61 @. * the va
2ae0: 72 69 61 62 6c 65 20 64 65 6c 65 74 69 6f 6e 20 riable deletion
2af0: 64 6f 6e 27 74 20 73 65 65 20 74 68 65 20 70 61 don't see the pa
2b00: 72 74 69 61 6c 6c 79 2d 64 65 6c 65 74 65 64 20 rtially-deleted
2b10: 66 72 61 6d 65 2e 0a 20 20 20 20 20 20 2a 2f 0a frame.. */.
2b20: 20 0a 2d 20 20 20 20 69 50 74 72 2d 3e 66 72 61 .- iPtr->fra
2b30: 6d 65 50 74 72 20 3d 20 66 72 61 6d 65 50 74 72 mePtr = framePtr
2b40: 2d 3e 63 61 6c 6c 65 72 50 74 72 3b 0a 2d 20 20 ->callerPtr;.-
2b50: 20 20 69 50 74 72 2d 3e 76 61 72 46 72 61 6d 65 iPtr->varFrame
2b60: 50 74 72 20 3d 20 66 72 61 6d 65 50 74 72 2d 3e Ptr = framePtr->
2b70: 63 61 6c 6c 65 72 56 61 72 50 74 72 3b 0a 2b 20 callerVarPtr;.+
2b80: 20 20 20 69 66 20 28 66 72 61 6d 65 50 74 72 2d if (framePtr-
2b90: 3e 63 61 6c 6c 65 72 50 74 72 29 20 7b 0a 2b 09 >callerPtr) {.+.
2ba0: 69 50 74 72 2d 3e 66 72 61 6d 65 50 74 72 20 3d iPtr->framePtr =
2bb0: 20 66 72 61 6d 65 50 74 72 2d 3e 63 61 6c 6c 65 framePtr->calle
2bc0: 72 50 74 72 3b 20 20 20 20 0a 2b 09 69 50 74 72 rPtr; .+.iPtr
2bd0: 2d 3e 76 61 72 46 72 61 6d 65 50 74 72 20 3d 20 ->varFramePtr =
2be0: 66 72 61 6d 65 50 74 72 2d 3e 63 61 6c 6c 65 72 framePtr->caller
2bf0: 56 61 72 50 74 72 3b 0a 2b 20 20 20 20 7d 20 65 VarPtr;.+ } e
2c00: 6c 73 65 20 7b 0a 2b 09 2f 2a 20 54 63 6c 5f 50 lse {.+./* Tcl_P
2c10: 6f 70 43 61 6c 6c 46 72 61 6d 65 3a 20 74 72 79 opCallFrame: try
2c20: 69 6e 67 20 74 6f 20 70 6f 70 20 72 6f 6f 74 43 ing to pop rootC
2c30: 61 6c 6c 46 72 61 6d 65 21 20 2a 2f 0a 2b 20 20 allFrame! */.+
2c40: 20 20 7d 0a 20 0a 20 20 20 20 20 69 66 20 28 66 }. . if (f
2c50: 72 61 6d 65 50 74 72 2d 3e 76 61 72 54 61 62 6c ramePtr->varTabl
2c60: 65 50 74 72 20 21 3d 20 4e 55 4c 4c 29 20 7b 0a ePtr != NULL) {.
2c70: 20 09 54 63 6c 44 65 6c 65 74 65 56 61 72 73 28 .TclDeleteVars(
2c80: 69 50 74 72 2c 20 66 72 61 6d 65 50 74 72 2d 3e iPtr, framePtr->
2c90: 76 61 72 54 61 62 6c 65 50 74 72 29 3b 0a 40 40 varTablePtr);.@@
2ca0: 20 2d 39 36 38 2c 37 20 2b 39 36 38 2c 38 20 40 -968,7 +968,8 @
2cb0: 40 0a 20 20 20 20 20 20 2a 20 72 65 66 43 6f 75 @. * refCou
2cc0: 6e 74 20 72 65 61 63 68 65 73 20 30 2e 0a 20 20 nt reaches 0..
2cd0: 20 20 20 20 2a 2f 0a 20 0a 2d 20 20 20 20 69 66 */. .- if
2ce0: 20 28 6e 73 50 74 72 2d 3e 61 63 74 69 76 61 74 (nsPtr->activat
2cf0: 69 6f 6e 43 6f 75 6e 74 20 3e 20 30 29 20 7b 0a ionCount > 0) {.
2d00: 2b 20 20 20 20 69 66 20 28 28 6e 73 50 74 72 2d + if ((nsPtr-
2d10: 3e 61 63 74 69 76 61 74 69 6f 6e 43 6f 75 6e 74 >activationCount
2d20: 20 3e 20 30 29 0a 2b 09 20 20 20 20 26 26 20 21 > 0).+. && !
2d30: 28 28 6e 73 50 74 72 20 3d 3d 20 67 6c 6f 62 61 ((nsPtr == globa
2d40: 6c 4e 73 50 74 72 29 20 26 26 20 28 6e 73 50 74 lNsPtr) && (nsPt
2d50: 72 2d 3e 61 63 74 69 76 61 74 69 6f 6e 43 6f 75 r->activationCou
2d60: 6e 74 20 3d 3d 20 31 29 29 29 20 7b 0a 20 09 6e nt == 1))) {. .n
2d70: 73 50 74 72 2d 3e 66 6c 61 67 73 20 7c 3d 20 4e sPtr->flags |= N
2d80: 53 5f 44 59 49 4e 47 3b 0a 20 09 69 66 20 28 6e S_DYING;. .if (n
2d90: 73 50 74 72 2d 3e 70 61 72 65 6e 74 50 74 72 20 sPtr->parentPtr
2da0: 21 3d 20 4e 55 4c 4c 29 20 7b 0a 20 09 20 20 20 != NULL) {. .
2db0: 20 65 6e 74 72 79 50 74 72 20 3d 20 54 63 6c 5f entryPtr = Tcl_
2dc0: 46 69 6e 64 48 61 73 68 45 6e 74 72 79 28 26 6e FindHashEntry(&n
2dd0: 73 50 74 72 2d 3e 70 61 72 65 6e 74 50 74 72 2d sPtr->parentPtr-
2de0: 3e 63 68 69 6c 64 54 61 62 6c 65 2c 0a 40 40 20 >childTable,.@@
2df0: 2d 32 30 38 32 2c 31 31 20 2b 32 30 38 33 2c 37 -2082,11 +2083,7
2e00: 20 40 40 0a 20 20 20 20 20 69 66 20 28 66 6c 61 @@. if (fla
2e10: 67 73 20 26 20 54 43 4c 5f 47 4c 4f 42 41 4c 5f gs & TCL_GLOBAL_
2e20: 4f 4e 4c 59 29 20 7b 0a 20 09 6e 73 50 74 72 20 ONLY) {. .nsPtr
2e30: 3d 20 67 6c 6f 62 61 6c 4e 73 50 74 72 3b 0a 20 = globalNsPtr;.
2e40: 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 6e } else if (n
2e50: 73 50 74 72 20 3d 3d 20 4e 55 4c 4c 29 20 7b 0a sPtr == NULL) {.
2e60: 2d 09 69 66 20 28 69 50 74 72 2d 3e 76 61 72 46 -.if (iPtr->varF
2e70: 72 61 6d 65 50 74 72 20 21 3d 20 4e 55 4c 4c 29 ramePtr != NULL)
2e80: 20 7b 0a 2d 09 20 20 20 20 6e 73 50 74 72 20 3d {.-. nsPtr =
2e90: 20 69 50 74 72 2d 3e 76 61 72 46 72 61 6d 65 50 iPtr->varFrameP
2ea0: 74 72 2d 3e 6e 73 50 74 72 3b 0a 2d 09 7d 20 65 tr->nsPtr;.-.} e
2eb0: 6c 73 65 20 7b 0a 2d 09 20 20 20 20 6e 73 50 74 lse {.-. nsPt
2ec0: 72 20 3d 20 69 50 74 72 2d 3e 67 6c 6f 62 61 6c r = iPtr->global
2ed0: 4e 73 50 74 72 3b 0a 2d 09 7d 0a 2b 09 6e 73 50 NsPtr;.-.}.+.nsP
2ee0: 74 72 20 3d 20 69 50 74 72 2d 3e 76 61 72 46 72 tr = iPtr->varFr
2ef0: 61 6d 65 50 74 72 2d 3e 6e 73 50 74 72 3b 0a 20 amePtr->nsPtr;.
2f00: 20 20 20 20 7d 0a 20 0a 20 20 20 20 20 73 74 61 }. . sta
2f10: 72 74 20 3d 20 71 75 61 6c 4e 61 6d 65 3b 09 09 rt = qualName;..
2f20: 2f 2a 20 50 74 73 20 74 6f 20 73 74 61 72 74 20 /* Pts to start
2f30: 6f 66 20 71 75 61 6c 69 66 79 69 6e 67 20 6e 61 of qualifying na
2f40: 6d 65 73 70 61 63 65 2e 20 2a 2f 0a 40 40 20 2d mespace. */.@@ -
2f50: 32 38 33 30 2c 37 20 2b 32 38 32 37 2c 37 20 40 2830,7 +2827,7 @
2f60: 40 0a 20 20 20 20 20 73 61 76 65 64 46 72 61 6d @. savedFram
2f70: 65 50 74 72 20 3d 20 69 50 74 72 2d 3e 76 61 72 ePtr = iPtr->var
2f80: 46 72 61 6d 65 50 74 72 3b 0a 20 20 20 20 20 6e FramePtr;. n
2f90: 61 6d 65 20 3d 20 54 63 6c 47 65 74 53 74 72 69 ame = TclGetStri
2fa0: 6e 67 28 6f 62 6a 50 74 72 29 3b 0a 20 20 20 20 ng(objPtr);.
2fb0: 20 69 66 20 28 28 2a 6e 61 6d 65 2b 2b 20 3d 3d if ((*name++ ==
2fc0: 20 27 3a 27 29 20 26 26 20 28 2a 6e 61 6d 65 20 ':') && (*name
2fd0: 3d 3d 20 27 3a 27 29 29 20 7b 0a 2d 09 69 50 74 == ':')) {.-.iPt
2fe0: 72 2d 3e 76 61 72 46 72 61 6d 65 50 74 72 20 3d r->varFramePtr =
2ff0: 20 4e 55 4c 4c 3b 0a 2b 09 69 50 74 72 2d 3e 76 NULL;.+.iPtr->v
3000: 61 72 46 72 61 6d 65 50 74 72 20 3d 20 69 50 74 arFramePtr = iPt
3010: 72 2d 3e 72 6f 6f 74 46 72 61 6d 65 50 74 72 3b r->rootFramePtr;
3020: 0a 20 20 20 20 20 7d 0a 20 0a 20 20 20 20 20 63 . }. . c
3030: 75 72 72 4e 73 50 74 72 20 3d 20 28 4e 61 6d 65 urrNsPtr = (Name
3040: 73 70 61 63 65 20 2a 29 20 54 63 6c 5f 47 65 74 space *) Tcl_Get
3050: 43 75 72 72 65 6e 74 4e 61 6d 65 73 70 61 63 65 CurrentNamespace
3060: 28 69 6e 74 65 72 70 29 3b 0a 40 40 20 2d 34 35 (interp);.@@ -45
3070: 38 35 2c 31 31 20 2b 34 35 38 32 2c 31 31 20 40 85,11 +4582,11 @
3080: 40 0a 20 20 20 20 20 69 6e 74 20 6f 62 6a 63 2c @. int objc,
3090: 09 09 09 2f 2a 20 4e 75 6d 62 65 72 20 6f 66 20 .../* Number of
30a0: 61 72 67 75 6d 65 6e 74 73 2e 20 2a 2f 0a 20 20 arguments. */.
30b0: 20 20 20 54 63 6c 5f 4f 62 6a 20 2a 63 6f 6e 73 Tcl_Obj *cons
30c0: 74 20 6f 62 6a 76 5b 5d 29 09 2f 2a 20 41 72 67 t objv[])./* Arg
30d0: 75 6d 65 6e 74 20 6f 62 6a 65 63 74 73 2e 20 2a ument objects. *
30e0: 2f 0a 20 7b 0a 2d 20 20 20 20 54 63 6c 5f 4e 61 /. {.- Tcl_Na
30f0: 6d 65 73 70 61 63 65 20 2a 6e 73 50 74 72 3b 0a mespace *nsPtr;.
3100: 2b 20 20 20 20 49 6e 74 65 72 70 20 2a 69 50 74 + Interp *iPt
3110: 72 20 3d 20 28 49 6e 74 65 72 70 20 2a 29 20 69 r = (Interp *) i
3120: 6e 74 65 72 70 3b 0a 2b 20 20 20 20 54 63 6c 5f nterp;.+ Tcl_
3130: 4e 61 6d 65 73 70 61 63 65 20 2a 6e 73 50 74 72 Namespace *nsPtr
3140: 2c 20 2a 73 61 76 65 64 4e 73 50 74 72 3b 0a 20 , *savedNsPtr;.
3150: 20 20 20 20 69 6e 74 20 72 65 73 75 6c 74 3b 0a int result;.
3160: 20 20 20 20 20 56 61 72 20 2a 6f 74 68 65 72 50 Var *otherP
3170: 74 72 2c 20 2a 61 72 72 61 79 50 74 72 3b 0a 20 tr, *arrayPtr;.
3180: 20 20 20 20 63 68 61 72 20 2a 6d 79 4e 61 6d 65 char *myName
3190: 3b 0a 2d 20 20 20 20 43 61 6c 6c 46 72 61 6d 65 ;.- CallFrame
31a0: 20 66 72 61 6d 65 2c 20 2a 66 72 61 6d 65 50 74 frame, *framePt
31b0: 72 20 3d 20 26 66 72 61 6d 65 3b 0a 20 0a 20 20 r = &frame;. .
31c0: 20 20 20 69 66 20 28 6f 62 6a 63 20 3c 20 35 20 if (objc < 5
31d0: 7c 7c 20 21 28 6f 62 6a 63 20 26 20 31 29 29 20 || !(objc & 1))
31e0: 7b 0a 20 09 54 63 6c 5f 57 72 6f 6e 67 4e 75 6d {. .Tcl_WrongNum
31f0: 41 72 67 73 28 69 6e 74 65 72 70 2c 20 32 2c 20 Args(interp, 2,
3200: 6f 62 6a 76 2c 0a 40 40 20 2d 34 36 32 32 2c 31 objv,.@@ -4622,1
3210: 31 20 2b 34 36 31 39 2c 31 32 20 40 40 0a 20 09 1 +4619,12 @@. .
3220: 20 2a 20 4c 6f 63 61 74 65 20 74 68 65 20 6f 74 * Locate the ot
3230: 68 65 72 20 76 61 72 69 61 62 6c 65 0a 20 09 20 her variable. .
3240: 2a 2f 0a 20 0a 2d 09 54 63 6c 5f 50 75 73 68 43 */. .-.Tcl_PushC
3250: 61 6c 6c 46 72 61 6d 65 28 69 6e 74 65 72 70 2c allFrame(interp,
3260: 20 28 54 63 6c 5f 43 61 6c 6c 46 72 61 6d 65 20 (Tcl_CallFrame
3270: 2a 29 20 66 72 61 6d 65 50 74 72 2c 20 6e 73 50 *) framePtr, nsP
3280: 74 72 2c 20 30 29 3b 0a 2b 09 73 61 76 65 64 4e tr, 0);.+.savedN
3290: 73 50 74 72 20 3d 20 28 54 63 6c 5f 4e 61 6d 65 sPtr = (Tcl_Name
32a0: 73 70 61 63 65 20 2a 29 20 69 50 74 72 2d 3e 76 space *) iPtr->v
32b0: 61 72 46 72 61 6d 65 50 74 72 2d 3e 6e 73 50 74 arFramePtr->nsPt
32c0: 72 3b 0a 2b 09 69 50 74 72 2d 3e 76 61 72 46 72 r;.+.iPtr->varFr
32d0: 61 6d 65 50 74 72 2d 3e 6e 73 50 74 72 20 3d 20 amePtr->nsPtr =
32e0: 28 4e 61 6d 65 73 70 61 63 65 20 2a 29 20 6e 73 (Namespace *) ns
32f0: 50 74 72 3b 0a 20 09 6f 74 68 65 72 50 74 72 20 Ptr;. .otherPtr
3300: 3d 20 54 63 6c 4f 62 6a 4c 6f 6f 6b 75 70 56 61 = TclObjLookupVa
3310: 72 28 69 6e 74 65 72 70 2c 20 6f 62 6a 76 5b 30 r(interp, objv[0
3320: 5d 2c 20 4e 55 4c 4c 2c 0a 20 09 09 28 54 43 4c ], NULL,. ..(TCL
3330: 5f 4e 41 4d 45 53 50 41 43 45 5f 4f 4e 4c 59 20 _NAMESPACE_ONLY
3340: 7c 20 54 43 4c 5f 4c 45 41 56 45 5f 45 52 52 5f | TCL_LEAVE_ERR_
3350: 4d 53 47 29 2c 20 22 61 63 63 65 73 73 22 2c 0a MSG), "access",.
3360: 20 09 09 2f 2a 63 72 65 61 74 65 50 61 72 74 31 ../*createPart1
3370: 2a 2f 20 31 2c 20 2f 2a 63 72 65 61 74 65 50 61 */ 1, /*createPa
3380: 72 74 32 2a 2f 20 31 2c 20 26 61 72 72 61 79 50 rt2*/ 1, &arrayP
3390: 74 72 29 3b 0a 2d 09 54 63 6c 5f 50 6f 70 43 61 tr);.-.Tcl_PopCa
33a0: 6c 6c 46 72 61 6d 65 28 69 6e 74 65 72 70 29 3b llFrame(interp);
33b0: 0a 2b 09 69 50 74 72 2d 3e 76 61 72 46 72 61 6d .+.iPtr->varFram
33c0: 65 50 74 72 2d 3e 6e 73 50 74 72 20 3d 20 28 4e ePtr->nsPtr = (N
33d0: 61 6d 65 73 70 61 63 65 20 2a 29 20 73 61 76 65 amespace *) save
33e0: 64 4e 73 50 74 72 3b 0a 20 09 69 66 20 28 6f 74 dNsPtr;. .if (ot
33f0: 68 65 72 50 74 72 20 3d 3d 20 4e 55 4c 4c 29 20 herPtr == NULL)
3400: 7b 0a 20 09 20 20 20 20 72 65 74 75 72 6e 20 54 {. . return T
3410: 43 4c 5f 45 52 52 4f 52 3b 0a 20 09 7d 0a 49 6e CL_ERROR;. .}.In
3420: 64 65 78 3a 20 67 65 6e 65 72 69 63 2f 74 63 6c dex: generic/tcl
3430: 4f 62 6a 2e 63 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d Obj.c.==========
3440: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
3450: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
3460: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
3470: 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 52 43 53 20 66 69 =========.RCS fi
3480: 6c 65 3a 20 2f 63 76 73 72 6f 6f 74 2f 74 63 6c le: /cvsroot/tcl
3490: 2f 74 63 6c 2f 67 65 6e 65 72 69 63 2f 74 63 6c /tcl/generic/tcl
34a0: 4f 62 6a 2e 63 2c 76 0a 72 65 74 72 69 65 76 69 Obj.c,v.retrievi
34b0: 6e 67 20 72 65 76 69 73 69 6f 6e 20 31 2e 31 31 ng revision 1.11
34c0: 33 0a 64 69 66 66 20 2d 75 20 2d 72 31 2e 31 31 3.diff -u -r1.11
34d0: 33 20 74 63 6c 4f 62 6a 2e 63 0a 2d 2d 2d 20 67 3 tclObj.c.--- g
34e0: 65 6e 65 72 69 63 2f 74 63 6c 4f 62 6a 2e 63 09 eneric/tclObj.c.
34f0: 33 30 20 53 65 70 20 32 30 30 36 20 31 39 3a 30 30 Sep 2006 19:0
3500: 30 3a 31 33 20 2d 30 30 30 30 09 31 2e 31 31 33 0:13 -0000.1.113
3510: 0a 2b 2b 2b 20 67 65 6e 65 72 69 63 2f 74 63 6c .+++ generic/tcl
3520: 4f 62 6a 2e 63 09 31 34 20 4f 63 74 20 32 30 30 Obj.c.14 Oct 200
3530: 36 20 31 36 3a 35 39 3a 31 36 20 2d 30 30 30 30 6 16:59:16 -0000
3540: 0a 40 40 20 2d 33 34 38 35 2c 37 20 2b 33 34 38 .@@ -3485,7 +348
3550: 35 2c 37 20 40 40 0a 20 20 20 20 20 73 61 76 65 5,7 @@. save
3560: 64 46 72 61 6d 65 50 74 72 20 3d 20 69 50 74 72 dFramePtr = iPtr
3570: 2d 3e 76 61 72 46 72 61 6d 65 50 74 72 3b 0a 20 ->varFramePtr;.
3580: 20 20 20 20 6e 61 6d 65 20 3d 20 54 63 6c 5f 47 name = Tcl_G
3590: 65 74 53 74 72 69 6e 67 28 6f 62 6a 50 74 72 29 etString(objPtr)
35a0: 3b 0a 20 20 20 20 20 69 66 20 28 28 2a 6e 61 6d ;. if ((*nam
35b0: 65 2b 2b 20 3d 3d 20 27 3a 27 29 20 26 26 20 28 e++ == ':') && (
35c0: 2a 6e 61 6d 65 20 3d 3d 20 27 3a 27 29 29 20 7b *name == ':')) {
35d0: 0a 2d 09 69 50 74 72 2d 3e 76 61 72 46 72 61 6d .-.iPtr->varFram
35e0: 65 50 74 72 20 3d 20 4e 55 4c 4c 3b 0a 2b 09 69 ePtr = NULL;.+.i
35f0: 50 74 72 2d 3e 76 61 72 46 72 61 6d 65 50 74 72 Ptr->varFramePtr
3600: 20 3d 20 69 50 74 72 2d 3e 72 6f 6f 74 46 72 61 = iPtr->rootFra
3610: 6d 65 50 74 72 3b 0a 20 20 20 20 20 7d 0a 20 0a mePtr;. }. .
3620: 20 20 20 20 20 2f 2a 0a 40 40 20 2d 33 35 30 37 /*.@@ -3507
3630: 2c 31 31 20 2b 33 35 30 37 2c 37 20 40 40 0a 20 ,11 +3507,7 @@.
3640: 20 20 20 20 20 2a 20 47 65 74 20 74 68 65 20 63 * Get the c
3650: 75 72 72 65 6e 74 20 6e 61 6d 65 73 70 61 63 65 urrent namespace
3660: 2e 0a 20 20 20 20 20 20 2a 2f 0a 20 0a 2d 20 20 .. */. .-
3670: 20 20 69 66 20 28 69 50 74 72 2d 3e 76 61 72 46 if (iPtr->varF
3680: 72 61 6d 65 50 74 72 20 21 3d 20 4e 55 4c 4c 29 ramePtr != NULL)
3690: 20 7b 0a 2d 09 63 75 72 72 4e 73 50 74 72 20 3d {.-.currNsPtr =
36a0: 20 69 50 74 72 2d 3e 76 61 72 46 72 61 6d 65 50 iPtr->varFrameP
36b0: 74 72 2d 3e 6e 73 50 74 72 3b 0a 2d 20 20 20 20 tr->nsPtr;.-
36c0: 7d 20 65 6c 73 65 20 7b 0a 2d 09 63 75 72 72 4e } else {.-.currN
36d0: 73 50 74 72 20 3d 20 69 50 74 72 2d 3e 67 6c 6f sPtr = iPtr->glo
36e0: 62 61 6c 4e 73 50 74 72 3b 0a 2d 20 20 20 20 7d balNsPtr;.- }
36f0: 0a 2b 20 20 20 20 63 75 72 72 4e 73 50 74 72 20 .+ currNsPtr
3700: 3d 20 69 50 74 72 2d 3e 76 61 72 46 72 61 6d 65 = iPtr->varFrame
3710: 50 74 72 2d 3e 6e 73 50 74 72 3b 0a 20 0a 20 20 Ptr->nsPtr;. .
3720: 20 20 20 2f 2a 0a 20 20 20 20 20 20 2a 20 43 68 /*. * Ch
3730: 65 63 6b 20 74 68 65 20 63 6f 6e 74 65 78 74 20 eck the context
3740: 6e 61 6d 65 73 70 61 63 65 20 61 6e 64 20 74 68 namespace and th
3750: 65 20 6e 61 6d 65 73 70 61 63 65 20 65 70 6f 63 e namespace epoc
3760: 68 20 6f 66 20 74 68 65 20 72 65 73 6f 6c 76 65 h of the resolve
3770: 64 0a 40 40 20 2d 33 35 39 39 2c 31 38 20 2b 33 d.@@ -3599,18 +3
3780: 35 39 35 2c 31 34 20 40 40 0a 20 20 20 20 20 73 595,14 @@. s
3790: 61 76 65 64 46 72 61 6d 65 50 74 72 20 3d 20 69 avedFramePtr = i
37a0: 50 74 72 2d 3e 76 61 72 46 72 61 6d 65 50 74 72 Ptr->varFramePtr
37b0: 3b 0a 20 20 20 20 20 6e 61 6d 65 20 3d 20 54 63 ;. name = Tc
37c0: 6c 5f 47 65 74 53 74 72 69 6e 67 28 6f 62 6a 50 l_GetString(objP
37d0: 74 72 29 3b 0a 20 20 20 20 20 69 66 20 28 28 2a tr);. if ((*
37e0: 6e 61 6d 65 2b 2b 20 3d 3d 20 27 3a 27 29 20 26 name++ == ':') &
37f0: 26 20 28 2a 6e 61 6d 65 20 3d 3d 20 27 3a 27 29 & (*name == ':')
3800: 29 20 7b 0a 2d 09 69 50 74 72 2d 3e 76 61 72 46 ) {.-.iPtr->varF
3810: 72 61 6d 65 50 74 72 20 3d 20 4e 55 4c 4c 3b 0a ramePtr = NULL;.
3820: 2b 09 69 50 74 72 2d 3e 76 61 72 46 72 61 6d 65 +.iPtr->varFrame
3830: 50 74 72 20 3d 20 69 50 74 72 2d 3e 72 6f 6f 74 Ptr = iPtr->root
3840: 46 72 61 6d 65 50 74 72 3b 0a 20 20 20 20 20 7d FramePtr;. }
3850: 0a 20 0a 20 20 20 20 20 2f 2a 0a 20 20 20 20 20 . . /*.
3860: 20 2a 20 47 65 74 20 74 68 65 20 63 75 72 72 65 * Get the curre
3870: 6e 74 20 6e 61 6d 65 73 70 61 63 65 2e 0a 20 20 nt namespace..
3880: 20 20 20 20 2a 2f 0a 20 0a 2d 20 20 20 20 69 66 */. .- if
3890: 20 28 69 50 74 72 2d 3e 76 61 72 46 72 61 6d 65 (iPtr->varFrame
38a0: 50 74 72 20 21 3d 20 4e 55 4c 4c 29 20 7b 0a 2d Ptr != NULL) {.-
38b0: 09 63 75 72 72 4e 73 50 74 72 20 3d 20 69 50 74 .currNsPtr = iPt
38c0: 72 2d 3e 76 61 72 46 72 61 6d 65 50 74 72 2d 3e r->varFramePtr->
38d0: 6e 73 50 74 72 3b 0a 2d 20 20 20 20 7d 20 65 6c nsPtr;.- } el
38e0: 73 65 20 7b 0a 2d 09 63 75 72 72 4e 73 50 74 72 se {.-.currNsPtr
38f0: 20 3d 20 69 50 74 72 2d 3e 67 6c 6f 62 61 6c 4e = iPtr->globalN
3900: 73 50 74 72 3b 0a 2d 20 20 20 20 7d 0a 2b 20 20 sPtr;.- }.+
3910: 20 20 63 75 72 72 4e 73 50 74 72 20 3d 20 69 50 currNsPtr = iP
3920: 74 72 2d 3e 76 61 72 46 72 61 6d 65 50 74 72 2d tr->varFramePtr-
3930: 3e 6e 73 50 74 72 3b 0a 20 0a 20 20 20 20 20 63 >nsPtr;. . c
3940: 6d 64 50 74 72 2d 3e 72 65 66 43 6f 75 6e 74 2b mdPtr->refCount+
3950: 2b 3b 0a 20 20 20 20 20 72 65 73 50 74 72 20 3d +;. resPtr =
3960: 20 28 52 65 73 6f 6c 76 65 64 43 6d 64 4e 61 6d (ResolvedCmdNam
3970: 65 20 2a 29 20 63 6b 61 6c 6c 6f 63 28 73 69 7a e *) ckalloc(siz
3980: 65 6f 66 28 52 65 73 6f 6c 76 65 64 43 6d 64 4e eof(ResolvedCmdN
3990: 61 6d 65 29 29 3b 0a 40 40 20 2d 33 37 37 32 2c ame));.@@ -3772,
39a0: 31 31 20 2b 33 37 36 34 2c 37 20 40 40 0a 20 09 11 +3764,7 @@. .
39b0: 20 2a 20 47 65 74 20 74 68 65 20 63 75 72 72 65 * Get the curre
39c0: 6e 74 20 6e 61 6d 65 73 70 61 63 65 2e 0a 20 09 nt namespace.. .
39d0: 20 2a 2f 0a 20 0a 2d 09 69 66 20 28 69 50 74 72 */. .-.if (iPtr
39e0: 2d 3e 76 61 72 46 72 61 6d 65 50 74 72 20 21 3d ->varFramePtr !=
39f0: 20 4e 55 4c 4c 29 20 7b 0a 2d 09 20 20 20 20 63 NULL) {.-. c
3a00: 75 72 72 4e 73 50 74 72 20 3d 20 69 50 74 72 2d urrNsPtr = iPtr-
3a10: 3e 76 61 72 46 72 61 6d 65 50 74 72 2d 3e 6e 73 >varFramePtr->ns
3a20: 50 74 72 3b 0a 2d 09 7d 20 65 6c 73 65 20 7b 0a Ptr;.-.} else {.
3a30: 2d 09 20 20 20 20 63 75 72 72 4e 73 50 74 72 20 -. currNsPtr
3a40: 3d 20 69 50 74 72 2d 3e 67 6c 6f 62 61 6c 4e 73 = iPtr->globalNs
3a50: 50 74 72 3b 0a 2d 09 7d 0a 2b 09 63 75 72 72 4e Ptr;.-.}.+.currN
3a60: 73 50 74 72 20 3d 20 69 50 74 72 2d 3e 76 61 72 sPtr = iPtr->var
3a70: 46 72 61 6d 65 50 74 72 2d 3e 6e 73 50 74 72 3b FramePtr->nsPtr;
3a80: 0a 20 0a 20 09 63 6d 64 50 74 72 2d 3e 72 65 66 . . .cmdPtr->ref
3a90: 43 6f 75 6e 74 2b 2b 3b 0a 20 09 72 65 73 50 74 Count++;. .resPt
3aa0: 72 20 3d 20 28 52 65 73 6f 6c 76 65 64 43 6d 64 r = (ResolvedCmd
3ab0: 4e 61 6d 65 20 2a 29 20 63 6b 61 6c 6c 6f 63 28 Name *) ckalloc(
3ac0: 73 69 7a 65 6f 66 28 52 65 73 6f 6c 76 65 64 43 sizeof(ResolvedC
3ad0: 6d 64 4e 61 6d 65 29 29 3b 0a 49 6e 64 65 78 3a mdName));.Index:
3ae0: 20 67 65 6e 65 72 69 63 2f 74 63 6c 50 72 6f 63 generic/tclProc
3af0: 2e 63 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d .c.=============
3b00: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
3b10: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
3b20: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
3b30: 3d 3d 3d 3d 3d 3d 0a 52 43 53 20 66 69 6c 65 3a ======.RCS file:
3b40: 20 2f 63 76 73 72 6f 6f 74 2f 74 63 6c 2f 74 63 /cvsroot/tcl/tc
3b50: 6c 2f 67 65 6e 65 72 69 63 2f 74 63 6c 50 72 6f l/generic/tclPro
3b60: 63 2e 63 2c 76 0a 72 65 74 72 69 65 76 69 6e 67 c.c,v.retrieving
3b70: 20 72 65 76 69 73 69 6f 6e 20 31 2e 39 32 0a 64 revision 1.92.d
3b80: 69 66 66 20 2d 75 20 2d 72 31 2e 39 32 20 74 63 iff -u -r1.92 tc
3b90: 6c 50 72 6f 63 2e 63 0a 2d 2d 2d 20 67 65 6e 65 lProc.c.--- gene
3ba0: 72 69 63 2f 74 63 6c 50 72 6f 63 2e 63 09 33 30 ric/tclProc.c.30
3bb0: 20 53 65 70 20 32 30 30 36 20 31 37 3a 35 36 3a Sep 2006 17:56:
3bc0: 34 37 20 2d 30 30 30 30 09 31 2e 39 32 0a 2b 2b 47 -0000.1.92.++
3bd0: 2b 20 67 65 6e 65 72 69 63 2f 74 63 6c 50 72 6f + generic/tclPro
3be0: 63 2e 63 09 31 34 20 4f 63 74 20 32 30 30 36 20 c.c.14 Oct 2006
3bf0: 31 36 3a 35 39 3a 31 37 20 2d 30 30 30 30 0a 40 16:59:17 -0000.@
3c00: 40 20 2d 36 30 34 2c 37 20 2b 36 30 34 2c 37 20 @ -604,7 +604,7
3c10: 40 40 0a 20 20 20 20 20 20 2a 2f 0a 20 0a 20 20 @@. */. .
3c20: 20 20 20 72 65 73 75 6c 74 20 3d 20 31 3b 0a 2d result = 1;.-
3c30: 20 20 20 20 63 75 72 4c 65 76 65 6c 20 3d 20 28 curLevel = (
3c40: 69 50 74 72 2d 3e 76 61 72 46 72 61 6d 65 50 74 iPtr->varFramePt
3c50: 72 20 3d 3d 20 4e 55 4c 4c 29 20 3f 20 30 20 3a r == NULL) ? 0 :
3c60: 20 69 50 74 72 2d 3e 76 61 72 46 72 61 6d 65 50 iPtr->varFrameP
3c70: 74 72 2d 3e 6c 65 76 65 6c 3b 0a 2b 20 20 20 20 tr->level;.+
3c80: 63 75 72 4c 65 76 65 6c 20 3d 20 69 50 74 72 2d curLevel = iPtr-
3c90: 3e 76 61 72 46 72 61 6d 65 50 74 72 2d 3e 6c 65 >varFramePtr->le
3ca0: 76 65 6c 3b 0a 20 20 20 20 20 69 66 20 28 2a 6e vel;. if (*n
3cb0: 61 6d 65 3d 3d 20 27 23 27 29 20 7b 0a 20 09 69 ame== '#') {. .i
3cc0: 66 20 28 54 63 6c 5f 47 65 74 49 6e 74 28 69 6e f (Tcl_GetInt(in
3cd0: 74 65 72 70 2c 20 6e 61 6d 65 2b 31 2c 20 26 6c terp, name+1, &l
3ce0: 65 76 65 6c 29 20 21 3d 20 54 43 4c 5f 4f 4b 20 evel) != TCL_OK
3cf0: 7c 7c 20 6c 65 76 65 6c 20 3c 20 30 29 20 7b 0a || level < 0) {.
3d00: 20 09 20 20 20 20 67 6f 74 6f 20 6c 65 76 65 6c . goto level
3d10: 45 72 72 6f 72 3b 0a 40 40 20 2d 36 32 33 2c 31 Error;.@@ -623,1
3d20: 39 20 2b 36 32 33 2c 31 36 20 40 40 0a 20 20 20 9 +623,16 @@.
3d30: 20 20 20 2a 20 46 69 67 75 72 65 20 6f 75 74 20 * Figure out
3d40: 77 68 69 63 68 20 66 72 61 6d 65 20 74 6f 20 75 which frame to u
3d50: 73 65 2c 20 61 6e 64 20 72 65 74 75 72 6e 20 69 se, and return i
3d60: 74 20 74 6f 20 74 68 65 20 63 61 6c 6c 65 72 2e t to the caller.
3d70: 0a 20 20 20 20 20 20 2a 2f 0a 20 0a 2d 20 20 20 . */. .-
3d80: 20 69 66 20 28 6c 65 76 65 6c 20 3d 3d 20 30 29 if (level == 0)
3d90: 20 7b 0a 2d 09 66 72 61 6d 65 50 74 72 20 3d 20 {.-.framePtr =
3da0: 4e 55 4c 4c 3b 0a 2d 20 20 20 20 7d 20 65 6c 73 NULL;.- } els
3db0: 65 20 7b 0a 2d 09 66 6f 72 20 28 66 72 61 6d 65 e {.-.for (frame
3dc0: 50 74 72 20 3d 20 69 50 74 72 2d 3e 76 61 72 46 Ptr = iPtr->varF
3dd0: 72 61 6d 65 50 74 72 3b 20 66 72 61 6d 65 50 74 ramePtr; framePt
3de0: 72 20 21 3d 20 4e 55 4c 4c 3b 0a 2d 09 09 66 72 r != NULL;.-..fr
3df0: 61 6d 65 50 74 72 20 3d 20 66 72 61 6d 65 50 74 amePtr = framePt
3e00: 72 2d 3e 63 61 6c 6c 65 72 56 61 72 50 74 72 29 r->callerVarPtr)
3e10: 20 7b 0a 2d 09 20 20 20 20 69 66 20 28 66 72 61 {.-. if (fra
3e20: 6d 65 50 74 72 2d 3e 6c 65 76 65 6c 20 3d 3d 20 mePtr->level ==
3e30: 6c 65 76 65 6c 29 20 7b 0a 2d 09 09 62 72 65 61 level) {.-..brea
3e40: 6b 3b 0a 2d 09 20 20 20 20 7d 0a 2d 09 7d 0a 2d k;.-. }.-.}.-
3e50: 09 69 66 20 28 66 72 61 6d 65 50 74 72 20 3d 3d .if (framePtr ==
3e60: 20 4e 55 4c 4c 29 20 7b 0a 2d 09 20 20 20 20 67 NULL) {.-. g
3e70: 6f 74 6f 20 6c 65 76 65 6c 45 72 72 6f 72 3b 0a oto levelError;.
3e80: 2b 20 20 20 20 66 6f 72 20 28 66 72 61 6d 65 50 + for (frameP
3e90: 74 72 20 3d 20 69 50 74 72 2d 3e 76 61 72 46 72 tr = iPtr->varFr
3ea0: 61 6d 65 50 74 72 3b 20 66 72 61 6d 65 50 74 72 amePtr; framePtr
3eb0: 20 21 3d 20 4e 55 4c 4c 3b 0a 2b 09 20 66 72 61 != NULL;.+. fra
3ec0: 6d 65 50 74 72 20 3d 20 66 72 61 6d 65 50 74 72 mePtr = framePtr
3ed0: 2d 3e 63 61 6c 6c 65 72 56 61 72 50 74 72 29 20 ->callerVarPtr)
3ee0: 7b 0a 2b 09 69 66 20 28 66 72 61 6d 65 50 74 72 {.+.if (framePtr
3ef0: 2d 3e 6c 65 76 65 6c 20 3d 3d 20 6c 65 76 65 6c ->level == level
3f00: 29 20 7b 0a 2b 09 20 20 20 20 62 72 65 61 6b 3b ) {.+. break;
3f10: 0a 20 09 7d 0a 20 20 20 20 20 7d 0a 2b 20 20 20 . .}. }.+
3f20: 20 69 66 20 28 66 72 61 6d 65 50 74 72 20 3d 3d if (framePtr ==
3f30: 20 4e 55 4c 4c 29 20 7b 0a 2b 09 67 6f 74 6f 20 NULL) {.+.goto
3f40: 6c 65 76 65 6c 45 72 72 6f 72 3b 0a 2b 20 20 20 levelError;.+
3f50: 20 7d 0a 2b 20 20 20 20 0a 20 20 20 20 20 2a 66 }.+ . *f
3f60: 72 61 6d 65 50 74 72 50 74 72 20 3d 20 66 72 61 ramePtrPtr = fra
3f70: 6d 65 50 74 72 3b 0a 20 20 20 20 20 72 65 74 75 mePtr;. retu
3f80: 72 6e 20 72 65 73 75 6c 74 3b 0a 20 0a 40 40 20 rn result;. .@@
3f90: 2d 36 38 37 2c 37 20 2b 36 38 34 2c 37 20 40 40 -687,7 +684,7 @@
3fa0: 0a 20 20 20 20 20 20 2a 2f 0a 20 0a 20 20 20 20 . */. .
3fb0: 20 72 65 73 75 6c 74 20 3d 20 31 3b 0a 2d 20 20 result = 1;.-
3fc0: 20 20 63 75 72 4c 65 76 65 6c 20 3d 20 28 69 50 curLevel = (iP
3fd0: 74 72 2d 3e 76 61 72 46 72 61 6d 65 50 74 72 20 tr->varFramePtr
3fe0: 3d 3d 20 4e 55 4c 4c 29 20 3f 20 30 20 3a 20 69 == NULL) ? 0 : i
3ff0: 50 74 72 2d 3e 76 61 72 46 72 61 6d 65 50 74 72 Ptr->varFramePtr
4000: 2d 3e 6c 65 76 65 6c 3b 0a 2b 20 20 20 20 63 75 ->level;.+ cu
4010: 72 4c 65 76 65 6c 20 3d 20 69 50 74 72 2d 3e 76 rLevel = iPtr->v
4020: 61 72 46 72 61 6d 65 50 74 72 2d 3e 6c 65 76 65 arFramePtr->leve
4030: 6c 3b 0a 20 20 20 20 20 69 66 20 28 6f 62 6a 50 l;. if (objP
4040: 74 72 2d 3e 74 79 70 65 50 74 72 20 3d 3d 20 26 tr->typePtr == &
4050: 6c 65 76 65 6c 52 65 66 65 72 65 6e 63 65 54 79 levelReferenceTy
4060: 70 65 29 20 7b 0a 20 09 69 66 20 28 28 69 6e 74 pe) {. .if ((int
4070: 29 20 6f 62 6a 50 74 72 2d 3e 69 6e 74 65 72 6e ) objPtr->intern
4080: 61 6c 52 65 70 2e 74 77 6f 50 74 72 56 61 6c 75 alRep.twoPtrValu
4090: 65 2e 70 74 72 31 29 20 7b 0a 20 09 20 20 20 20 e.ptr1) {. .
40a0: 6c 65 76 65 6c 20 3d 20 63 75 72 4c 65 76 65 6c level = curLevel
40b0: 20 2d 20 28 69 6e 74 29 20 6f 62 6a 50 74 72 2d - (int) objPtr-
40c0: 3e 69 6e 74 65 72 6e 61 6c 52 65 70 2e 74 77 6f >internalRep.two
40d0: 50 74 72 56 61 6c 75 65 2e 70 74 72 32 3b 0a 40 PtrValue.ptr2;.@
40e0: 40 20 2d 37 35 33 2c 31 39 20 2b 37 35 30 2c 31 @ -753,19 +750,1
40f0: 35 20 40 40 0a 20 20 20 20 20 20 2a 20 46 69 67 5 @@. * Fig
4100: 75 72 65 20 6f 75 74 20 77 68 69 63 68 20 66 72 ure out which fr
4110: 61 6d 65 20 74 6f 20 75 73 65 2c 20 61 6e 64 20 ame to use, and
4120: 72 65 74 75 72 6e 20 69 74 20 74 6f 20 74 68 65 return it to the
4130: 20 63 61 6c 6c 65 72 2e 0a 20 20 20 20 20 20 2a caller.. *
4140: 2f 0a 20 0a 2d 20 20 20 20 69 66 20 28 6c 65 76 /. .- if (lev
4150: 65 6c 20 3d 3d 20 30 29 20 7b 0a 2d 09 66 72 61 el == 0) {.-.fra
4160: 6d 65 50 74 72 20 3d 20 4e 55 4c 4c 3b 0a 2d 20 mePtr = NULL;.-
4170: 20 20 20 7d 20 65 6c 73 65 20 7b 0a 2d 09 66 6f } else {.-.fo
4180: 72 20 28 66 72 61 6d 65 50 74 72 20 3d 20 69 50 r (framePtr = iP
4190: 74 72 2d 3e 76 61 72 46 72 61 6d 65 50 74 72 3b tr->varFramePtr;
41a0: 20 66 72 61 6d 65 50 74 72 20 21 3d 20 4e 55 4c framePtr != NUL
41b0: 4c 3b 0a 2d 09 09 66 72 61 6d 65 50 74 72 20 3d L;.-..framePtr =
41c0: 20 66 72 61 6d 65 50 74 72 2d 3e 63 61 6c 6c 65 framePtr->calle
41d0: 72 56 61 72 50 74 72 29 20 7b 0a 2d 09 20 20 20 rVarPtr) {.-.
41e0: 20 69 66 20 28 66 72 61 6d 65 50 74 72 2d 3e 6c if (framePtr->l
41f0: 65 76 65 6c 20 3d 3d 20 6c 65 76 65 6c 29 20 7b evel == level) {
4200: 0a 2d 09 09 62 72 65 61 6b 3b 0a 2d 09 20 20 20 .-..break;.-.
4210: 20 7d 0a 2d 09 7d 0a 2d 09 69 66 20 28 66 72 61 }.-.}.-.if (fra
4220: 6d 65 50 74 72 20 3d 3d 20 4e 55 4c 4c 29 20 7b mePtr == NULL) {
4230: 0a 2d 09 20 20 20 20 67 6f 74 6f 20 6c 65 76 65 .-. goto leve
4240: 6c 45 72 72 6f 72 3b 0a 2b 20 20 20 20 66 6f 72 lError;.+ for
4250: 20 28 66 72 61 6d 65 50 74 72 20 3d 20 69 50 74 (framePtr = iPt
4260: 72 2d 3e 76 61 72 46 72 61 6d 65 50 74 72 3b 20 r->varFramePtr;
4270: 66 72 61 6d 65 50 74 72 20 21 3d 20 4e 55 4c 4c framePtr != NULL
4280: 3b 0a 2b 09 20 66 72 61 6d 65 50 74 72 20 3d 20 ;.+. framePtr =
4290: 66 72 61 6d 65 50 74 72 2d 3e 63 61 6c 6c 65 72 framePtr->caller
42a0: 56 61 72 50 74 72 29 20 7b 0a 2b 09 69 66 20 28 VarPtr) {.+.if (
42b0: 66 72 61 6d 65 50 74 72 2d 3e 6c 65 76 65 6c 20 framePtr->level
42c0: 3d 3d 20 6c 65 76 65 6c 29 20 7b 0a 2b 09 20 20 == level) {.+.
42d0: 20 20 62 72 65 61 6b 3b 0a 20 09 7d 0a 20 20 20 break;. .}.
42e0: 20 20 7d 0a 2b 20 20 20 20 69 66 20 28 66 72 61 }.+ if (fra
42f0: 6d 65 50 74 72 20 3d 3d 20 4e 55 4c 4c 29 20 7b mePtr == NULL) {
4300: 0a 2b 09 67 6f 74 6f 20 6c 65 76 65 6c 45 72 72 .+.goto levelErr
4310: 6f 72 3b 0a 2b 20 20 20 20 7d 0a 20 20 20 20 20 or;.+ }.
4320: 2a 66 72 61 6d 65 50 74 72 50 74 72 20 3d 20 66 *framePtrPtr = f
4330: 72 61 6d 65 50 74 72 3b 0a 20 20 20 20 20 72 65 ramePtr;. re
4340: 74 75 72 6e 20 72 65 73 75 6c 74 3b 0a 20 0a 49 turn result;. .I
4350: 6e 64 65 78 3a 20 67 65 6e 65 72 69 63 2f 74 63 ndex: generic/tc
4360: 6c 54 72 61 63 65 2e 63 0a 3d 3d 3d 3d 3d 3d 3d lTrace.c.=======
4370: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
4380: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
4390: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
43a0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 52 43 53 ============.RCS
43b0: 20 66 69 6c 65 3a 20 2f 63 76 73 72 6f 6f 74 2f file: /cvsroot/
43c0: 74 63 6c 2f 74 63 6c 2f 67 65 6e 65 72 69 63 2f tcl/tcl/generic/
43d0: 74 63 6c 54 72 61 63 65 2e 63 2c 76 0a 72 65 74 tclTrace.c,v.ret
43e0: 72 69 65 76 69 6e 67 20 72 65 76 69 73 69 6f 6e rieving revision
43f0: 20 31 2e 33 33 0a 64 69 66 66 20 2d 75 20 2d 72 1.33.diff -u -r
4400: 31 2e 33 33 20 74 63 6c 54 72 61 63 65 2e 63 0a 1.33 tclTrace.c.
4410: 2d 2d 2d 20 67 65 6e 65 72 69 63 2f 74 63 6c 54 --- generic/tclT
4420: 72 61 63 65 2e 63 09 31 31 20 41 70 72 20 32 30 race.c.11 Apr 20
4430: 30 36 20 31 34 3a 33 37 3a 35 34 20 2d 30 30 30 06 14:37:54 -000
4440: 30 09 31 2e 33 33 0a 2b 2b 2b 20 67 65 6e 65 72 0.1.33.+++ gener
4450: 69 63 2f 74 63 6c 54 72 61 63 65 2e 63 09 31 34 ic/tclTrace.c.14
4460: 20 4f 63 74 20 32 30 30 36 20 31 36 3a 35 39 3a Oct 2006 16:59:
4470: 31 38 20 2d 30 30 30 30 0a 40 40 20 2d 31 34 31 18 -0000.@@ -141
4480: 37 2c 37 20 2b 31 34 31 37 2c 37 20 40 40 0a 20 7,7 +1417,7 @@.
4490: 09 72 65 74 75 72 6e 20 74 72 61 63 65 43 6f 64 .return traceCod
44a0: 65 3b 0a 20 20 20 20 20 7d 0a 20 0a 2d 20 20 20 e;. }. .-
44b0: 20 63 75 72 4c 65 76 65 6c 20 3d 20 28 28 69 50 curLevel = ((iP
44c0: 74 72 2d 3e 76 61 72 46 72 61 6d 65 50 74 72 20 tr->varFramePtr
44d0: 3d 3d 20 4e 55 4c 4c 29 20 3f 20 30 20 3a 20 69 == NULL) ? 0 : i
44e0: 50 74 72 2d 3e 76 61 72 46 72 61 6d 65 50 74 72 Ptr->varFramePtr
44f0: 2d 3e 6c 65 76 65 6c 29 3b 0a 2b 20 20 20 20 63 ->level);.+ c
4500: 75 72 4c 65 76 65 6c 20 3d 20 69 50 74 72 2d 3e urLevel = iPtr->
4510: 76 61 72 46 72 61 6d 65 50 74 72 2d 3e 6c 65 76 varFramePtr->lev
4520: 65 6c 3b 0a 20 0a 20 20 20 20 20 61 63 74 69 76 el;. . activ
4530: 65 2e 6e 65 78 74 50 74 72 20 3d 20 69 50 74 72 e.nextPtr = iPtr
4540: 2d 3e 61 63 74 69 76 65 43 6d 64 54 72 61 63 65 ->activeCmdTrace
4550: 50 74 72 3b 0a 20 20 20 20 20 69 50 74 72 2d 3e Ptr;. iPtr->
4560: 61 63 74 69 76 65 43 6d 64 54 72 61 63 65 50 74 activeCmdTracePt
4570: 72 20 3d 20 26 61 63 74 69 76 65 3b 0a 49 6e 64 r = &active;.Ind
4580: 65 78 3a 20 67 65 6e 65 72 69 63 2f 74 63 6c 56 ex: generic/tclV
4590: 61 72 2e 63 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ar.c.===========
45a0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
45b0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
45c0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
45d0: 3d 3d 3d 3d 3d 3d 3d 3d 0a 52 43 53 20 66 69 6c ========.RCS fil
45e0: 65 3a 20 2f 63 76 73 72 6f 6f 74 2f 74 63 6c 2f e: /cvsroot/tcl/
45f0: 74 63 6c 2f 67 65 6e 65 72 69 63 2f 74 63 6c 56 tcl/generic/tclV
4600: 61 72 2e 63 2c 76 0a 72 65 74 72 69 65 76 69 6e ar.c,v.retrievin
4610: 67 20 72 65 76 69 73 69 6f 6e 20 31 2e 31 32 32 g revision 1.122
4620: 0a 64 69 66 66 20 2d 75 20 2d 72 31 2e 31 32 32 .diff -u -r1.122
4630: 20 74 63 6c 56 61 72 2e 63 0a 2d 2d 2d 20 67 65 tclVar.c.--- ge
4640: 6e 65 72 69 63 2f 74 63 6c 56 61 72 2e 63 09 35 neric/tclVar.c.5
4650: 20 4f 63 74 20 32 30 30 36 20 31 31 3a 33 38 3a Oct 2006 11:38:
4660: 35 30 20 2d 30 30 30 30 09 31 2e 31 32 32 0a 2b 50 -0000.1.122.+
4670: 2b 2b 20 67 65 6e 65 72 69 63 2f 74 63 6c 56 61 ++ generic/tclVa
4680: 72 2e 63 09 31 34 20 4f 63 74 20 32 30 30 36 20 r.c.14 Oct 2006
4690: 31 36 3a 35 39 3a 32 30 20 2d 30 30 30 30 0a 40 16:59:20 -0000.@
46a0: 40 20 2d 33 39 30 2c 37 20 2b 33 39 30 2c 37 20 @ -390,7 +390,7
46b0: 40 40 0a 20 20 20 20 20 7d 0a 20 20 20 20 20 70 @@. }. p
46c0: 61 72 74 31 20 3d 20 54 63 6c 5f 47 65 74 53 74 art1 = Tcl_GetSt
46d0: 72 69 6e 67 46 72 6f 6d 4f 62 6a 28 70 61 72 74 ringFromObj(part
46e0: 31 50 74 72 2c 20 26 6c 65 6e 31 29 3b 0a 20 0a 1Ptr, &len1);. .
46f0: 2d 20 20 20 20 6e 73 50 74 72 20 3d 20 28 28 76 - nsPtr = ((v
4700: 61 72 46 72 61 6d 65 50 74 72 20 3d 3d 20 4e 55 arFramePtr == NU
4710: 4c 4c 29 3f 20 69 50 74 72 2d 3e 67 6c 6f 62 61 LL)? iPtr->globa
4720: 6c 4e 73 50 74 72 20 3a 20 76 61 72 46 72 61 6d lNsPtr : varFram
4730: 65 50 74 72 2d 3e 6e 73 50 74 72 29 3b 0a 2b 20 ePtr->nsPtr);.+
4740: 20 20 20 6e 73 50 74 72 20 3d 20 76 61 72 46 72 nsPtr = varFr
4750: 61 6d 65 50 74 72 2d 3e 6e 73 50 74 72 3b 0a 20 amePtr->nsPtr;.
4760: 20 20 20 20 69 66 20 28 6e 73 50 74 72 2d 3e 76 if (nsPtr->v
4770: 61 72 52 65 73 50 72 6f 63 20 21 3d 20 4e 55 4c arResProc != NUL
4780: 4c 20 7c 7c 20 69 50 74 72 2d 3e 72 65 73 6f 6c L || iPtr->resol
4790: 76 65 72 50 74 72 20 21 3d 20 4e 55 4c 4c 29 20 verPtr != NULL)
47a0: 7b 0a 20 09 67 6f 74 6f 20 64 6f 50 61 72 73 65 {. .goto doParse
47b0: 3b 0a 20 20 20 20 20 7d 0a 40 40 20 2d 33 39 38 ;. }.@@ -398
47c0: 2c 38 20 2b 33 39 38 2c 37 20 40 40 0a 20 20 20 ,8 +398,7 @@.
47d0: 20 20 69 66 20 28 74 79 70 65 50 74 72 20 3d 3d if (typePtr ==
47e0: 20 26 6c 6f 63 61 6c 56 61 72 4e 61 6d 65 54 79 &localVarNameTy
47f0: 70 65 29 20 7b 0a 20 09 69 6e 74 20 6c 6f 63 61 pe) {. .int loca
4800: 6c 49 6e 64 65 78 20 3d 20 28 69 6e 74 29 20 70 lIndex = (int) p
4810: 61 72 74 31 50 74 72 2d 3e 69 6e 74 65 72 6e 61 art1Ptr->interna
4820: 6c 52 65 70 2e 6c 6f 6e 67 56 61 6c 75 65 3b 0a lRep.longValue;.
4830: 20 0a 2d 09 69 66 20 28 28 76 61 72 46 72 61 6d .-.if ((varFram
4840: 65 50 74 72 20 21 3d 20 4e 55 4c 4c 29 0a 2d 09 ePtr != NULL).-.
4850: 09 26 26 20 28 76 61 72 46 72 61 6d 65 50 74 72 .&& (varFramePtr
4860: 2d 3e 69 73 50 72 6f 63 43 61 6c 6c 46 72 61 6d ->isProcCallFram
4870: 65 20 26 20 46 52 41 4d 45 5f 49 53 5f 50 52 4f e & FRAME_IS_PRO
4880: 43 29 0a 2b 09 69 66 20 28 28 76 61 72 46 72 61 C).+.if ((varFra
4890: 6d 65 50 74 72 2d 3e 69 73 50 72 6f 63 43 61 6c mePtr->isProcCal
48a0: 6c 46 72 61 6d 65 20 26 20 46 52 41 4d 45 5f 49 lFrame & FRAME_I
48b0: 53 5f 50 52 4f 43 29 0a 20 09 09 26 26 20 21 28 S_PROC). ..&& !(
48c0: 66 6c 61 67 73 20 26 20 28 54 43 4c 5f 47 4c 4f flags & (TCL_GLO
48d0: 42 41 4c 5f 4f 4e 4c 59 20 7c 20 54 43 4c 5f 4e BAL_ONLY | TCL_N
48e0: 41 4d 45 53 50 41 43 45 5f 4f 4e 4c 59 29 29 0a AMESPACE_ONLY)).
48f0: 20 09 09 26 26 20 28 6c 6f 63 61 6c 49 6e 64 65 ..&& (localInde
4900: 78 20 3c 20 76 61 72 46 72 61 6d 65 50 74 72 2d x < varFramePtr-
4910: 3e 6e 75 6d 43 6f 6d 70 69 6c 65 64 4c 6f 63 61 >numCompiledLoca
4920: 6c 73 29 29 20 7b 0a 20 09 20 20 20 20 2f 2a 0a ls)) {. . /*.
4930: 40 40 20 2d 34 32 32 2c 32 30 20 2b 34 32 31 2c @@ -422,20 +421,
4940: 31 38 20 40 40 0a 20 09 75 73 65 47 6c 6f 62 61 18 @@. .useGloba
4950: 6c 20 3d 20 28 63 61 63 68 65 64 4e 73 50 74 72 l = (cachedNsPtr
4960: 20 3d 3d 20 69 50 74 72 2d 3e 67 6c 6f 62 61 6c == iPtr->global
4970: 4e 73 50 74 72 29 20 26 26 20 28 0a 20 09 09 28 NsPtr) && (. ..(
4980: 66 6c 61 67 73 20 26 20 54 43 4c 5f 47 4c 4f 42 flags & TCL_GLOB
4990: 41 4c 5f 4f 4e 4c 59 29 20 7c 7c 0a 20 09 09 28 AL_ONLY) ||. ..(
49a0: 2a 70 61 72 74 31 3d 3d 27 3a 27 20 26 26 20 2a *part1==':' && *
49b0: 28 70 61 72 74 31 2b 31 29 3d 3d 27 3a 27 29 20 (part1+1)==':')
49c0: 7c 7c 0a 2d 09 09 28 76 61 72 46 72 61 6d 65 50 ||.-..(varFrameP
49d0: 74 72 20 3d 3d 20 4e 55 4c 4c 29 20 7c 7c 0a 20 tr == NULL) ||.
49e0: 09 09 28 21 28 76 61 72 46 72 61 6d 65 50 74 72 ..(!(varFramePtr
49f0: 2d 3e 69 73 50 72 6f 63 43 61 6c 6c 46 72 61 6d ->isProcCallFram
4a00: 65 20 26 20 46 52 41 4d 45 5f 49 53 5f 50 52 4f e & FRAME_IS_PRO
4a10: 43 29 0a 20 09 09 09 26 26 20 28 6e 73 50 74 72 C). ...&& (nsPtr
4a20: 20 3d 3d 20 69 50 74 72 2d 3e 67 6c 6f 62 61 6c == iPtr->global
4a30: 4e 73 50 74 72 29 29 29 3b 0a 20 0a 20 09 75 73 NsPtr)));. . .us
4a40: 65 52 65 66 65 72 65 6e 63 65 20 3d 20 75 73 65 eReference = use
4a50: 47 6c 6f 62 61 6c 20 7c 7c 20 28 28 63 61 63 68 Global || ((cach
4a60: 65 64 4e 73 50 74 72 20 3d 3d 20 6e 73 50 74 72 edNsPtr == nsPtr
4a70: 29 20 26 26 20 28 0a 20 09 09 28 66 6c 61 67 73 ) && (. ..(flags
4a80: 20 26 20 54 43 4c 5f 4e 41 4d 45 53 50 41 43 45 & TCL_NAMESPACE
4a90: 5f 4f 4e 4c 59 29 20 7c 7c 0a 2d 09 09 28 76 61 _ONLY) ||.-..(va
4aa0: 72 46 72 61 6d 65 50 74 72 20 26 26 0a 2d 09 09 rFramePtr &&.-..
4ab0: 21 28 76 61 72 46 72 61 6d 65 50 74 72 2d 3e 69 !(varFramePtr->i
4ac0: 73 50 72 6f 63 43 61 6c 6c 46 72 61 6d 65 20 26 sProcCallFrame &
4ad0: 20 46 52 41 4d 45 5f 49 53 5f 50 52 4f 43 29 20 FRAME_IS_PROC)
4ae0: 26 26 0a 2d 09 09 21 28 66 6c 61 67 73 20 26 20 &&.-..!(flags &
4af0: 54 43 4c 5f 47 4c 4f 42 41 4c 5f 4f 4e 4c 59 29 TCL_GLOBAL_ONLY)
4b00: 20 26 26 0a 2b 09 09 28 21 28 76 61 72 46 72 61 &&.+..(!(varFra
4b10: 6d 65 50 74 72 2d 3e 69 73 50 72 6f 63 43 61 6c mePtr->isProcCal
4b20: 6c 46 72 61 6d 65 20 26 20 46 52 41 4d 45 5f 49 lFrame & FRAME_I
4b30: 53 5f 50 52 4f 43 29 20 26 26 0a 2b 09 09 09 21 S_PROC) &&.+...!
4b40: 28 66 6c 61 67 73 20 26 20 54 43 4c 5f 47 4c 4f (flags & TCL_GLO
4b50: 42 41 4c 5f 4f 4e 4c 59 29 20 26 26 0a 20 09 09 BAL_ONLY) &&. ..
4b60: 2f 2a 0a 20 09 09 20 2a 20 43 61 72 65 66 75 6c /*. .. * Careful
4b70: 3a 20 61 6e 20 75 6e 64 65 66 69 6e 65 64 20 6e : an undefined n
4b80: 73 20 76 61 72 69 61 62 6c 65 20 63 6f 75 6c 64 s variable could
4b90: 20 62 65 20 68 69 64 69 6e 67 20 61 20 76 61 6c be hiding a val
4ba0: 69 64 0a 20 09 09 20 2a 20 67 6c 6f 62 61 6c 20 id. .. * global
4bb0: 72 65 66 65 72 65 6e 63 65 2e 0a 20 09 09 20 2a reference.. .. *
4bc0: 2f 0a 2d 09 09 21 54 63 6c 49 73 56 61 72 55 6e /.-..!TclIsVarUn
4bd0: 64 65 66 69 6e 65 64 28 76 61 72 50 74 72 29 29 defined(varPtr))
4be0: 29 29 3b 0a 2b 09 09 09 21 54 63 6c 49 73 56 61 ));.+...!TclIsVa
4bf0: 72 55 6e 64 65 66 69 6e 65 64 28 76 61 72 50 74 rUndefined(varPt
4c00: 72 29 29 29 29 3b 0a 20 0a 20 09 69 66 20 28 75 r))));. . .if (u
4c10: 73 65 52 65 66 65 72 65 6e 63 65 20 26 26 20 28 seReference && (
4c20: 76 61 72 50 74 72 2d 3e 68 50 74 72 20 21 3d 20 varPtr->hPtr !=
4c30: 4e 55 4c 4c 29 29 20 7b 0a 20 09 20 20 20 20 2f NULL)) {. . /
4c40: 2a 0a 40 40 20 2d 36 38 39 2c 37 20 2b 36 38 36 *.@@ -689,7 +686
4c50: 2c 37 20 40 40 0a 20 20 20 20 20 76 61 72 4e 73 ,7 @@. varNs
4c60: 50 74 72 20 3d 20 4e 55 4c 4c 3b 09 09 2f 2a 20 Ptr = NULL;../*
4c70: 73 65 74 20 6e 6f 6e 2d 4e 55 4c 4c 20 69 66 20 set non-NULL if
4c80: 61 20 6e 6f 6e 6c 6f 63 61 6c 20 76 61 72 69 61 a nonlocal varia
4c90: 62 6c 65 20 2a 2f 0a 20 20 20 20 20 2a 69 6e 64 ble */. *ind
4ca0: 65 78 50 74 72 20 3d 20 2d 33 3b 0a 20 0a 2d 20 exPtr = -3;. .-
4cb0: 20 20 20 69 66 20 28 28 66 6c 61 67 73 20 26 20 if ((flags &
4cc0: 54 43 4c 5f 47 4c 4f 42 41 4c 5f 4f 4e 4c 59 29 TCL_GLOBAL_ONLY)
4cd0: 20 7c 7c 20 69 50 74 72 2d 3e 76 61 72 46 72 61 || iPtr->varFra
4ce0: 6d 65 50 74 72 20 3d 3d 20 4e 55 4c 4c 29 20 7b mePtr == NULL) {
4cf0: 0a 2b 20 20 20 20 69 66 20 28 66 6c 61 67 73 20 .+ if (flags
4d00: 26 20 54 43 4c 5f 47 4c 4f 42 41 4c 5f 4f 4e 4c & TCL_GLOBAL_ONL
4d10: 59 29 20 7b 0a 20 09 63 78 74 4e 73 50 74 72 20 Y) {. .cxtNsPtr
4d20: 3d 20 69 50 74 72 2d 3e 67 6c 6f 62 61 6c 4e 73 = iPtr->globalNs
4d30: 50 74 72 3b 0a 20 20 20 20 20 7d 20 65 6c 73 65 Ptr;. } else
4d40: 20 7b 0a 20 09 63 78 74 4e 73 50 74 72 20 3d 20 {. .cxtNsPtr =
4d50: 69 50 74 72 2d 3e 76 61 72 46 72 61 6d 65 50 74 iPtr->varFramePt
4d60: 72 2d 3e 6e 73 50 74 72 3b 0a 40 40 20 2d 37 34 r->nsPtr;.@@ -74
4d70: 34 2c 37 20 2b 37 34 31 2c 36 20 40 40 0a 20 20 4,7 +741,6 @@.
4d80: 20 20 20 20 2a 2f 0a 20 0a 20 20 20 20 20 69 66 */. . if
4d90: 20 28 28 28 66 6c 61 67 73 20 26 20 28 54 43 4c (((flags & (TCL
4da0: 5f 47 4c 4f 42 41 4c 5f 4f 4e 4c 59 20 7c 20 54 _GLOBAL_ONLY | T
4db0: 43 4c 5f 4e 41 4d 45 53 50 41 43 45 5f 4f 4e 4c CL_NAMESPACE_ONL
4dc0: 59 29 29 20 21 3d 20 30 29 0a 2d 09 20 20 20 20 Y)) != 0).-.
4dd0: 7c 7c 20 28 76 61 72 46 72 61 6d 65 50 74 72 20 || (varFramePtr
4de0: 3d 3d 20 4e 55 4c 4c 29 0a 20 09 20 20 20 20 7c == NULL). . |
4df0: 7c 20 21 28 76 61 72 46 72 61 6d 65 50 74 72 2d | !(varFramePtr-
4e00: 3e 69 73 50 72 6f 63 43 61 6c 6c 46 72 61 6d 65 >isProcCallFrame
4e10: 20 26 20 46 52 41 4d 45 5f 49 53 5f 50 52 4f 43 & FRAME_IS_PROC
4e20: 29 0a 20 09 20 20 20 20 7c 7c 20 28 73 74 72 73 ). . || (strs
4e30: 74 72 28 76 61 72 4e 61 6d 65 2c 20 22 3a 3a 22 tr(varName, "::"
4e40: 29 20 21 3d 20 4e 55 4c 4c 29 29 20 7b 0a 20 09 ) != NULL)) {. .
4e50: 43 4f 4e 53 54 20 63 68 61 72 20 2a 74 61 69 6c CONST char *tail
4e60: 3b 0a 40 40 20 2d 33 32 31 34 2c 36 20 2b 33 32 ;.@@ -3214,6 +32
4e70: 31 30 2c 31 30 20 40 40 0a 20 20 20 20 20 20 2a 10,10 @@. *
4e80: 20 69 6e 74 65 72 70 72 65 74 65 72 20 69 6e 20 interpreter in
4e90: 6f 72 64 65 72 20 74 6f 20 75 73 65 20 54 63 6c order to use Tcl
4ea0: 4f 62 6a 4c 6f 6f 6b 75 70 56 61 72 2e 0a 20 20 ObjLookupVar..
4eb0: 20 20 20 20 2a 2f 0a 20 0a 2b 20 20 20 20 69 66 */. .+ if
4ec0: 20 28 66 72 61 6d 65 50 74 72 20 3d 3d 20 4e 55 (framePtr == NU
4ed0: 4c 4c 29 20 7b 0a 2b 09 66 72 61 6d 65 50 74 72 LL) {.+.framePtr
4ee0: 20 3d 20 69 50 74 72 2d 3e 72 6f 6f 74 46 72 61 = iPtr->rootFra
4ef0: 6d 65 50 74 72 3b 0a 2b 20 20 20 20 7d 0a 2b 20 mePtr;.+ }.+
4f00: 20 20 20 0a 20 20 20 20 20 76 61 72 46 72 61 6d . varFram
4f10: 65 50 74 72 20 3d 20 69 50 74 72 2d 3e 76 61 72 ePtr = iPtr->var
4f20: 46 72 61 6d 65 50 74 72 3b 0a 20 20 20 20 20 69 FramePtr;. i
4f30: 66 20 28 21 28 6f 74 68 65 72 46 6c 61 67 73 20 f (!(otherFlags
4f40: 26 20 54 43 4c 5f 4e 41 4d 45 53 50 41 43 45 5f & TCL_NAMESPACE_
4f50: 4f 4e 4c 59 29 29 20 7b 0a 20 09 69 50 74 72 2d ONLY)) {. .iPtr-
4f60: 3e 76 61 72 46 72 61 6d 65 50 74 72 20 3d 20 66 >varFramePtr = f
4f70: 72 61 6d 65 50 74 72 3b 0a 40 40 20 2d 33 35 35 ramePtr;.@@ -355
4f80: 33 2c 38 20 2b 33 35 35 33 2c 37 20 40 40 0a 20 3,8 +3553,7 @@.
4f90: 20 20 20 20 20 2a 20 49 66 20 77 65 20 61 72 65 * If we are
4fa0: 20 6e 6f 74 20 65 78 65 63 75 74 69 6e 67 20 69 not executing i
4fb0: 6e 73 69 64 65 20 61 20 54 63 6c 20 70 72 6f 63 nside a Tcl proc
4fc0: 65 64 75 72 65 2c 20 6a 75 73 74 20 72 65 74 75 edure, just retu
4fd0: 72 6e 2e 0a 20 20 20 20 20 20 2a 2f 0a 20 0a 2d rn.. */. .-
4fe0: 20 20 20 20 69 66 20 28 28 69 50 74 72 2d 3e 76 if ((iPtr->v
4ff0: 61 72 46 72 61 6d 65 50 74 72 20 3d 3d 20 4e 55 arFramePtr == NU
5000: 4c 4c 29 0a 2d 09 20 20 20 20 7c 7c 20 21 28 69 LL).-. || !(i
5010: 50 74 72 2d 3e 76 61 72 46 72 61 6d 65 50 74 72 Ptr->varFramePtr
5020: 2d 3e 69 73 50 72 6f 63 43 61 6c 6c 46 72 61 6d ->isProcCallFram
5030: 65 20 26 20 46 52 41 4d 45 5f 49 53 5f 50 52 4f e & FRAME_IS_PRO
5040: 43 29 29 20 7b 0a 2b 20 20 20 20 69 66 20 28 21 C)) {.+ if (!
5050: 28 69 50 74 72 2d 3e 76 61 72 46 72 61 6d 65 50 (iPtr->varFrameP
5060: 74 72 2d 3e 69 73 50 72 6f 63 43 61 6c 6c 46 72 tr->isProcCallFr
5070: 61 6d 65 20 26 20 46 52 41 4d 45 5f 49 53 5f 50 ame & FRAME_IS_P
5080: 52 4f 43 29 29 20 7b 0a 20 09 72 65 74 75 72 6e ROC)) {. .return
5090: 20 54 43 4c 5f 4f 4b 3b 0a 20 20 20 20 20 7d 0a TCL_OK;. }.
50a0: 20 0a 40 40 20 2d 33 37 30 35 2c 38 20 2b 33 37 .@@ -3705,8 +37
50b0: 30 34 2c 37 20 40 40 0a 20 09 20 2a 20 6c 69 6e 04,7 @@. . * lin
50c0: 6b 65 64 20 74 6f 20 74 68 65 20 6e 65 77 20 6e ked to the new n
50d0: 61 6d 65 73 70 61 63 65 20 76 61 72 69 61 62 6c amespace variabl
50e0: 65 20 22 76 61 72 4e 61 6d 65 22 2e 0a 20 09 20 e "varName".. .
50f0: 2a 2f 0a 20 0a 2d 09 69 66 20 28 28 69 50 74 72 */. .-.if ((iPtr
5100: 2d 3e 76 61 72 46 72 61 6d 65 50 74 72 20 21 3d ->varFramePtr !=
5110: 20 4e 55 4c 4c 29 0a 2d 09 09 26 26 20 28 69 50 NULL).-..&& (iP
5120: 74 72 2d 3e 76 61 72 46 72 61 6d 65 50 74 72 2d tr->varFramePtr-
5130: 3e 69 73 50 72 6f 63 43 61 6c 6c 46 72 61 6d 65 >isProcCallFrame
5140: 20 26 20 46 52 41 4d 45 5f 49 53 5f 50 52 4f 43 & FRAME_IS_PROC
5150: 29 29 20 7b 0a 2b 09 69 66 20 28 69 50 74 72 2d )) {.+.if (iPtr-
5160: 3e 76 61 72 46 72 61 6d 65 50 74 72 2d 3e 69 73 >varFramePtr->is
5170: 50 72 6f 63 43 61 6c 6c 46 72 61 6d 65 20 26 20 ProcCallFrame &
5180: 46 52 41 4d 45 5f 49 53 5f 50 52 4f 43 29 20 7b FRAME_IS_PROC) {
5190: 0a 20 09 20 20 20 20 2f 2a 0a 20 09 20 20 20 20 . . /*. .
51a0: 20 2a 20 76 61 72 4e 61 6d 65 20 6d 69 67 68 74 * varName might
51b0: 20 68 61 76 65 20 61 20 73 63 6f 70 65 20 71 75 have a scope qu
51c0: 61 6c 69 66 69 65 72 2c 20 62 75 74 20 74 68 65 alifier, but the
51d0: 20 6e 61 6d 65 20 66 6f 72 20 74 68 65 0a 20 09 name for the. .
51e0: 20 20 20 20 20 2a 20 6c 6f 63 61 6c 20 22 6c 69 * local "li
51f0: 6e 6b 22 20 76 61 72 69 61 62 6c 65 20 6d 75 73 nk" variable mus
5200: 74 20 62 65 20 74 68 65 20 73 69 6d 70 6c 65 20 t be the simple
5210: 6e 61 6d 65 20 61 74 20 74 68 65 20 74 61 69 6c name at the tail
5220: 2e 0a ..