Tcl Source Code

Hex Artifact Content
Login

Artifact 5c1193e1a5b79d1cda8b2e044b10cc1ef2a9a8e6:

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                                            ..