Tcl Source Code

Hex Artifact Content
Login

Artifact c2fa2c56ece2ceae1765282850de8170edeb8a7d:

Attachment "1334947-8-4.patch" to ticket [1334947fff] added by msofer 2005-10-24 05:05:26.
0000: 49 6e 64 65 78 3a 20 67 65 6e 65 72 69 63 2f 74  Index: generic/t
0010: 63 6c 42 61 73 69 63 2e 63 0a 3d 3d 3d 3d 3d 3d  clBasic.c.======
0020: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
0030: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
0040: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
0050: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 52 43  =============.RC
0060: 53 20 66 69 6c 65 3a 20 2f 63 76 73 72 6f 6f 74  S file: /cvsroot
0070: 2f 74 63 6c 2f 74 63 6c 2f 67 65 6e 65 72 69 63  /tcl/tcl/generic
0080: 2f 74 63 6c 42 61 73 69 63 2e 63 2c 76 0a 72 65  /tclBasic.c,v.re
0090: 74 72 69 65 76 69 6e 67 20 72 65 76 69 73 69 6f  trieving revisio
00a0: 6e 20 31 2e 37 35 2e 32 2e 31 37 0a 64 69 66 66  n 1.75.2.17.diff
00b0: 20 2d 75 20 2d 72 31 2e 37 35 2e 32 2e 31 37 20   -u -r1.75.2.17 
00c0: 74 63 6c 42 61 73 69 63 2e 63 0a 2d 2d 2d 20 67  tclBasic.c.--- g
00d0: 65 6e 65 72 69 63 2f 74 63 6c 42 61 73 69 63 2e  eneric/tclBasic.
00e0: 63 09 32 36 20 4a 75 6c 20 32 30 30 35 20 31 37  c.26 Jul 2005 17
00f0: 3a 30 35 3a 34 33 20 2d 30 30 30 30 09 31 2e 37  :05:43 -0000.1.7
0100: 35 2e 32 2e 31 37 0a 2b 2b 2b 20 67 65 6e 65 72  5.2.17.+++ gener
0110: 69 63 2f 74 63 6c 42 61 73 69 63 2e 63 09 32 33  ic/tclBasic.c.23
0120: 20 4f 63 74 20 32 30 30 35 20 32 31 3a 34 37 3a   Oct 2005 21:47:
0130: 34 36 20 2d 30 30 30 30 0a 40 40 20 2d 35 32 38  46 -0000.@@ -528
0140: 34 2c 37 20 2b 35 32 38 34 2c 37 20 40 40 0a 20  4,7 +5284,7 @@. 
0150: 09 09 09 09 20 2a 20 4e 55 4c 4c 20 62 79 74 65  .... * NULL byte
0160: 2e 20 2a 2f 0a 20 7b 0a 20 20 20 20 20 72 65 67  . */. {.     reg
0170: 69 73 74 65 72 20 49 6e 74 65 72 70 20 2a 69 50  ister Interp *iP
0180: 74 72 20 3d 20 28 49 6e 74 65 72 70 20 2a 29 20  tr = (Interp *) 
0190: 69 6e 74 65 72 70 3b 0a 2d 20 20 20 20 54 63 6c  interp;.-    Tcl
01a0: 5f 4f 62 6a 20 2a 6d 65 73 73 61 67 65 50 74 72  _Obj *messagePtr
01b0: 3b 0a 2b 20 20 20 20 54 63 6c 5f 4f 62 6a 20 2a  ;.+    Tcl_Obj *
01c0: 6f 62 6a 50 74 72 3b 0a 20 20 20 20 20 0a 20 20  objPtr;.     .  
01d0: 20 20 20 2f 2a 0a 20 20 20 20 20 20 2a 20 49 66     /*.      * If
01e0: 20 77 65 20 61 72 65 20 6a 75 73 74 20 73 74 61   we are just sta
01f0: 72 74 69 6e 67 20 74 6f 20 6c 6f 67 20 61 6e 20  rting to log an 
0200: 65 72 72 6f 72 2c 20 65 72 72 6f 72 49 6e 66 6f  error, errorInfo
0210: 20 69 73 20 69 6e 69 74 69 61 6c 69 7a 65 64 0a   is initialized.
0220: 40 40 20 2d 35 32 39 38 2c 38 20 2b 35 32 39 38  @@ -5298,8 +5298
0230: 2c 31 31 20 40 40 0a 20 09 20 20 20 20 54 63 6c  ,11 @@. .    Tcl
0240: 5f 4f 62 6a 53 65 74 56 61 72 32 28 69 6e 74 65  _ObjSetVar2(inte
0250: 72 70 2c 20 69 50 74 72 2d 3e 65 78 65 63 45 6e  rp, iPtr->execEn
0260: 76 50 74 72 2d 3e 65 72 72 6f 72 49 6e 66 6f 2c  vPtr->errorInfo,
0270: 20 4e 55 4c 4c 2c 20 0a 20 09 20 20 20 20 20 20   NULL, . .      
0280: 20 20 20 20 20 20 69 50 74 72 2d 3e 6f 62 6a 52        iPtr->objR
0290: 65 73 75 6c 74 50 74 72 2c 20 54 43 4c 5f 47 4c  esultPtr, TCL_GL
02a0: 4f 42 41 4c 5f 4f 4e 4c 59 29 3b 0a 20 09 7d 20  OBAL_ONLY);. .} 
02b0: 65 6c 73 65 20 7b 09 09 2f 2a 20 75 73 65 20 74  else {../* use t
02c0: 68 65 20 73 74 72 69 6e 67 20 72 65 73 75 6c 74  he string result
02d0: 20 2a 2f 0a 2b 09 20 20 20 20 6f 62 6a 50 74 72   */.+.    objPtr
02e0: 20 3d 20 54 63 6c 5f 4e 65 77 53 74 72 69 6e 67   = Tcl_NewString
02f0: 4f 62 6a 28 69 6e 74 65 72 70 2d 3e 72 65 73 75  Obj(interp->resu
0300: 6c 74 2c 20 2d 31 29 3b 0a 2b 09 20 20 20 20 54  lt, -1);.+.    T
0310: 63 6c 5f 49 6e 63 72 52 65 66 43 6f 75 6e 74 28  cl_IncrRefCount(
0320: 6f 62 6a 50 74 72 29 3b 0a 20 09 20 20 20 20 54  objPtr);. .    T
0330: 63 6c 5f 4f 62 6a 53 65 74 56 61 72 32 28 69 6e  cl_ObjSetVar2(in
0340: 74 65 72 70 2c 20 69 50 74 72 2d 3e 65 78 65 63  terp, iPtr->exec
0350: 45 6e 76 50 74 72 2d 3e 65 72 72 6f 72 49 6e 66  EnvPtr->errorInf
0360: 6f 2c 20 4e 55 4c 4c 2c 20 0a 2d 09 20 20 20 20  o, NULL, .-.    
0370: 20 20 20 20 20 20 20 20 54 63 6c 5f 4e 65 77 53          Tcl_NewS
0380: 74 72 69 6e 67 4f 62 6a 28 69 6e 74 65 72 70 2d  tringObj(interp-
0390: 3e 72 65 73 75 6c 74 2c 20 2d 31 29 2c 20 54 43  >result, -1), TC
03a0: 4c 5f 47 4c 4f 42 41 4c 5f 4f 4e 4c 59 29 3b 0a  L_GLOBAL_ONLY);.
03b0: 2b 09 20 20 20 20 20 20 20 20 20 20 20 20 6f 62  +.            ob
03c0: 6a 50 74 72 2c 20 54 43 4c 5f 47 4c 4f 42 41 4c  jPtr, TCL_GLOBAL
03d0: 5f 4f 4e 4c 59 29 3b 0a 2b 09 20 20 20 20 54 63  _ONLY);.+.    Tc
03e0: 6c 5f 44 65 63 72 52 65 66 43 6f 75 6e 74 28 6f  l_DecrRefCount(o
03f0: 62 6a 50 74 72 29 3b 0a 20 09 7d 0a 20 0a 20 09  bjPtr);. .}. . .
0400: 2f 2a 0a 40 40 20 2d 35 33 30 38 2c 38 20 2b 35  /*.@@ -5308,8 +5
0410: 33 31 31 2c 31 31 20 40 40 0a 20 09 20 2a 2f 0a  311,11 @@. . */.
0420: 20 0a 20 09 69 66 20 28 21 28 69 50 74 72 2d 3e   . .if (!(iPtr->
0430: 66 6c 61 67 73 20 26 20 45 52 52 4f 52 5f 43 4f  flags & ERROR_CO
0440: 44 45 5f 53 45 54 29 29 20 7b 0a 2b 09 20 20 20  DE_SET)) {.+.   
0450: 20 6f 62 6a 50 74 72 20 3d 20 54 63 6c 5f 4e 65   objPtr = Tcl_Ne
0460: 77 53 74 72 69 6e 67 4f 62 6a 28 22 4e 4f 4e 45  wStringObj("NONE
0470: 22 2c 20 2d 31 29 3b 0a 2b 09 20 20 20 20 54 63  ", -1);.+.    Tc
0480: 6c 5f 49 6e 63 72 52 65 66 43 6f 75 6e 74 28 6f  l_IncrRefCount(o
0490: 62 6a 50 74 72 29 3b 0a 20 09 20 20 20 20 54 63  bjPtr);. .    Tc
04a0: 6c 5f 4f 62 6a 53 65 74 56 61 72 32 28 69 6e 74  l_ObjSetVar2(int
04b0: 65 72 70 2c 20 69 50 74 72 2d 3e 65 78 65 63 45  erp, iPtr->execE
04c0: 6e 76 50 74 72 2d 3e 65 72 72 6f 72 43 6f 64 65  nvPtr->errorCode
04d0: 2c 20 4e 55 4c 4c 2c 20 0a 2d 09 20 20 20 20 20  , NULL, .-.     
04e0: 20 20 20 20 20 20 20 54 63 6c 5f 4e 65 77 53 74         Tcl_NewSt
04f0: 72 69 6e 67 4f 62 6a 28 22 4e 4f 4e 45 22 2c 20  ringObj("NONE", 
0500: 2d 31 29 2c 20 54 43 4c 5f 47 4c 4f 42 41 4c 5f  -1), TCL_GLOBAL_
0510: 4f 4e 4c 59 29 3b 0a 2b 09 20 20 20 20 20 20 20  ONLY);.+.       
0520: 20 20 20 20 20 6f 62 6a 50 74 72 2c 20 54 43 4c       objPtr, TCL
0530: 5f 47 4c 4f 42 41 4c 5f 4f 4e 4c 59 29 3b 0a 2b  _GLOBAL_ONLY);.+
0540: 09 20 20 20 20 54 63 6c 5f 44 65 63 72 52 65 66  .    Tcl_DecrRef
0550: 43 6f 75 6e 74 28 6f 62 6a 50 74 72 29 3b 0a 20  Count(objPtr);. 
0560: 09 7d 0a 20 20 20 20 20 7d 0a 20 0a 40 40 20 2d  .}.     }. .@@ -
0570: 35 33 31 38 2c 31 31 20 2b 35 33 32 34 2c 31 31  5318,11 +5324,11
0580: 20 40 40 0a 20 20 20 20 20 20 2a 2f 0a 20 0a 20   @@.      */. . 
0590: 20 20 20 20 69 66 20 28 6c 65 6e 67 74 68 20 21      if (length !
05a0: 3d 20 30 29 20 7b 0a 2d 09 6d 65 73 73 61 67 65  = 0) {.-.message
05b0: 50 74 72 20 3d 20 54 63 6c 5f 4e 65 77 53 74 72  Ptr = Tcl_NewStr
05c0: 69 6e 67 4f 62 6a 28 6d 65 73 73 61 67 65 2c 20  ingObj(message, 
05d0: 6c 65 6e 67 74 68 29 3b 0a 2d 09 54 63 6c 5f 49  length);.-.Tcl_I
05e0: 6e 63 72 52 65 66 43 6f 75 6e 74 28 6d 65 73 73  ncrRefCount(mess
05f0: 61 67 65 50 74 72 29 3b 0a 2b 09 6f 62 6a 50 74  agePtr);.+.objPt
0600: 72 20 3d 20 54 63 6c 5f 4e 65 77 53 74 72 69 6e  r = Tcl_NewStrin
0610: 67 4f 62 6a 28 6d 65 73 73 61 67 65 2c 20 6c 65  gObj(message, le
0620: 6e 67 74 68 29 3b 0a 2b 09 54 63 6c 5f 49 6e 63  ngth);.+.Tcl_Inc
0630: 72 52 65 66 43 6f 75 6e 74 28 6f 62 6a 50 74 72  rRefCount(objPtr
0640: 29 3b 0a 20 09 54 63 6c 5f 4f 62 6a 53 65 74 56  );. .Tcl_ObjSetV
0650: 61 72 32 28 69 6e 74 65 72 70 2c 20 69 50 74 72  ar2(interp, iPtr
0660: 2d 3e 65 78 65 63 45 6e 76 50 74 72 2d 3e 65 72  ->execEnvPtr->er
0670: 72 6f 72 49 6e 66 6f 2c 20 4e 55 4c 4c 2c 20 0a  rorInfo, NULL, .
0680: 2d 09 20 20 20 20 20 20 20 20 6d 65 73 73 61 67  -.        messag
0690: 65 50 74 72 2c 20 28 54 43 4c 5f 47 4c 4f 42 41  ePtr, (TCL_GLOBA
06a0: 4c 5f 4f 4e 4c 59 20 7c 20 54 43 4c 5f 41 50 50  L_ONLY | TCL_APP
06b0: 45 4e 44 5f 56 41 4c 55 45 29 29 3b 0a 2d 09 54  END_VALUE));.-.T
06c0: 63 6c 5f 44 65 63 72 52 65 66 43 6f 75 6e 74 28  cl_DecrRefCount(
06d0: 6d 65 73 73 61 67 65 50 74 72 29 3b 20 2f 2a 20  messagePtr); /* 
06e0: 66 72 65 65 20 6d 73 67 20 6f 62 6a 65 63 74 20  free msg object 
06f0: 61 70 70 65 6e 64 65 64 20 61 62 6f 76 65 20 2a  appended above *
0700: 2f 0a 2b 09 20 20 20 20 20 20 20 20 6f 62 6a 50  /.+.        objP
0710: 74 72 2c 20 28 54 43 4c 5f 47 4c 4f 42 41 4c 5f  tr, (TCL_GLOBAL_
0720: 4f 4e 4c 59 20 7c 20 54 43 4c 5f 41 50 50 45 4e  ONLY | TCL_APPEN
0730: 44 5f 56 41 4c 55 45 29 29 3b 0a 2b 09 54 63 6c  D_VALUE));.+.Tcl
0740: 5f 44 65 63 72 52 65 66 43 6f 75 6e 74 28 6f 62  _DecrRefCount(ob
0750: 6a 50 74 72 29 3b 20 2f 2a 20 66 72 65 65 20 6d  jPtr); /* free m
0760: 73 67 20 6f 62 6a 65 63 74 20 61 70 70 65 6e 64  sg object append
0770: 65 64 20 61 62 6f 76 65 20 2a 2f 0a 20 20 20 20  ed above */.    
0780: 20 7d 0a 20 7d 0a 20 0c 0a 49 6e 64 65 78 3a 20   }. }. ..Index: 
0790: 67 65 6e 65 72 69 63 2f 74 63 6c 42 69 6e 61 72  generic/tclBinar
07a0: 79 2e 63 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  y.c.============
07b0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
07c0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
07d0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
07e0: 3d 3d 3d 3d 3d 3d 3d 0a 52 43 53 20 66 69 6c 65  =======.RCS file
07f0: 3a 20 2f 63 76 73 72 6f 6f 74 2f 74 63 6c 2f 74  : /cvsroot/tcl/t
0800: 63 6c 2f 67 65 6e 65 72 69 63 2f 74 63 6c 42 69  cl/generic/tclBi
0810: 6e 61 72 79 2e 63 2c 76 0a 72 65 74 72 69 65 76  nary.c,v.retriev
0820: 69 6e 67 20 72 65 76 69 73 69 6f 6e 20 31 2e 31  ing revision 1.1
0830: 33 2e 32 2e 33 0a 64 69 66 66 20 2d 75 20 2d 72  3.2.3.diff -u -r
0840: 31 2e 31 33 2e 32 2e 33 20 74 63 6c 42 69 6e 61  1.13.2.3 tclBina
0850: 72 79 2e 63 0a 2d 2d 2d 20 67 65 6e 65 72 69 63  ry.c.--- generic
0860: 2f 74 63 6c 42 69 6e 61 72 79 2e 63 09 32 37 20  /tclBinary.c.27 
0870: 53 65 70 20 32 30 30 35 20 31 35 3a 34 34 3a 31  Sep 2005 15:44:1
0880: 33 20 2d 30 30 30 30 09 31 2e 31 33 2e 32 2e 33  3 -0000.1.13.2.3
0890: 0a 2b 2b 2b 20 67 65 6e 65 72 69 63 2f 74 63 6c  .+++ generic/tcl
08a0: 42 69 6e 61 72 79 2e 63 09 32 33 20 4f 63 74 20  Binary.c.23 Oct 
08b0: 32 30 30 35 20 32 31 3a 34 37 3a 34 36 20 2d 30  2005 21:47:46 -0
08c0: 30 30 30 0a 40 40 20 2d 31 30 38 33 2c 31 32 20  000.@@ -1083,12 
08d0: 2b 31 30 38 33 2c 31 33 20 40 40 0a 20 09 09 09  +1083,13 @@. ...
08e0: 20 20 20 20 7d 0a 20 09 09 09 7d 0a 20 09 09 09      }. ...}. ...
08f0: 76 61 6c 75 65 50 74 72 20 3d 20 54 63 6c 5f 4e  valuePtr = Tcl_N
0900: 65 77 42 79 74 65 41 72 72 61 79 4f 62 6a 28 73  ewByteArrayObj(s
0910: 72 63 2c 20 73 69 7a 65 29 3b 0a 2b 09 09 09 54  rc, size);.+...T
0920: 63 6c 5f 49 6e 63 72 52 65 66 43 6f 75 6e 74 28  cl_IncrRefCount(
0930: 76 61 6c 75 65 50 74 72 29 3b 0a 20 09 09 09 72  valuePtr);. ...r
0940: 65 73 75 6c 74 50 74 72 20 3d 20 54 63 6c 5f 4f  esultPtr = Tcl_O
0950: 62 6a 53 65 74 56 61 72 32 28 69 6e 74 65 72 70  bjSetVar2(interp
0960: 2c 20 6f 62 6a 76 5b 61 72 67 5d 2c 0a 20 09 09  , objv[arg],. ..
0970: 09 09 4e 55 4c 4c 2c 20 76 61 6c 75 65 50 74 72  ..NULL, valuePtr
0980: 2c 20 54 43 4c 5f 4c 45 41 56 45 5f 45 52 52 5f  , TCL_LEAVE_ERR_
0990: 4d 53 47 29 3b 0a 2b 09 09 09 54 63 6c 5f 44 65  MSG);.+...Tcl_De
09a0: 63 72 52 65 66 43 6f 75 6e 74 28 76 61 6c 75 65  crRefCount(value
09b0: 50 74 72 29 3b 0a 20 09 09 09 61 72 67 2b 2b 3b  Ptr);. ...arg++;
09c0: 0a 20 09 09 09 69 66 20 28 72 65 73 75 6c 74 50  . ...if (resultP
09d0: 74 72 20 3d 3d 20 4e 55 4c 4c 29 20 7b 0a 20 09  tr == NULL) {. .
09e0: 09 09 20 20 20 20 44 65 6c 65 74 65 53 63 61 6e  ..    DeleteScan
09f0: 4e 75 6d 62 65 72 43 61 63 68 65 28 6e 75 6d 62  NumberCache(numb
0a00: 65 72 43 61 63 68 65 50 74 72 29 3b 0a 2d 09 09  erCachePtr);.-..
0a10: 09 20 20 20 20 54 63 6c 5f 44 65 63 72 52 65 66  .    Tcl_DecrRef
0a20: 43 6f 75 6e 74 28 76 61 6c 75 65 50 74 72 29 3b  Count(valuePtr);
0a30: 09 2f 2a 20 75 6e 6e 65 65 64 65 64 20 2a 2f 0a  ./* unneeded */.
0a40: 20 09 09 09 20 20 20 20 72 65 74 75 72 6e 20 54   ...    return T
0a50: 43 4c 5f 45 52 52 4f 52 3b 0a 20 09 09 09 7d 0a  CL_ERROR;. ...}.
0a60: 20 09 09 09 6f 66 66 73 65 74 20 2b 3d 20 63 6f   ...offset += co
0a70: 75 6e 74 3b 0a 40 40 20 2d 31 31 33 37 2c 31 33  unt;.@@ -1137,13
0a80: 20 2b 31 31 33 38 2c 31 34 20 40 40 0a 20 09 09   +1138,14 @@. ..
0a90: 09 09 2a 64 65 73 74 2b 2b 20 3d 20 28 63 68 61  ..*dest++ = (cha
0aa0: 72 29 20 28 28 76 61 6c 75 65 20 26 20 30 78 38  r) ((value & 0x8
0ab0: 30 29 20 3f 20 27 31 27 20 3a 20 27 30 27 29 3b  0) ? '1' : '0');
0ac0: 0a 20 09 09 09 20 20 20 20 7d 0a 20 09 09 09 7d  . ...    }. ...}
0ad0: 0a 2d 09 09 09 0a 2b 0a 2b 09 09 09 54 63 6c 5f  .-....+.+...Tcl_
0ae0: 49 6e 63 72 52 65 66 43 6f 75 6e 74 28 76 61 6c  IncrRefCount(val
0af0: 75 65 50 74 72 29 3b 09 09 09 0a 20 09 09 09 72  uePtr);.... ...r
0b00: 65 73 75 6c 74 50 74 72 20 3d 20 54 63 6c 5f 4f  esultPtr = Tcl_O
0b10: 62 6a 53 65 74 56 61 72 32 28 69 6e 74 65 72 70  bjSetVar2(interp
0b20: 2c 20 6f 62 6a 76 5b 61 72 67 5d 2c 0a 20 09 09  , objv[arg],. ..
0b30: 09 09 4e 55 4c 4c 2c 20 76 61 6c 75 65 50 74 72  ..NULL, valuePtr
0b40: 2c 20 54 43 4c 5f 4c 45 41 56 45 5f 45 52 52 5f  , TCL_LEAVE_ERR_
0b50: 4d 53 47 29 3b 0a 2b 09 09 09 54 63 6c 5f 44 65  MSG);.+...Tcl_De
0b60: 63 72 52 65 66 43 6f 75 6e 74 28 76 61 6c 75 65  crRefCount(value
0b70: 50 74 72 29 3b 0a 20 09 09 09 61 72 67 2b 2b 3b  Ptr);. ...arg++;
0b80: 0a 20 09 09 09 69 66 20 28 72 65 73 75 6c 74 50  . ...if (resultP
0b90: 74 72 20 3d 3d 20 4e 55 4c 4c 29 20 7b 0a 20 09  tr == NULL) {. .
0ba0: 09 09 20 20 20 20 44 65 6c 65 74 65 53 63 61 6e  ..    DeleteScan
0bb0: 4e 75 6d 62 65 72 43 61 63 68 65 28 6e 75 6d 62  NumberCache(numb
0bc0: 65 72 43 61 63 68 65 50 74 72 29 3b 0a 2d 09 09  erCachePtr);.-..
0bd0: 09 20 20 20 20 54 63 6c 5f 44 65 63 72 52 65 66  .    Tcl_DecrRef
0be0: 43 6f 75 6e 74 28 76 61 6c 75 65 50 74 72 29 3b  Count(valuePtr);
0bf0: 09 2f 2a 20 75 6e 6e 65 65 64 65 64 20 2a 2f 0a  ./* unneeded */.
0c00: 20 09 09 09 20 20 20 20 72 65 74 75 72 6e 20 54   ...    return T
0c10: 43 4c 5f 45 52 52 4f 52 3b 0a 20 09 09 09 7d 0a  CL_ERROR;. ...}.
0c20: 20 09 09 09 6f 66 66 73 65 74 20 2b 3d 20 28 63   ...offset += (c
0c30: 6f 75 6e 74 20 2b 20 37 20 29 20 2f 20 38 3b 0a  ount + 7 ) / 8;.
0c40: 40 40 20 2d 31 31 39 35 2c 31 32 20 2b 31 31 39  @@ -1195,12 +119
0c50: 37 2c 31 33 20 40 40 0a 20 09 09 09 20 20 20 20  7,13 @@. ...    
0c60: 7d 0a 20 09 09 09 7d 0a 20 09 09 09 0a 2b 09 09  }. ...}. ....+..
0c70: 09 54 63 6c 5f 49 6e 63 72 52 65 66 43 6f 75 6e  .Tcl_IncrRefCoun
0c80: 74 28 76 61 6c 75 65 50 74 72 29 3b 0a 20 09 09  t(valuePtr);. ..
0c90: 09 72 65 73 75 6c 74 50 74 72 20 3d 20 54 63 6c  .resultPtr = Tcl
0ca0: 5f 4f 62 6a 53 65 74 56 61 72 32 28 69 6e 74 65  _ObjSetVar2(inte
0cb0: 72 70 2c 20 6f 62 6a 76 5b 61 72 67 5d 2c 0a 20  rp, objv[arg],. 
0cc0: 09 09 09 09 4e 55 4c 4c 2c 20 76 61 6c 75 65 50  ....NULL, valueP
0cd0: 74 72 2c 20 54 43 4c 5f 4c 45 41 56 45 5f 45 52  tr, TCL_LEAVE_ER
0ce0: 52 5f 4d 53 47 29 3b 0a 2b 09 09 09 54 63 6c 5f  R_MSG);.+...Tcl_
0cf0: 44 65 63 72 52 65 66 43 6f 75 6e 74 28 76 61 6c  DecrRefCount(val
0d00: 75 65 50 74 72 29 3b 0a 20 09 09 09 61 72 67 2b  uePtr);. ...arg+
0d10: 2b 3b 0a 20 09 09 09 69 66 20 28 72 65 73 75 6c  +;. ...if (resul
0d20: 74 50 74 72 20 3d 3d 20 4e 55 4c 4c 29 20 7b 0a  tPtr == NULL) {.
0d30: 20 09 09 09 20 20 20 20 44 65 6c 65 74 65 53 63   ...    DeleteSc
0d40: 61 6e 4e 75 6d 62 65 72 43 61 63 68 65 28 6e 75  anNumberCache(nu
0d50: 6d 62 65 72 43 61 63 68 65 50 74 72 29 3b 0a 2d  mberCachePtr);.-
0d60: 09 09 09 20 20 20 20 54 63 6c 5f 44 65 63 72 52  ...    Tcl_DecrR
0d70: 65 66 43 6f 75 6e 74 28 76 61 6c 75 65 50 74 72  efCount(valuePtr
0d80: 29 3b 09 2f 2a 20 75 6e 6e 65 65 64 65 64 20 2a  );./* unneeded *
0d90: 2f 0a 20 09 09 09 20 20 20 20 72 65 74 75 72 6e  /. ...    return
0da0: 20 54 43 4c 5f 45 52 52 4f 52 3b 0a 20 09 09 09   TCL_ERROR;. ...
0db0: 7d 0a 20 09 09 09 6f 66 66 73 65 74 20 2b 3d 20  }. ...offset += 
0dc0: 28 63 6f 75 6e 74 20 2b 20 31 29 20 2f 20 32 3b  (count + 1) / 2;
0dd0: 0a 40 40 20 2d 31 32 36 36 2c 31 32 20 2b 31 32  .@@ -1266,12 +12
0de0: 36 39 2c 31 33 20 40 40 0a 20 09 09 09 20 20 20  69,13 @@. ...   
0df0: 20 6f 66 66 73 65 74 20 2b 3d 20 63 6f 75 6e 74   offset += count
0e00: 2a 73 69 7a 65 3b 0a 20 09 09 09 7d 0a 20 0a 2b  *size;. ...}. .+
0e10: 09 09 09 54 63 6c 5f 49 6e 63 72 52 65 66 43 6f  ...Tcl_IncrRefCo
0e20: 75 6e 74 28 76 61 6c 75 65 50 74 72 29 3b 20 0a  unt(valuePtr); .
0e30: 20 09 09 09 72 65 73 75 6c 74 50 74 72 20 3d 20   ...resultPtr = 
0e40: 54 63 6c 5f 4f 62 6a 53 65 74 56 61 72 32 28 69  Tcl_ObjSetVar2(i
0e50: 6e 74 65 72 70 2c 20 6f 62 6a 76 5b 61 72 67 5d  nterp, objv[arg]
0e60: 2c 0a 20 09 09 09 09 4e 55 4c 4c 2c 20 76 61 6c  ,. ....NULL, val
0e70: 75 65 50 74 72 2c 20 54 43 4c 5f 4c 45 41 56 45  uePtr, TCL_LEAVE
0e80: 5f 45 52 52 5f 4d 53 47 29 3b 0a 2b 09 09 09 54  _ERR_MSG);.+...T
0e90: 63 6c 5f 44 65 63 72 52 65 66 43 6f 75 6e 74 28  cl_DecrRefCount(
0ea0: 76 61 6c 75 65 50 74 72 29 3b 0a 20 09 09 09 61  valuePtr);. ...a
0eb0: 72 67 2b 2b 3b 0a 20 09 09 09 69 66 20 28 72 65  rg++;. ...if (re
0ec0: 73 75 6c 74 50 74 72 20 3d 3d 20 4e 55 4c 4c 29  sultPtr == NULL)
0ed0: 20 7b 0a 20 09 09 09 20 20 20 20 44 65 6c 65 74   {. ...    Delet
0ee0: 65 53 63 61 6e 4e 75 6d 62 65 72 43 61 63 68 65  eScanNumberCache
0ef0: 28 6e 75 6d 62 65 72 43 61 63 68 65 50 74 72 29  (numberCachePtr)
0f00: 3b 0a 2d 09 09 09 20 20 20 20 54 63 6c 5f 44 65  ;.-...    Tcl_De
0f10: 63 72 52 65 66 43 6f 75 6e 74 28 76 61 6c 75 65  crRefCount(value
0f20: 50 74 72 29 3b 09 2f 2a 20 75 6e 6e 65 65 64 65  Ptr);./* unneede
0f30: 64 20 2a 2f 0a 20 09 09 09 20 20 20 20 72 65 74  d */. ...    ret
0f40: 75 72 6e 20 54 43 4c 5f 45 52 52 4f 52 3b 0a 20  urn TCL_ERROR;. 
0f50: 09 09 09 7d 0a 20 09 09 09 62 72 65 61 6b 3b 0a  ...}. ...break;.
0f60: 49 6e 64 65 78 3a 20 67 65 6e 65 72 69 63 2f 74  Index: generic/t
0f70: 63 6c 43 6d 64 41 48 2e 63 0a 3d 3d 3d 3d 3d 3d  clCmdAH.c.======
0f80: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
0f90: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
0fa0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
0fb0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 52 43  =============.RC
0fc0: 53 20 66 69 6c 65 3a 20 2f 63 76 73 72 6f 6f 74  S file: /cvsroot
0fd0: 2f 74 63 6c 2f 74 63 6c 2f 67 65 6e 65 72 69 63  /tcl/tcl/generic
0fe0: 2f 74 63 6c 43 6d 64 41 48 2e 63 2c 76 0a 72 65  /tclCmdAH.c,v.re
0ff0: 74 72 69 65 76 69 6e 67 20 72 65 76 69 73 69 6f  trieving revisio
1000: 6e 20 31 2e 32 37 2e 32 2e 31 34 0a 64 69 66 66  n 1.27.2.14.diff
1010: 20 2d 75 20 2d 72 31 2e 32 37 2e 32 2e 31 34 20   -u -r1.27.2.14 
1020: 74 63 6c 43 6d 64 41 48 2e 63 0a 2d 2d 2d 20 67  tclCmdAH.c.--- g
1030: 65 6e 65 72 69 63 2f 74 63 6c 43 6d 64 41 48 2e  eneric/tclCmdAH.
1040: 63 09 31 33 20 4f 63 74 20 32 30 30 35 20 32 31  c.13 Oct 2005 21
1050: 3a 34 35 3a 33 32 20 2d 30 30 30 30 09 31 2e 32  :45:32 -0000.1.2
1060: 37 2e 32 2e 31 34 0a 2b 2b 2b 20 67 65 6e 65 72  7.2.14.+++ gener
1070: 69 63 2f 74 63 6c 43 6d 64 41 48 2e 63 09 32 33  ic/tclCmdAH.c.23
1080: 20 4f 63 74 20 32 30 30 35 20 32 31 3a 34 37 3a   Oct 2005 21:47:
1090: 34 38 20 2d 30 30 30 30 0a 40 40 20 2d 31 38 32  48 -0000.@@ -182
10a0: 36 2c 32 30 20 2b 31 38 32 36 2c 31 37 20 40 40  6,20 +1826,17 @@
10b0: 0a 20 09 20 20 20 20 66 6f 72 20 28 76 20 3d 20  . .    for (v = 
10c0: 30 3b 20 20 76 20 3c 20 76 61 72 63 4c 69 73 74  0;  v < varcList
10d0: 5b 69 5d 3b 20 20 76 2b 2b 29 20 7b 0a 20 09 09  [i];  v++) {. ..
10e0: 69 6e 74 20 6b 20 3d 20 69 6e 64 65 78 5b 69 5d  int k = index[i]
10f0: 2b 2b 3b 0a 20 09 09 54 63 6c 5f 4f 62 6a 20 2a  ++;. ..Tcl_Obj *
1100: 76 61 6c 75 65 50 74 72 2c 20 2a 76 61 72 56 61  valuePtr, *varVa
1110: 6c 75 65 50 74 72 3b 0a 2d 09 09 69 6e 74 20 69  luePtr;.-..int i
1120: 73 45 6d 70 74 79 4f 62 6a 20 3d 20 30 3b 0a 20  sEmptyObj = 0;. 
1130: 09 09 0a 20 09 09 69 66 20 28 6b 20 3c 20 61 72  ... ..if (k < ar
1140: 67 63 4c 69 73 74 5b 69 5d 29 20 7b 0a 20 09 09  gcList[i]) {. ..
1150: 20 20 20 20 76 61 6c 75 65 50 74 72 20 3d 20 61      valuePtr = a
1160: 72 67 76 4c 69 73 74 5b 69 5d 5b 6b 5d 3b 0a 20  rgvList[i][k];. 
1170: 09 09 7d 20 65 6c 73 65 20 7b 0a 20 09 09 20 20  ..} else {. ..  
1180: 20 20 76 61 6c 75 65 50 74 72 20 3d 20 54 63 6c    valuePtr = Tcl
1190: 5f 4e 65 77 4f 62 6a 28 29 3b 20 2f 2a 20 65 6d  _NewObj(); /* em
11a0: 70 74 79 20 73 74 72 69 6e 67 20 2a 2f 0a 2d 09  pty string */.-.
11b0: 09 20 20 20 20 69 73 45 6d 70 74 79 4f 62 6a 20  .    isEmptyObj 
11c0: 3d 20 31 3b 0a 20 09 09 7d 0a 2b 09 09 54 63 6c  = 1;. ..}.+..Tcl
11d0: 5f 49 6e 63 72 52 65 66 43 6f 75 6e 74 28 76 61  _IncrRefCount(va
11e0: 6c 75 65 50 74 72 29 3b 0a 20 09 09 76 61 72 56  luePtr);. ..varV
11f0: 61 6c 75 65 50 74 72 20 3d 20 54 63 6c 5f 4f 62  aluePtr = Tcl_Ob
1200: 6a 53 65 74 56 61 72 32 28 69 6e 74 65 72 70 2c  jSetVar2(interp,
1210: 20 76 61 72 76 4c 69 73 74 5b 69 5d 5b 76 5d 2c   varvList[i][v],
1220: 0a 20 09 09 09 4e 55 4c 4c 2c 20 76 61 6c 75 65  . ...NULL, value
1230: 50 74 72 2c 20 30 29 3b 0a 2b 09 09 54 63 6c 5f  Ptr, 0);.+..Tcl_
1240: 44 65 63 72 52 65 66 43 6f 75 6e 74 28 76 61 6c  DecrRefCount(val
1250: 75 65 50 74 72 29 3b 0a 20 09 09 69 66 20 28 76  uePtr);. ..if (v
1260: 61 72 56 61 6c 75 65 50 74 72 20 3d 3d 20 4e 55  arValuePtr == NU
1270: 4c 4c 29 20 7b 0a 2d 09 09 20 20 20 20 69 66 20  LL) {.-..    if 
1280: 28 69 73 45 6d 70 74 79 4f 62 6a 29 20 7b 0a 2d  (isEmptyObj) {.-
1290: 09 09 09 54 63 6c 5f 44 65 63 72 52 65 66 43 6f  ...Tcl_DecrRefCo
12a0: 75 6e 74 28 76 61 6c 75 65 50 74 72 29 3b 0a 2d  unt(valuePtr);.-
12b0: 09 09 20 20 20 20 7d 0a 20 09 09 20 20 20 20 54  ..    }. ..    T
12c0: 63 6c 5f 52 65 73 65 74 52 65 73 75 6c 74 28 69  cl_ResetResult(i
12d0: 6e 74 65 72 70 29 3b 0a 20 09 09 20 20 20 20 54  nterp);. ..    T
12e0: 63 6c 5f 41 70 70 65 6e 64 53 74 72 69 6e 67 73  cl_AppendStrings
12f0: 54 6f 4f 62 6a 28 54 63 6c 5f 47 65 74 4f 62 6a  ToObj(Tcl_GetObj
1300: 52 65 73 75 6c 74 28 69 6e 74 65 72 70 29 2c 0a  Result(interp),.
1310: 20 09 09 09 22 63 6f 75 6c 64 6e 27 74 20 73 65   ..."couldn't se
1320: 74 20 6c 6f 6f 70 20 76 61 72 69 61 62 6c 65 3a  t loop variable:
1330: 20 5c 22 22 2c 0a 49 6e 64 65 78 3a 20 67 65 6e   \"",.Index: gen
1340: 65 72 69 63 2f 74 63 6c 43 6d 64 49 4c 2e 63 0a  eric/tclCmdIL.c.
1350: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
1360: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
1370: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
1380: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
1390: 3d 3d 3d 0a 52 43 53 20 66 69 6c 65 3a 20 2f 63  ===.RCS file: /c
13a0: 76 73 72 6f 6f 74 2f 74 63 6c 2f 74 63 6c 2f 67  vsroot/tcl/tcl/g
13b0: 65 6e 65 72 69 63 2f 74 63 6c 43 6d 64 49 4c 2e  eneric/tclCmdIL.
13c0: 63 2c 76 0a 72 65 74 72 69 65 76 69 6e 67 20 72  c,v.retrieving r
13d0: 65 76 69 73 69 6f 6e 20 31 2e 34 37 2e 32 2e 36  evision 1.47.2.6
13e0: 0a 64 69 66 66 20 2d 75 20 2d 72 31 2e 34 37 2e  .diff -u -r1.47.
13f0: 32 2e 36 20 74 63 6c 43 6d 64 49 4c 2e 63 0a 2d  2.6 tclCmdIL.c.-
1400: 2d 2d 20 67 65 6e 65 72 69 63 2f 74 63 6c 43 6d  -- generic/tclCm
1410: 64 49 4c 2e 63 09 32 39 20 4a 75 6c 20 32 30 30  dIL.c.29 Jul 200
1420: 35 20 31 34 3a 35 37 3a 32 36 20 2d 30 30 30 30  5 14:57:26 -0000
1430: 09 31 2e 34 37 2e 32 2e 36 0a 2b 2b 2b 20 67 65  .1.47.2.6.+++ ge
1440: 6e 65 72 69 63 2f 74 63 6c 43 6d 64 49 4c 2e 63  neric/tclCmdIL.c
1450: 09 32 33 20 4f 63 74 20 32 30 30 35 20 32 31 3a  .23 Oct 2005 21:
1460: 34 37 3a 34 39 20 2d 30 30 30 30 0a 40 40 20 2d  47:49 -0000.@@ -
1470: 39 33 33 2c 31 30 20 2b 39 33 33 2c 31 31 20 40  933,10 +933,11 @
1480: 40 0a 20 09 09 54 63 6c 5f 53 65 74 49 6e 74 4f  @. ..Tcl_SetIntO
1490: 62 6a 28 54 63 6c 5f 47 65 74 4f 62 6a 52 65 73  bj(Tcl_GetObjRes
14a0: 75 6c 74 28 69 6e 74 65 72 70 29 2c 20 31 29 3b  ult(interp), 1);
14b0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 20  .             } 
14c0: 65 6c 73 65 20 7b 0a 20 20 20 20 20 20 20 20 20  else {.         
14d0: 20 20 20 20 20 20 20 20 54 63 6c 5f 4f 62 6a 20          Tcl_Obj 
14e0: 2a 6e 75 6c 6c 4f 62 6a 50 74 72 20 3d 20 54 63  *nullObjPtr = Tc
14f0: 6c 5f 4e 65 77 4f 62 6a 28 29 3b 0a 2b 09 09 54  l_NewObj();.+..T
1500: 63 6c 5f 49 6e 63 72 52 65 66 43 6f 75 6e 74 28  cl_IncrRefCount(
1510: 6e 75 6c 6c 4f 62 6a 50 74 72 29 3b 0a 20 20 20  nullObjPtr);.   
1520: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76 61                va
1530: 6c 75 65 4f 62 6a 50 74 72 20 3d 20 54 63 6c 5f  lueObjPtr = Tcl_
1540: 4f 62 6a 53 65 74 56 61 72 32 28 69 6e 74 65 72  ObjSetVar2(inter
1550: 70 2c 20 6f 62 6a 76 5b 34 5d 2c 20 4e 55 4c 4c  p, objv[4], NULL
1560: 2c 0a 20 09 09 09 6e 75 6c 6c 4f 62 6a 50 74 72  ,. ...nullObjPtr
1570: 2c 20 30 29 3b 0a 2b 09 09 54 63 6c 5f 44 65 63  , 0);.+..Tcl_Dec
1580: 72 52 65 66 43 6f 75 6e 74 28 6e 75 6c 6c 4f 62  rRefCount(nullOb
1590: 6a 50 74 72 29 3b 20 2f 2a 20 66 72 65 65 20 75  jPtr); /* free u
15a0: 6e 6e 65 65 64 65 64 20 6f 62 6a 20 2a 2f 0a 20  nneeded obj */. 
15b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15c0: 69 66 20 28 76 61 6c 75 65 4f 62 6a 50 74 72 20  if (valueObjPtr 
15d0: 3d 3d 20 4e 55 4c 4c 29 20 7b 0a 2d 20 20 20 20  == NULL) {.-    
15e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15f0: 54 63 6c 5f 44 65 63 72 52 65 66 43 6f 75 6e 74  Tcl_DecrRefCount
1600: 28 6e 75 6c 6c 4f 62 6a 50 74 72 29 3b 20 2f 2a  (nullObjPtr); /*
1610: 20 66 72 65 65 20 75 6e 6e 65 65 64 65 64 20 6f   free unneeded o
1620: 62 6a 20 2a 2f 0a 20 20 20 20 20 20 20 20 20 20  bj */.          
1630: 20 20 20 20 20 20 20 20 20 20 20 67 6f 74 6f 20             goto 
1640: 64 65 66 53 74 6f 72 65 45 72 72 6f 72 3b 0a 20  defStoreError;. 
1650: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1660: 7d 0a 20 09 09 54 63 6c 5f 53 65 74 49 6e 74 4f  }. ..Tcl_SetIntO
1670: 62 6a 28 54 63 6c 5f 47 65 74 4f 62 6a 52 65 73  bj(Tcl_GetObjRes
1680: 75 6c 74 28 69 6e 74 65 72 70 29 2c 20 30 29 3b  ult(interp), 0);
1690: 0a 49 6e 64 65 78 3a 20 67 65 6e 65 72 69 63 2f  .Index: generic/
16a0: 74 63 6c 43 6d 64 4d 5a 2e 63 0a 3d 3d 3d 3d 3d  tclCmdMZ.c.=====
16b0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
16c0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
16d0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
16e0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 52  ==============.R
16f0: 43 53 20 66 69 6c 65 3a 20 2f 63 76 73 72 6f 6f  CS file: /cvsroo
1700: 74 2f 74 63 6c 2f 74 63 6c 2f 67 65 6e 65 72 69  t/tcl/tcl/generi
1710: 63 2f 74 63 6c 43 6d 64 4d 5a 2e 63 2c 76 0a 72  c/tclCmdMZ.c,v.r
1720: 65 74 72 69 65 76 69 6e 67 20 72 65 76 69 73 69  etrieving revisi
1730: 6f 6e 20 31 2e 38 32 2e 32 2e 32 30 0a 64 69 66  on 1.82.2.20.dif
1740: 66 20 2d 75 20 2d 72 31 2e 38 32 2e 32 2e 32 30  f -u -r1.82.2.20
1750: 20 74 63 6c 43 6d 64 4d 5a 2e 63 0a 2d 2d 2d 20   tclCmdMZ.c.--- 
1760: 67 65 6e 65 72 69 63 2f 74 63 6c 43 6d 64 4d 5a  generic/tclCmdMZ
1770: 2e 63 09 32 31 20 4a 75 6e 20 32 30 30 35 20 31  .c.21 Jun 2005 1
1780: 37 3a 31 39 3a 34 32 20 2d 30 30 30 30 09 31 2e  7:19:42 -0000.1.
1790: 38 32 2e 32 2e 32 30 0a 2b 2b 2b 20 67 65 6e 65  82.2.20.+++ gene
17a0: 72 69 63 2f 74 63 6c 43 6d 64 4d 5a 2e 63 09 32  ric/tclCmdMZ.c.2
17b0: 33 20 4f 63 74 20 32 30 30 35 20 32 31 3a 34 37  3 Oct 2005 21:47
17c0: 3a 35 33 20 2d 30 30 30 30 0a 40 40 20 2d 34 36  :53 -0000.@@ -46
17d0: 31 2c 39 20 2b 34 36 31 2c 31 30 20 40 40 0a 20  1,9 +461,10 @@. 
17e0: 09 09 7d 0a 20 09 20 20 20 20 7d 20 65 6c 73 65  ..}. .    } else
17f0: 20 7b 0a 20 09 09 54 63 6c 5f 4f 62 6a 20 2a 76   {. ..Tcl_Obj *v
1800: 61 6c 75 65 50 74 72 3b 0a 2b 09 09 54 63 6c 5f  aluePtr;.+..Tcl_
1810: 49 6e 63 72 52 65 66 43 6f 75 6e 74 28 6e 65 77  IncrRefCount(new
1820: 50 74 72 29 3b 0a 20 09 09 76 61 6c 75 65 50 74  Ptr);. ..valuePt
1830: 72 20 3d 20 54 63 6c 5f 4f 62 6a 53 65 74 56 61  r = Tcl_ObjSetVa
1840: 72 32 28 69 6e 74 65 72 70 2c 20 6f 62 6a 76 5b  r2(interp, objv[
1850: 69 5d 2c 20 4e 55 4c 4c 2c 20 6e 65 77 50 74 72  i], NULL, newPtr
1860: 2c 20 30 29 3b 0a 2b 09 09 54 63 6c 5f 44 65 63  , 0);.+..Tcl_Dec
1870: 72 52 65 66 43 6f 75 6e 74 28 6e 65 77 50 74 72  rRefCount(newPtr
1880: 29 3b 0a 20 09 09 69 66 20 28 76 61 6c 75 65 50  );. ..if (valueP
1890: 74 72 20 3d 3d 20 4e 55 4c 4c 29 20 7b 0a 2d 09  tr == NULL) {.-.
18a0: 09 20 20 20 20 54 63 6c 5f 44 65 63 72 52 65 66  .    Tcl_DecrRef
18b0: 43 6f 75 6e 74 28 6e 65 77 50 74 72 29 3b 0a 20  Count(newPtr);. 
18c0: 09 09 20 20 20 20 54 63 6c 5f 41 70 70 65 6e 64  ..    Tcl_Append
18d0: 52 65 73 75 6c 74 28 69 6e 74 65 72 70 2c 20 22  Result(interp, "
18e0: 63 6f 75 6c 64 6e 27 74 20 73 65 74 20 76 61 72  couldn't set var
18f0: 69 61 62 6c 65 20 5c 22 22 2c 0a 20 09 09 09 20  iable \"",. ... 
1900: 20 20 20 54 63 6c 5f 47 65 74 53 74 72 69 6e 67     Tcl_GetString
1910: 28 6f 62 6a 76 5b 69 5d 29 2c 20 22 5c 22 22 2c  (objv[i]), "\"",
1920: 20 28 63 68 61 72 20 2a 29 20 4e 55 4c 4c 29 3b   (char *) NULL);
1930: 0a 20 09 09 20 20 20 20 72 65 74 75 72 6e 20 54  . ..    return T
1940: 43 4c 5f 45 52 52 4f 52 3b 0a 40 40 20 2d 31 37  CL_ERROR;.@@ -17
1950: 35 38 2c 31 30 20 2b 31 37 35 39 2c 31 36 20 40  58,10 +1759,16 @
1960: 40 0a 20 09 20 20 20 20 20 2a 20 4f 6e 6c 79 20  @. .     * Only 
1970: 73 65 74 20 74 68 65 20 66 61 69 6c 56 61 72 4f  set the failVarO
1980: 62 6a 20 77 68 65 6e 20 77 65 20 77 69 6c 6c 20  bj when we will 
1990: 72 65 74 75 72 6e 20 30 0a 20 09 20 20 20 20 20  return 0. .     
19a0: 2a 20 61 6e 64 20 77 65 20 68 61 76 65 20 69 6e  * and we have in
19b0: 64 69 63 61 74 65 64 20 61 20 76 61 6c 69 64 20  dicated a valid 
19c0: 66 61 69 6c 20 69 6e 64 65 78 20 28 3e 3d 20 30  fail index (>= 0
19d0: 29 0a 20 09 20 20 20 20 20 2a 2f 0a 2d 09 20 20  ). .     */.-.  
19e0: 20 20 69 66 20 28 28 72 65 73 75 6c 74 20 3d 3d    if ((result ==
19f0: 20 30 29 20 26 26 20 28 66 61 69 6c 56 61 72 4f   0) && (failVarO
1a00: 62 6a 20 21 3d 20 4e 55 4c 4c 29 20 26 26 0a 2d  bj != NULL) &&.-
1a10: 09 09 54 63 6c 5f 4f 62 6a 53 65 74 56 61 72 32  ..Tcl_ObjSetVar2
1a20: 28 69 6e 74 65 72 70 2c 20 66 61 69 6c 56 61 72  (interp, failVar
1a30: 4f 62 6a 2c 20 4e 55 4c 4c 2c 20 54 63 6c 5f 4e  Obj, NULL, Tcl_N
1a40: 65 77 49 6e 74 4f 62 6a 28 66 61 69 6c 61 74 29  ewIntObj(failat)
1a50: 2c 0a 2d 09 09 09 20 20 20 20 20 20 20 54 43 4c  ,.-...       TCL
1a60: 5f 4c 45 41 56 45 5f 45 52 52 5f 4d 53 47 29 20  _LEAVE_ERR_MSG) 
1a70: 3d 3d 20 4e 55 4c 4c 29 20 7b 0a 2d 09 09 72 65  == NULL) {.-..re
1a80: 74 75 72 6e 20 54 43 4c 5f 45 52 52 4f 52 3b 0a  turn TCL_ERROR;.
1a90: 2b 09 20 20 20 20 69 66 20 28 28 72 65 73 75 6c  +.    if ((resul
1aa0: 74 20 3d 3d 20 30 29 20 26 26 20 28 66 61 69 6c  t == 0) && (fail
1ab0: 56 61 72 4f 62 6a 20 21 3d 20 4e 55 4c 4c 29 29  VarObj != NULL))
1ac0: 20 7b 0a 2b 09 09 54 63 6c 5f 4f 62 6a 20 2a 72   {.+..Tcl_Obj *r
1ad0: 65 73 50 74 72 2c 20 2a 74 6d 70 50 74 72 20 3d  esPtr, *tmpPtr =
1ae0: 20 54 63 6c 5f 4e 65 77 49 6e 74 4f 62 6a 28 66   Tcl_NewIntObj(f
1af0: 61 69 6c 61 74 29 3b 0a 2b 0a 2b 09 09 54 63 6c  ailat);.+.+..Tcl
1b00: 5f 49 6e 63 72 52 65 66 43 6f 75 6e 74 28 74 6d  _IncrRefCount(tm
1b10: 70 50 74 72 29 3b 0a 2b 09 09 72 65 73 50 74 72  pPtr);.+..resPtr
1b20: 20 3d 20 54 63 6c 5f 4f 62 6a 53 65 74 56 61 72   = Tcl_ObjSetVar
1b30: 32 28 69 6e 74 65 72 70 2c 20 66 61 69 6c 56 61  2(interp, failVa
1b40: 72 4f 62 6a 2c 20 4e 55 4c 4c 2c 20 74 6d 70 50  rObj, NULL, tmpP
1b50: 74 72 2c 0a 2b 09 09 09 54 43 4c 5f 4c 45 41 56  tr,.+...TCL_LEAV
1b60: 45 5f 45 52 52 5f 4d 53 47 29 3b 0a 2b 09 09 54  E_ERR_MSG);.+..T
1b70: 63 6c 5f 44 65 63 72 52 65 66 43 6f 75 6e 74 28  cl_DecrRefCount(
1b80: 74 6d 70 50 74 72 29 3b 0a 2b 09 09 69 66 20 28  tmpPtr);.+..if (
1b90: 72 65 73 50 74 72 20 3d 3d 20 4e 55 4c 4c 29 20  resPtr == NULL) 
1ba0: 7b 0a 2b 09 09 20 20 20 20 72 65 74 75 72 6e 20  {.+..    return 
1bb0: 54 43 4c 5f 45 52 52 4f 52 3b 0a 2b 09 09 7d 0a  TCL_ERROR;.+..}.
1bc0: 20 09 20 20 20 20 7d 0a 20 09 20 20 20 20 54 63   .    }. .    Tc
1bd0: 6c 5f 53 65 74 42 6f 6f 6c 65 61 6e 4f 62 6a 28  l_SetBooleanObj(
1be0: 72 65 73 75 6c 74 50 74 72 2c 20 72 65 73 75 6c  resultPtr, resul
1bf0: 74 29 3b 0a 20 09 20 20 20 20 62 72 65 61 6b 3b  t);. .    break;
1c00: 0a 49 6e 64 65 78 3a 20 67 65 6e 65 72 69 63 2f  .Index: generic/
1c10: 74 63 6c 45 78 65 63 75 74 65 2e 63 0a 3d 3d 3d  tclExecute.c.===
1c20: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
1c30: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
1c40: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
1c50: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
1c60: 0a 52 43 53 20 66 69 6c 65 3a 20 2f 63 76 73 72  .RCS file: /cvsr
1c70: 6f 6f 74 2f 74 63 6c 2f 74 63 6c 2f 67 65 6e 65  oot/tcl/tcl/gene
1c80: 72 69 63 2f 74 63 6c 45 78 65 63 75 74 65 2e 63  ric/tclExecute.c
1c90: 2c 76 0a 72 65 74 72 69 65 76 69 6e 67 20 72 65  ,v.retrieving re
1ca0: 76 69 73 69 6f 6e 20 31 2e 39 34 2e 32 2e 31 35  vision 1.94.2.15
1cb0: 0a 64 69 66 66 20 2d 75 20 2d 72 31 2e 39 34 2e  .diff -u -r1.94.
1cc0: 32 2e 31 35 20 74 63 6c 45 78 65 63 75 74 65 2e  2.15 tclExecute.
1cd0: 63 0a 2d 2d 2d 20 67 65 6e 65 72 69 63 2f 74 63  c.--- generic/tc
1ce0: 6c 45 78 65 63 75 74 65 2e 63 09 32 32 20 4f 63  lExecute.c.22 Oc
1cf0: 74 20 32 30 30 35 20 30 33 3a 30 37 3a 34 35 20  t 2005 03:07:45 
1d00: 2d 30 30 30 30 09 31 2e 39 34 2e 32 2e 31 35 0a  -0000.1.94.2.15.
1d10: 2b 2b 2b 20 67 65 6e 65 72 69 63 2f 74 63 6c 45  +++ generic/tclE
1d20: 78 65 63 75 74 65 2e 63 09 32 33 20 4f 63 74 20  xecute.c.23 Oct 
1d30: 32 30 30 35 20 32 31 3a 34 37 3a 35 36 20 2d 30  2005 21:47:56 -0
1d40: 30 30 30 0a 40 40 20 2d 34 30 33 38 2c 39 20 2b  000.@@ -4038,9 +
1d50: 34 30 33 38 2c 37 20 40 40 0a 20 09 09 09 0a 20  4038,7 @@. .... 
1d60: 09 09 20 20 20 20 76 61 6c 49 6e 64 65 78 20 3d  ..    valIndex =
1d70: 20 28 69 74 65 72 4e 75 6d 20 2a 20 6e 75 6d 56   (iterNum * numV
1d80: 61 72 73 29 3b 0a 20 09 09 20 20 20 20 66 6f 72  ars);. ..    for
1d90: 20 28 6a 20 3d 20 30 3b 20 20 6a 20 3c 20 6e 75   (j = 0;  j < nu
1da0: 6d 56 61 72 73 3b 20 20 6a 2b 2b 29 20 7b 0a 2d  mVars;  j++) {.-
1db0: 09 09 09 69 6e 74 20 73 65 74 45 6d 70 74 79 53  ...int setEmptyS
1dc0: 74 72 20 3d 20 30 3b 0a 20 09 09 09 69 66 20 28  tr = 0;. ...if (
1dd0: 76 61 6c 49 6e 64 65 78 20 3e 3d 20 6c 69 73 74  valIndex >= list
1de0: 4c 65 6e 29 20 7b 0a 2d 09 09 09 20 20 20 20 73  Len) {.-...    s
1df0: 65 74 45 6d 70 74 79 53 74 72 20 3d 20 31 3b 0a  etEmptyStr = 1;.
1e00: 20 09 09 09 20 20 20 20 54 63 6c 4e 65 77 4f 62   ...    TclNewOb
1e10: 6a 28 76 61 6c 75 65 50 74 72 29 3b 0a 20 09 09  j(valuePtr);. ..
1e20: 09 7d 20 65 6c 73 65 20 7b 0a 20 09 09 09 20 20  .} else {. ...  
1e30: 20 20 76 61 6c 75 65 50 74 72 20 3d 20 6c 69 73    valuePtr = lis
1e40: 74 52 65 70 50 74 72 2d 3e 65 6c 65 6d 65 6e 74  tRepPtr->element
1e50: 73 5b 76 61 6c 49 6e 64 65 78 5d 3b 0a 40 40 20  s[valIndex];.@@ 
1e60: 2d 34 30 36 38 2c 31 36 20 2b 34 30 36 36 2c 31  -4068,16 +4066,1
1e70: 35 20 40 40 0a 20 09 09 09 20 20 20 20 7d 0a 20  5 @@. ...    }. 
1e80: 09 09 09 7d 20 65 6c 73 65 20 7b 0a 20 09 09 09  ...} else {. ...
1e90: 20 20 20 20 44 45 43 41 43 48 45 5f 53 54 41 43      DECACHE_STAC
1ea0: 4b 5f 49 4e 46 4f 28 29 3b 0a 2b 09 09 09 20 20  K_INFO();.+...  
1eb0: 20 20 54 63 6c 5f 49 6e 63 72 52 65 66 43 6f 75    Tcl_IncrRefCou
1ec0: 6e 74 28 76 61 6c 75 65 50 74 72 29 3b 0a 20 09  nt(valuePtr);. .
1ed0: 09 09 20 20 20 20 76 61 6c 75 65 32 50 74 72 20  ..    value2Ptr 
1ee0: 3d 20 54 63 6c 50 74 72 53 65 74 56 61 72 28 69  = TclPtrSetVar(i
1ef0: 6e 74 65 72 70 2c 20 76 61 72 50 74 72 2c 20 4e  nterp, varPtr, N
1f00: 55 4c 4c 2c 20 70 61 72 74 31 2c 20 0a 20 09 09  ULL, part1, . ..
1f10: 09 09 09 09 20 20 20 20 20 4e 55 4c 4c 2c 20 76  ....     NULL, v
1f20: 61 6c 75 65 50 74 72 2c 20 54 43 4c 5f 4c 45 41  aluePtr, TCL_LEA
1f30: 56 45 5f 45 52 52 5f 4d 53 47 29 3b 0a 2b 09 09  VE_ERR_MSG);.+..
1f40: 09 20 20 20 20 54 63 6c 44 65 63 72 52 65 66 43  .    TclDecrRefC
1f50: 6f 75 6e 74 28 76 61 6c 75 65 50 74 72 29 3b 0a  ount(valuePtr);.
1f60: 20 09 09 09 20 20 20 20 43 41 43 48 45 5f 53 54   ...    CACHE_ST
1f70: 41 43 4b 5f 49 4e 46 4f 28 29 3b 0a 20 09 09 09  ACK_INFO();. ...
1f80: 20 20 20 20 69 66 20 28 76 61 6c 75 65 32 50 74      if (value2Pt
1f90: 72 20 3d 3d 20 4e 55 4c 4c 29 20 7b 0a 20 09 09  r == NULL) {. ..
1fa0: 09 09 54 52 41 43 45 5f 57 49 54 48 5f 4f 42 4a  ..TRACE_WITH_OBJ
1fb0: 28 28 22 25 75 20 3d 3e 20 45 52 52 4f 52 20 69  (("%u => ERROR i
1fc0: 6e 69 74 2e 20 69 6e 64 65 78 20 74 65 6d 70 20  nit. index temp 
1fd0: 25 64 3a 20 22 2c 0a 20 09 09 09 09 09 09 6f 70  %d: ",. ......op
1fe0: 6e 64 2c 20 76 61 72 49 6e 64 65 78 29 2c 0a 20  nd, varIndex),. 
1ff0: 09 09 09 09 09 20 20 20 20 20 20 20 54 63 6c 5f  .....       Tcl_
2000: 47 65 74 4f 62 6a 52 65 73 75 6c 74 28 69 6e 74  GetObjResult(int
2010: 65 72 70 29 29 3b 0a 2d 09 09 09 09 69 66 20 28  erp));.-....if (
2020: 73 65 74 45 6d 70 74 79 53 74 72 29 20 7b 0a 2d  setEmptyStr) {.-
2030: 09 09 09 09 20 20 20 20 54 63 6c 44 65 63 72 52  ....    TclDecrR
2040: 65 66 43 6f 75 6e 74 28 76 61 6c 75 65 50 74 72  efCount(valuePtr
2050: 29 3b 0a 2d 09 09 09 09 7d 0a 20 09 09 09 09 72  );.-....}. ....r
2060: 65 73 75 6c 74 20 3d 20 54 43 4c 5f 45 52 52 4f  esult = TCL_ERRO
2070: 52 3b 0a 20 09 09 09 09 67 6f 74 6f 20 63 68 65  R;. ....goto che
2080: 63 6b 46 6f 72 43 61 74 63 68 3b 0a 20 09 09 09  ckForCatch;. ...
2090: 20 20 20 20 7d 0a 49 6e 64 65 78 3a 20 67 65 6e      }.Index: gen
20a0: 65 72 69 63 2f 74 63 6c 4c 69 6e 6b 2e 63 0a 3d  eric/tclLink.c.=
20b0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
20c0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
20d0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
20e0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
20f0: 3d 3d 0a 52 43 53 20 66 69 6c 65 3a 20 2f 63 76  ==.RCS file: /cv
2100: 73 72 6f 6f 74 2f 74 63 6c 2f 74 63 6c 2f 67 65  sroot/tcl/tcl/ge
2110: 6e 65 72 69 63 2f 74 63 6c 4c 69 6e 6b 2e 63 2c  neric/tclLink.c,
2120: 76 0a 72 65 74 72 69 65 76 69 6e 67 20 72 65 76  v.retrieving rev
2130: 69 73 69 6f 6e 20 31 2e 38 0a 64 69 66 66 20 2d  ision 1.8.diff -
2140: 75 20 2d 72 31 2e 38 20 74 63 6c 4c 69 6e 6b 2e  u -r1.8 tclLink.
2150: 63 0a 2d 2d 2d 20 67 65 6e 65 72 69 63 2f 74 63  c.--- generic/tc
2160: 6c 4c 69 6e 6b 2e 63 09 35 20 41 75 67 20 32 30  lLink.c.5 Aug 20
2170: 30 32 20 30 33 3a 32 34 3a 34 31 20 2d 30 30 30  02 03:24:41 -000
2180: 30 09 31 2e 38 0a 2b 2b 2b 20 67 65 6e 65 72 69  0.1.8.+++ generi
2190: 63 2f 74 63 6c 4c 69 6e 6b 2e 63 09 32 33 20 4f  c/tclLink.c.23 O
21a0: 63 74 20 32 30 30 35 20 32 31 3a 34 37 3a 35 36  ct 2005 21:47:56
21b0: 20 2d 30 30 30 30 0a 40 40 20 2d 39 35 2c 37 20   -0000.@@ -95,7 
21c0: 2b 39 35 2c 37 20 40 40 0a 20 09 09 09 09 20 2a  +95,7 @@. .... *
21d0: 20 41 6c 73 6f 20 6d 61 79 20 68 61 76 65 20 54   Also may have T
21e0: 43 4c 5f 4c 49 4e 4b 5f 52 45 41 44 5f 4f 4e 4c  CL_LINK_READ_ONL
21f0: 59 0a 20 09 09 09 09 20 2a 20 4f 52 27 65 64 20  Y. .... * OR'ed 
2200: 69 6e 2e 20 2a 2f 0a 20 7b 0a 2d 20 20 20 20 54  in. */. {.-    T
2210: 63 6c 5f 4f 62 6a 20 2a 6f 62 6a 50 74 72 3b 0a  cl_Obj *objPtr;.
2220: 2b 20 20 20 20 54 63 6c 5f 4f 62 6a 20 2a 6f 62  +    Tcl_Obj *ob
2230: 6a 50 74 72 2c 20 2a 72 65 73 50 74 72 3b 0a 20  jPtr, *resPtr;. 
2240: 20 20 20 20 4c 69 6e 6b 20 2a 6c 69 6e 6b 50 74      Link *linkPt
2250: 72 3b 0a 20 20 20 20 20 69 6e 74 20 63 6f 64 65  r;.     int code
2260: 3b 0a 20 0a 40 40 20 2d 31 31 31 2c 31 30 20 2b  ;. .@@ -111,10 +
2270: 31 31 31 2c 31 32 20 40 40 0a 20 09 6c 69 6e 6b  111,12 @@. .link
2280: 50 74 72 2d 3e 66 6c 61 67 73 20 3d 20 30 3b 0a  Ptr->flags = 0;.
2290: 20 20 20 20 20 7d 0a 20 20 20 20 20 6f 62 6a 50       }.     objP
22a0: 74 72 20 3d 20 4f 62 6a 56 61 6c 75 65 28 6c 69  tr = ObjValue(li
22b0: 6e 6b 50 74 72 29 3b 0a 2d 20 20 20 20 69 66 20  nkPtr);.-    if 
22c0: 28 54 63 6c 5f 4f 62 6a 53 65 74 56 61 72 32 28  (Tcl_ObjSetVar2(
22d0: 69 6e 74 65 72 70 2c 20 6c 69 6e 6b 50 74 72 2d  interp, linkPtr-
22e0: 3e 76 61 72 4e 61 6d 65 2c 20 4e 55 4c 4c 2c 20  >varName, NULL, 
22f0: 6f 62 6a 50 74 72 2c 0a 2d 09 20 20 20 20 54 43  objPtr,.-.    TC
2300: 4c 5f 47 4c 4f 42 41 4c 5f 4f 4e 4c 59 7c 54 43  L_GLOBAL_ONLY|TC
2310: 4c 5f 4c 45 41 56 45 5f 45 52 52 5f 4d 53 47 29  L_LEAVE_ERR_MSG)
2320: 20 3d 3d 20 4e 55 4c 4c 29 20 7b 0a 2b 20 20 20   == NULL) {.+   
2330: 20 54 63 6c 5f 49 6e 63 72 52 65 66 43 6f 75 6e   Tcl_IncrRefCoun
2340: 74 28 6f 62 6a 50 74 72 29 3b 0a 2b 20 20 20 20  t(objPtr);.+    
2350: 72 65 73 50 74 72 20 3d 20 54 63 6c 5f 4f 62 6a  resPtr = Tcl_Obj
2360: 53 65 74 56 61 72 32 28 69 6e 74 65 72 70 2c 20  SetVar2(interp, 
2370: 6c 69 6e 6b 50 74 72 2d 3e 76 61 72 4e 61 6d 65  linkPtr->varName
2380: 2c 20 4e 55 4c 4c 2c 20 6f 62 6a 50 74 72 2c 0a  , NULL, objPtr,.
2390: 2b 09 20 20 20 20 54 43 4c 5f 47 4c 4f 42 41 4c  +.    TCL_GLOBAL
23a0: 5f 4f 4e 4c 59 7c 54 43 4c 5f 4c 45 41 56 45 5f  _ONLY|TCL_LEAVE_
23b0: 45 52 52 5f 4d 53 47 29 3b 0a 2b 20 20 20 20 54  ERR_MSG);.+    T
23c0: 63 6c 5f 44 65 63 72 52 65 66 43 6f 75 6e 74 28  cl_DecrRefCount(
23d0: 6f 62 6a 50 74 72 29 3b 0a 2b 20 20 20 20 69 66  objPtr);.+    if
23e0: 20 28 72 65 73 50 74 72 20 3d 3d 20 4e 55 4c 4c   (resPtr == NULL
23f0: 29 20 7b 0a 20 09 54 63 6c 5f 44 65 63 72 52 65  ) {. .Tcl_DecrRe
2400: 66 43 6f 75 6e 74 28 6c 69 6e 6b 50 74 72 2d 3e  fCount(linkPtr->
2410: 76 61 72 4e 61 6d 65 29 3b 0a 2d 09 54 63 6c 5f  varName);.-.Tcl_
2420: 44 65 63 72 52 65 66 43 6f 75 6e 74 28 6f 62 6a  DecrRefCount(obj
2430: 50 74 72 29 3b 0a 20 09 63 6b 66 72 65 65 28 28  Ptr);. .ckfree((
2440: 63 68 61 72 20 2a 29 20 6c 69 6e 6b 50 74 72 29  char *) linkPtr)
2450: 3b 0a 20 09 72 65 74 75 72 6e 20 54 43 4c 5f 45  ;. .return TCL_E
2460: 52 52 4f 52 3b 0a 20 20 20 20 20 7d 0a 40 40 20  RROR;.     }.@@ 
2470: 2d 31 39 31 2c 36 20 2b 31 39 33 2c 37 20 40 40  -191,6 +193,7 @@
2480: 0a 20 7b 0a 20 20 20 20 20 4c 69 6e 6b 20 2a 6c  . {.     Link *l
2490: 69 6e 6b 50 74 72 3b 0a 20 20 20 20 20 69 6e 74  inkPtr;.     int
24a0: 20 73 61 76 65 64 46 6c 61 67 3b 0a 2b 20 20 20   savedFlag;.+   
24b0: 20 54 63 6c 5f 4f 62 6a 20 2a 6f 62 6a 50 74 72   Tcl_Obj *objPtr
24c0: 3b 0a 20 0a 20 20 20 20 20 6c 69 6e 6b 50 74 72  ;. .     linkPtr
24d0: 20 3d 20 28 4c 69 6e 6b 20 2a 29 20 54 63 6c 5f   = (Link *) Tcl_
24e0: 56 61 72 54 72 61 63 65 49 6e 66 6f 28 69 6e 74  VarTraceInfo(int
24f0: 65 72 70 2c 20 76 61 72 4e 61 6d 65 2c 20 54 43  erp, varName, TC
2500: 4c 5f 47 4c 4f 42 41 4c 5f 4f 4e 4c 59 2c 0a 20  L_GLOBAL_ONLY,. 
2510: 09 20 20 20 20 4c 69 6e 6b 54 72 61 63 65 50 72  .    LinkTracePr
2520: 6f 63 2c 20 28 43 6c 69 65 6e 74 44 61 74 61 29  oc, (ClientData)
2530: 20 4e 55 4c 4c 29 3b 0a 40 40 20 2d 31 39 39 2c   NULL);.@@ -199,
2540: 38 20 2b 32 30 32 2c 31 30 20 40 40 0a 20 20 20  8 +202,10 @@.   
2550: 20 20 7d 0a 20 20 20 20 20 73 61 76 65 64 46 6c    }.     savedFl
2560: 61 67 20 3d 20 6c 69 6e 6b 50 74 72 2d 3e 66 6c  ag = linkPtr->fl
2570: 61 67 73 20 26 20 4c 49 4e 4b 5f 42 45 49 4e 47  ags & LINK_BEING
2580: 5f 55 50 44 41 54 45 44 3b 0a 20 20 20 20 20 6c  _UPDATED;.     l
2590: 69 6e 6b 50 74 72 2d 3e 66 6c 61 67 73 20 7c 3d  inkPtr->flags |=
25a0: 20 4c 49 4e 4b 5f 42 45 49 4e 47 5f 55 50 44 41   LINK_BEING_UPDA
25b0: 54 45 44 3b 0a 2d 20 20 20 20 54 63 6c 5f 4f 62  TED;.-    Tcl_Ob
25c0: 6a 53 65 74 56 61 72 32 28 69 6e 74 65 72 70 2c  jSetVar2(interp,
25d0: 20 6c 69 6e 6b 50 74 72 2d 3e 76 61 72 4e 61 6d   linkPtr->varNam
25e0: 65 2c 20 4e 55 4c 4c 2c 20 4f 62 6a 56 61 6c 75  e, NULL, ObjValu
25f0: 65 28 6c 69 6e 6b 50 74 72 29 2c 0a 2d 09 20 20  e(linkPtr),.-.  
2600: 20 20 54 43 4c 5f 47 4c 4f 42 41 4c 5f 4f 4e 4c    TCL_GLOBAL_ONL
2610: 59 29 3b 0a 2b 20 20 20 20 6f 62 6a 50 74 72 20  Y);.+    objPtr 
2620: 3d 20 4f 62 6a 56 61 6c 75 65 28 6c 69 6e 6b 50  = ObjValue(linkP
2630: 74 72 29 3b 0a 2b 20 20 20 20 54 63 6c 5f 49 6e  tr);.+    Tcl_In
2640: 63 72 52 65 66 43 6f 75 6e 74 28 6f 62 6a 50 74  crRefCount(objPt
2650: 72 29 3b 0a 2b 20 20 20 20 54 63 6c 5f 4f 62 6a  r);.+    Tcl_Obj
2660: 53 65 74 56 61 72 32 28 69 6e 74 65 72 70 2c 20  SetVar2(interp, 
2670: 6c 69 6e 6b 50 74 72 2d 3e 76 61 72 4e 61 6d 65  linkPtr->varName
2680: 2c 20 4e 55 4c 4c 2c 20 6f 62 6a 50 74 72 2c 20  , NULL, objPtr, 
2690: 54 43 4c 5f 47 4c 4f 42 41 4c 5f 4f 4e 4c 59 29  TCL_GLOBAL_ONLY)
26a0: 3b 0a 2b 20 20 20 20 54 63 6c 5f 44 65 63 72 52  ;.+    Tcl_DecrR
26b0: 65 66 43 6f 75 6e 74 28 6f 62 6a 50 74 72 29 3b  efCount(objPtr);
26c0: 0a 20 20 20 20 20 6c 69 6e 6b 50 74 72 2d 3e 66  .     linkPtr->f
26d0: 6c 61 67 73 20 3d 20 28 6c 69 6e 6b 50 74 72 2d  lags = (linkPtr-
26e0: 3e 66 6c 61 67 73 20 26 20 7e 4c 49 4e 4b 5f 42  >flags & ~LINK_B
26f0: 45 49 4e 47 5f 55 50 44 41 54 45 44 29 20 7c 20  EING_UPDATED) | 
2700: 73 61 76 65 64 46 6c 61 67 3b 0a 20 7d 0a 20 0c  savedFlag;. }. .
2710: 0a 40 40 20 2d 32 33 37 2c 37 20 2b 32 34 32 2c  .@@ -237,7 +242,
2720: 37 20 40 40 0a 20 20 20 20 20 69 6e 74 20 63 68  7 @@.     int ch
2730: 61 6e 67 65 64 2c 20 76 61 6c 75 65 4c 65 6e 67  anged, valueLeng
2740: 74 68 3b 0a 20 20 20 20 20 43 4f 4e 53 54 20 63  th;.     CONST c
2750: 68 61 72 20 2a 76 61 6c 75 65 3b 0a 20 20 20 20  har *value;.    
2760: 20 63 68 61 72 20 2a 2a 70 70 2c 20 2a 72 65 73   char **pp, *res
2770: 75 6c 74 3b 0a 2d 20 20 20 20 54 63 6c 5f 4f 62  ult;.-    Tcl_Ob
2780: 6a 20 2a 6f 62 6a 50 74 72 2c 20 2a 76 61 6c 75  j *objPtr, *valu
2790: 65 4f 62 6a 3b 0a 2b 20 20 20 20 54 63 6c 5f 4f  eObj;.+    Tcl_O
27a0: 62 6a 20 2a 6f 62 6a 50 74 72 2c 20 2a 76 61 6c  bj *objPtr, *val
27b0: 75 65 4f 62 6a 2c 20 2a 74 6d 70 50 74 72 3b 0a  ueObj, *tmpPtr;.
27c0: 20 0a 20 20 20 20 20 2f 2a 0a 20 20 20 20 20 20   .     /*.      
27d0: 2a 20 49 66 20 74 68 65 20 76 61 72 69 61 62 6c  * If the variabl
27e0: 65 20 69 73 20 62 65 69 6e 67 20 75 6e 73 65 74  e is being unset
27f0: 2c 20 74 68 65 6e 20 6a 75 73 74 20 72 65 2d 63  , then just re-c
2800: 72 65 61 74 65 20 69 74 20 28 77 69 74 68 20 61  reate it (with a
2810: 0a 40 40 20 2d 32 34 39 2c 38 20 2b 32 35 34 2c  .@@ -249,8 +254,
2820: 31 31 20 40 40 0a 20 09 20 20 20 20 54 63 6c 5f  11 @@. .    Tcl_
2830: 44 65 63 72 52 65 66 43 6f 75 6e 74 28 6c 69 6e  DecrRefCount(lin
2840: 6b 50 74 72 2d 3e 76 61 72 4e 61 6d 65 29 3b 0a  kPtr->varName);.
2850: 20 09 20 20 20 20 63 6b 66 72 65 65 28 28 63 68   .    ckfree((ch
2860: 61 72 20 2a 29 20 6c 69 6e 6b 50 74 72 29 3b 0a  ar *) linkPtr);.
2870: 20 09 7d 20 65 6c 73 65 20 69 66 20 28 66 6c 61   .} else if (fla
2880: 67 73 20 26 20 54 43 4c 5f 54 52 41 43 45 5f 44  gs & TCL_TRACE_D
2890: 45 53 54 52 4f 59 45 44 29 20 7b 0a 2d 09 20 20  ESTROYED) {.-.  
28a0: 20 20 54 63 6c 5f 4f 62 6a 53 65 74 56 61 72 32    Tcl_ObjSetVar2
28b0: 28 69 6e 74 65 72 70 2c 20 6c 69 6e 6b 50 74 72  (interp, linkPtr
28c0: 2d 3e 76 61 72 4e 61 6d 65 2c 20 4e 55 4c 4c 2c  ->varName, NULL,
28d0: 20 4f 62 6a 56 61 6c 75 65 28 6c 69 6e 6b 50 74   ObjValue(linkPt
28e0: 72 29 2c 0a 2b 09 20 20 20 20 74 6d 70 50 74 72  r),.+.    tmpPtr
28f0: 20 3d 20 4f 62 6a 56 61 6c 75 65 28 6c 69 6e 6b   = ObjValue(link
2900: 50 74 72 29 3b 0a 2b 09 20 20 20 20 54 63 6c 5f  Ptr);.+.    Tcl_
2910: 49 6e 63 72 52 65 66 43 6f 75 6e 74 28 74 6d 70  IncrRefCount(tmp
2920: 50 74 72 29 3b 0a 2b 09 20 20 20 20 54 63 6c 5f  Ptr);.+.    Tcl_
2930: 4f 62 6a 53 65 74 56 61 72 32 28 69 6e 74 65 72  ObjSetVar2(inter
2940: 70 2c 20 6c 69 6e 6b 50 74 72 2d 3e 76 61 72 4e  p, linkPtr->varN
2950: 61 6d 65 2c 20 4e 55 4c 4c 2c 20 74 6d 70 50 74  ame, NULL, tmpPt
2960: 72 2c 0a 20 09 09 20 20 20 20 54 43 4c 5f 47 4c  r,. ..    TCL_GL
2970: 4f 42 41 4c 5f 4f 4e 4c 59 29 3b 0a 2b 09 20 20  OBAL_ONLY);.+.  
2980: 20 20 54 63 6c 5f 44 65 63 72 52 65 66 43 6f 75    Tcl_DecrRefCou
2990: 6e 74 28 74 6d 70 50 74 72 29 3b 0a 20 09 20 20  nt(tmpPtr);. .  
29a0: 20 20 54 63 6c 5f 54 72 61 63 65 56 61 72 28 69    Tcl_TraceVar(i
29b0: 6e 74 65 72 70 2c 20 54 63 6c 5f 47 65 74 53 74  nterp, Tcl_GetSt
29c0: 72 69 6e 67 28 6c 69 6e 6b 50 74 72 2d 3e 76 61  ring(linkPtr->va
29d0: 72 4e 61 6d 65 29 2c 0a 20 09 09 20 20 20 20 54  rName),. ..    T
29e0: 43 4c 5f 47 4c 4f 42 41 4c 5f 4f 4e 4c 59 7c 54  CL_GLOBAL_ONLY|T
29f0: 43 4c 5f 54 52 41 43 45 5f 52 45 41 44 53 7c 54  CL_TRACE_READS|T
2a00: 43 4c 5f 54 52 41 43 45 5f 57 52 49 54 45 53 0a  CL_TRACE_WRITES.
2a10: 20 09 09 20 20 20 20 7c 54 43 4c 5f 54 52 41 43   ..    |TCL_TRAC
2a20: 45 5f 55 4e 53 45 54 53 2c 20 4c 69 6e 6b 54 72  E_UNSETS, LinkTr
2a30: 61 63 65 50 72 6f 63 2c 20 28 43 6c 69 65 6e 74  aceProc, (Client
2a40: 44 61 74 61 29 20 6c 69 6e 6b 50 74 72 29 3b 0a  Data) linkPtr);.
2a50: 40 40 20 2d 32 39 33 2c 38 20 2b 33 30 31 2c 31  @@ -293,8 +301,1
2a60: 31 20 40 40 0a 20 09 20 20 20 20 72 65 74 75 72  1 @@. .    retur
2a70: 6e 20 22 69 6e 74 65 72 6e 61 6c 20 65 72 72 6f  n "internal erro
2a80: 72 3a 20 62 61 64 20 6c 69 6e 6b 65 64 20 76 61  r: bad linked va
2a90: 72 69 61 62 6c 65 20 74 79 70 65 22 3b 0a 20 09  riable type";. .
2aa0: 7d 0a 20 09 69 66 20 28 63 68 61 6e 67 65 64 29  }. .if (changed)
2ab0: 20 7b 0a 2d 09 20 20 20 20 54 63 6c 5f 4f 62 6a   {.-.    Tcl_Obj
2ac0: 53 65 74 56 61 72 32 28 69 6e 74 65 72 70 2c 20  SetVar2(interp, 
2ad0: 6c 69 6e 6b 50 74 72 2d 3e 76 61 72 4e 61 6d 65  linkPtr->varName
2ae0: 2c 20 4e 55 4c 4c 2c 20 4f 62 6a 56 61 6c 75 65  , NULL, ObjValue
2af0: 28 6c 69 6e 6b 50 74 72 29 2c 0a 2b 09 20 20 20  (linkPtr),.+.   
2b00: 20 74 6d 70 50 74 72 20 3d 20 4f 62 6a 56 61 6c   tmpPtr = ObjVal
2b10: 75 65 28 6c 69 6e 6b 50 74 72 29 3b 0a 2b 09 20  ue(linkPtr);.+. 
2b20: 20 20 20 54 63 6c 5f 49 6e 63 72 52 65 66 43 6f     Tcl_IncrRefCo
2b30: 75 6e 74 28 74 6d 70 50 74 72 29 3b 0a 2b 09 20  unt(tmpPtr);.+. 
2b40: 20 20 20 54 63 6c 5f 4f 62 6a 53 65 74 56 61 72     Tcl_ObjSetVar
2b50: 32 28 69 6e 74 65 72 70 2c 20 6c 69 6e 6b 50 74  2(interp, linkPt
2b60: 72 2d 3e 76 61 72 4e 61 6d 65 2c 20 4e 55 4c 4c  r->varName, NULL
2b70: 2c 20 74 6d 70 50 74 72 2c 0a 20 09 09 20 20 20  , tmpPtr,. ..   
2b80: 20 54 43 4c 5f 47 4c 4f 42 41 4c 5f 4f 4e 4c 59   TCL_GLOBAL_ONLY
2b90: 29 3b 0a 2b 09 20 20 20 20 54 63 6c 5f 44 65 63  );.+.    Tcl_Dec
2ba0: 72 52 65 66 43 6f 75 6e 74 28 74 6d 70 50 74 72  rRefCount(tmpPtr
2bb0: 29 3b 0a 20 09 7d 0a 20 09 72 65 74 75 72 6e 20  );. .}. .return 
2bc0: 4e 55 4c 4c 3b 0a 20 20 20 20 20 7d 0a 40 40 20  NULL;.     }.@@ 
2bd0: 2d 33 30 39 2c 38 20 2b 33 32 30 2c 31 31 20 40  -309,8 +320,11 @
2be0: 40 0a 20 20 20 20 20 20 2a 2f 0a 20 0a 20 20 20  @.      */. .   
2bf0: 20 20 69 66 20 28 6c 69 6e 6b 50 74 72 2d 3e 66    if (linkPtr->f
2c00: 6c 61 67 73 20 26 20 4c 49 4e 4b 5f 52 45 41 44  lags & LINK_READ
2c10: 5f 4f 4e 4c 59 29 20 7b 0a 2d 09 54 63 6c 5f 4f  _ONLY) {.-.Tcl_O
2c20: 62 6a 53 65 74 56 61 72 32 28 69 6e 74 65 72 70  bjSetVar2(interp
2c30: 2c 20 6c 69 6e 6b 50 74 72 2d 3e 76 61 72 4e 61  , linkPtr->varNa
2c40: 6d 65 2c 20 4e 55 4c 4c 2c 20 4f 62 6a 56 61 6c  me, NULL, ObjVal
2c50: 75 65 28 6c 69 6e 6b 50 74 72 29 2c 0a 2b 09 74  ue(linkPtr),.+.t
2c60: 6d 70 50 74 72 20 3d 20 4f 62 6a 56 61 6c 75 65  mpPtr = ObjValue
2c70: 28 6c 69 6e 6b 50 74 72 29 3b 0a 2b 09 54 63 6c  (linkPtr);.+.Tcl
2c80: 5f 49 6e 63 72 52 65 66 43 6f 75 6e 74 28 74 6d  _IncrRefCount(tm
2c90: 70 50 74 72 29 3b 0a 2b 09 54 63 6c 5f 4f 62 6a  pPtr);.+.Tcl_Obj
2ca0: 53 65 74 56 61 72 32 28 69 6e 74 65 72 70 2c 20  SetVar2(interp, 
2cb0: 6c 69 6e 6b 50 74 72 2d 3e 76 61 72 4e 61 6d 65  linkPtr->varName
2cc0: 2c 20 4e 55 4c 4c 2c 20 74 6d 70 50 74 72 2c 0a  , NULL, tmpPtr,.
2cd0: 20 09 09 54 43 4c 5f 47 4c 4f 42 41 4c 5f 4f 4e   ..TCL_GLOBAL_ON
2ce0: 4c 59 29 3b 0a 2b 09 54 63 6c 5f 44 65 63 72 52  LY);.+.Tcl_DecrR
2cf0: 65 66 43 6f 75 6e 74 28 74 6d 70 50 74 72 29 3b  efCount(tmpPtr);
2d00: 0a 20 09 72 65 74 75 72 6e 20 22 6c 69 6e 6b 65  . .return "linke
2d10: 64 20 76 61 72 69 61 62 6c 65 20 69 73 20 72 65  d variable is re
2d20: 61 64 2d 6f 6e 6c 79 22 3b 0a 20 20 20 20 20 7d  ad-only";.     }
2d30: 0a 20 20 20 20 20 76 61 6c 75 65 4f 62 6a 20 3d  .     valueObj =
2d40: 20 54 63 6c 5f 4f 62 6a 47 65 74 56 61 72 32 28   Tcl_ObjGetVar2(
2d50: 69 6e 74 65 72 70 2c 20 6c 69 6e 6b 50 74 72 2d  interp, linkPtr-
2d60: 3e 76 61 72 4e 61 6d 65 2c 4e 55 4c 4c 2c 20 54  >varName,NULL, T
2d70: 43 4c 5f 47 4c 4f 42 41 4c 5f 4f 4e 4c 59 29 3b  CL_GLOBAL_ONLY);
2d80: 0a 40 40 20 2d 33 33 31 2c 38 20 2b 33 34 35 2c  .@@ -331,8 +345,
2d90: 31 31 20 40 40 0a 20 09 69 66 20 28 54 63 6c 5f  11 @@. .if (Tcl_
2da0: 47 65 74 49 6e 74 46 72 6f 6d 4f 62 6a 28 69 6e  GetIntFromObj(in
2db0: 74 65 72 70 2c 20 76 61 6c 75 65 4f 62 6a 2c 20  terp, valueObj, 
2dc0: 26 6c 69 6e 6b 50 74 72 2d 3e 6c 61 73 74 56 61  &linkPtr->lastVa
2dd0: 6c 75 65 2e 69 29 0a 20 09 09 21 3d 20 54 43 4c  lue.i). ..!= TCL
2de0: 5f 4f 4b 29 20 7b 0a 20 09 20 20 20 20 54 63 6c  _OK) {. .    Tcl
2df0: 5f 53 65 74 4f 62 6a 52 65 73 75 6c 74 28 69 6e  _SetObjResult(in
2e00: 74 65 72 70 2c 20 6f 62 6a 50 74 72 29 3b 0a 2d  terp, objPtr);.-
2e10: 09 20 20 20 20 54 63 6c 5f 4f 62 6a 53 65 74 56  .    Tcl_ObjSetV
2e20: 61 72 32 28 69 6e 74 65 72 70 2c 20 6c 69 6e 6b  ar2(interp, link
2e30: 50 74 72 2d 3e 76 61 72 4e 61 6d 65 2c 20 4e 55  Ptr->varName, NU
2e40: 4c 4c 2c 20 4f 62 6a 56 61 6c 75 65 28 6c 69 6e  LL, ObjValue(lin
2e50: 6b 50 74 72 29 2c 0a 2b 09 20 20 20 20 74 6d 70  kPtr),.+.    tmp
2e60: 50 74 72 20 3d 20 4f 62 6a 56 61 6c 75 65 28 6c  Ptr = ObjValue(l
2e70: 69 6e 6b 50 74 72 29 3b 0a 2b 09 20 20 20 20 54  inkPtr);.+.    T
2e80: 63 6c 5f 49 6e 63 72 52 65 66 43 6f 75 6e 74 28  cl_IncrRefCount(
2e90: 74 6d 70 50 74 72 29 3b 0a 2b 09 20 20 20 20 54  tmpPtr);.+.    T
2ea0: 63 6c 5f 4f 62 6a 53 65 74 56 61 72 32 28 69 6e  cl_ObjSetVar2(in
2eb0: 74 65 72 70 2c 20 6c 69 6e 6b 50 74 72 2d 3e 76  terp, linkPtr->v
2ec0: 61 72 4e 61 6d 65 2c 20 4e 55 4c 4c 2c 20 74 6d  arName, NULL, tm
2ed0: 70 50 74 72 2c 0a 20 09 09 20 20 20 20 54 43 4c  pPtr,. ..    TCL
2ee0: 5f 47 4c 4f 42 41 4c 5f 4f 4e 4c 59 29 3b 0a 2b  _GLOBAL_ONLY);.+
2ef0: 09 20 20 20 20 54 63 6c 5f 44 65 63 72 52 65 66  .    Tcl_DecrRef
2f00: 43 6f 75 6e 74 28 74 6d 70 50 74 72 29 3b 0a 20  Count(tmpPtr);. 
2f10: 09 20 20 20 20 72 65 73 75 6c 74 20 3d 20 22 76  .    result = "v
2f20: 61 72 69 61 62 6c 65 20 6d 75 73 74 20 68 61 76  ariable must hav
2f30: 65 20 69 6e 74 65 67 65 72 20 76 61 6c 75 65 22  e integer value"
2f40: 3b 0a 20 09 20 20 20 20 67 6f 74 6f 20 65 6e 64  ;. .    goto end
2f50: 3b 0a 20 09 7d 0a 40 40 20 2d 33 34 33 2c 38 20  ;. .}.@@ -343,8 
2f60: 2b 33 36 30 2c 31 31 20 40 40 0a 20 09 69 66 20  +360,11 @@. .if 
2f70: 28 54 63 6c 5f 47 65 74 57 69 64 65 49 6e 74 46  (Tcl_GetWideIntF
2f80: 72 6f 6d 4f 62 6a 28 69 6e 74 65 72 70 2c 20 76  romObj(interp, v
2f90: 61 6c 75 65 4f 62 6a 2c 20 26 6c 69 6e 6b 50 74  alueObj, &linkPt
2fa0: 72 2d 3e 6c 61 73 74 56 61 6c 75 65 2e 77 29 0a  r->lastValue.w).
2fb0: 20 09 09 21 3d 20 54 43 4c 5f 4f 4b 29 20 7b 0a   ..!= TCL_OK) {.
2fc0: 20 09 20 20 20 20 54 63 6c 5f 53 65 74 4f 62 6a   .    Tcl_SetObj
2fd0: 52 65 73 75 6c 74 28 69 6e 74 65 72 70 2c 20 6f  Result(interp, o
2fe0: 62 6a 50 74 72 29 3b 0a 2d 09 20 20 20 20 54 63  bjPtr);.-.    Tc
2ff0: 6c 5f 4f 62 6a 53 65 74 56 61 72 32 28 69 6e 74  l_ObjSetVar2(int
3000: 65 72 70 2c 20 6c 69 6e 6b 50 74 72 2d 3e 76 61  erp, linkPtr->va
3010: 72 4e 61 6d 65 2c 20 4e 55 4c 4c 2c 20 4f 62 6a  rName, NULL, Obj
3020: 56 61 6c 75 65 28 6c 69 6e 6b 50 74 72 29 2c 0a  Value(linkPtr),.
3030: 2b 09 20 20 20 20 74 6d 70 50 74 72 20 3d 20 4f  +.    tmpPtr = O
3040: 62 6a 56 61 6c 75 65 28 6c 69 6e 6b 50 74 72 29  bjValue(linkPtr)
3050: 3b 0a 2b 09 20 20 20 20 54 63 6c 5f 49 6e 63 72  ;.+.    Tcl_Incr
3060: 52 65 66 43 6f 75 6e 74 28 74 6d 70 50 74 72 29  RefCount(tmpPtr)
3070: 3b 0a 2b 09 20 20 20 20 54 63 6c 5f 4f 62 6a 53  ;.+.    Tcl_ObjS
3080: 65 74 56 61 72 32 28 69 6e 74 65 72 70 2c 20 6c  etVar2(interp, l
3090: 69 6e 6b 50 74 72 2d 3e 76 61 72 4e 61 6d 65 2c  inkPtr->varName,
30a0: 20 4e 55 4c 4c 2c 20 74 6d 70 50 74 72 2c 0a 20   NULL, tmpPtr,. 
30b0: 09 09 20 20 20 20 54 43 4c 5f 47 4c 4f 42 41 4c  ..    TCL_GLOBAL
30c0: 5f 4f 4e 4c 59 29 3b 0a 2b 09 20 20 20 20 54 63  _ONLY);.+.    Tc
30d0: 6c 5f 44 65 63 72 52 65 66 43 6f 75 6e 74 28 74  l_DecrRefCount(t
30e0: 6d 70 50 74 72 29 3b 0a 20 09 20 20 20 20 72 65  mpPtr);. .    re
30f0: 73 75 6c 74 20 3d 20 22 76 61 72 69 61 62 6c 65  sult = "variable
3100: 20 6d 75 73 74 20 68 61 76 65 20 69 6e 74 65 67   must have integ
3110: 65 72 20 76 61 6c 75 65 22 3b 0a 20 09 20 20 20  er value";. .   
3120: 20 67 6f 74 6f 20 65 6e 64 3b 0a 20 09 7d 0a 40   goto end;. .}.@
3130: 40 20 2d 33 35 35 2c 38 20 2b 33 37 35 2c 31 31  @ -355,8 +375,11
3140: 20 40 40 0a 20 09 69 66 20 28 54 63 6c 5f 47 65   @@. .if (Tcl_Ge
3150: 74 44 6f 75 62 6c 65 46 72 6f 6d 4f 62 6a 28 69  tDoubleFromObj(i
3160: 6e 74 65 72 70 2c 20 76 61 6c 75 65 4f 62 6a 2c  nterp, valueObj,
3170: 20 26 6c 69 6e 6b 50 74 72 2d 3e 6c 61 73 74 56   &linkPtr->lastV
3180: 61 6c 75 65 2e 64 29 0a 20 09 09 21 3d 20 54 43  alue.d). ..!= TC
3190: 4c 5f 4f 4b 29 20 7b 0a 20 09 20 20 20 20 54 63  L_OK) {. .    Tc
31a0: 6c 5f 53 65 74 4f 62 6a 52 65 73 75 6c 74 28 69  l_SetObjResult(i
31b0: 6e 74 65 72 70 2c 20 6f 62 6a 50 74 72 29 3b 0a  nterp, objPtr);.
31c0: 2d 09 20 20 20 20 54 63 6c 5f 4f 62 6a 53 65 74  -.    Tcl_ObjSet
31d0: 56 61 72 32 28 69 6e 74 65 72 70 2c 20 6c 69 6e  Var2(interp, lin
31e0: 6b 50 74 72 2d 3e 76 61 72 4e 61 6d 65 2c 20 4e  kPtr->varName, N
31f0: 55 4c 4c 2c 20 4f 62 6a 56 61 6c 75 65 28 6c 69  ULL, ObjValue(li
3200: 6e 6b 50 74 72 29 2c 0a 2b 09 20 20 20 20 74 6d  nkPtr),.+.    tm
3210: 70 50 74 72 20 3d 20 4f 62 6a 56 61 6c 75 65 28  pPtr = ObjValue(
3220: 6c 69 6e 6b 50 74 72 29 3b 0a 2b 09 20 20 20 20  linkPtr);.+.    
3230: 54 63 6c 5f 49 6e 63 72 52 65 66 43 6f 75 6e 74  Tcl_IncrRefCount
3240: 28 74 6d 70 50 74 72 29 3b 0a 2b 09 20 20 20 20  (tmpPtr);.+.    
3250: 54 63 6c 5f 4f 62 6a 53 65 74 56 61 72 32 28 69  Tcl_ObjSetVar2(i
3260: 6e 74 65 72 70 2c 20 6c 69 6e 6b 50 74 72 2d 3e  nterp, linkPtr->
3270: 76 61 72 4e 61 6d 65 2c 20 4e 55 4c 4c 2c 20 74  varName, NULL, t
3280: 6d 70 50 74 72 2c 0a 20 09 09 20 20 20 20 54 43  mpPtr,. ..    TC
3290: 4c 5f 47 4c 4f 42 41 4c 5f 4f 4e 4c 59 29 3b 0a  L_GLOBAL_ONLY);.
32a0: 2b 09 20 20 20 20 54 63 6c 5f 44 65 63 72 52 65  +.    Tcl_DecrRe
32b0: 66 43 6f 75 6e 74 28 74 6d 70 50 74 72 29 3b 0a  fCount(tmpPtr);.
32c0: 20 09 20 20 20 20 72 65 73 75 6c 74 20 3d 20 22   .    result = "
32d0: 76 61 72 69 61 62 6c 65 20 6d 75 73 74 20 68 61  variable must ha
32e0: 76 65 20 72 65 61 6c 20 76 61 6c 75 65 22 3b 0a  ve real value";.
32f0: 20 09 20 20 20 20 67 6f 74 6f 20 65 6e 64 3b 0a   .    goto end;.
3300: 20 09 7d 0a 40 40 20 2d 33 36 37 2c 38 20 2b 33   .}.@@ -367,8 +3
3310: 39 30 2c 31 31 20 40 40 0a 20 09 69 66 20 28 54  90,11 @@. .if (T
3320: 63 6c 5f 47 65 74 42 6f 6f 6c 65 61 6e 46 72 6f  cl_GetBooleanFro
3330: 6d 4f 62 6a 28 69 6e 74 65 72 70 2c 20 76 61 6c  mObj(interp, val
3340: 75 65 4f 62 6a 2c 20 26 6c 69 6e 6b 50 74 72 2d  ueObj, &linkPtr-
3350: 3e 6c 61 73 74 56 61 6c 75 65 2e 69 29 0a 20 09  >lastValue.i). .
3360: 20 20 20 20 21 3d 20 54 43 4c 5f 4f 4b 29 20 7b      != TCL_OK) {
3370: 0a 20 09 20 20 20 20 54 63 6c 5f 53 65 74 4f 62  . .    Tcl_SetOb
3380: 6a 52 65 73 75 6c 74 28 69 6e 74 65 72 70 2c 20  jResult(interp, 
3390: 6f 62 6a 50 74 72 29 3b 0a 2d 09 20 20 20 20 54  objPtr);.-.    T
33a0: 63 6c 5f 4f 62 6a 53 65 74 56 61 72 32 28 69 6e  cl_ObjSetVar2(in
33b0: 74 65 72 70 2c 20 6c 69 6e 6b 50 74 72 2d 3e 76  terp, linkPtr->v
33c0: 61 72 4e 61 6d 65 2c 20 4e 55 4c 4c 2c 20 4f 62  arName, NULL, Ob
33d0: 6a 56 61 6c 75 65 28 6c 69 6e 6b 50 74 72 29 2c  jValue(linkPtr),
33e0: 0a 2b 09 20 20 20 20 74 6d 70 50 74 72 20 3d 20  .+.    tmpPtr = 
33f0: 4f 62 6a 56 61 6c 75 65 28 6c 69 6e 6b 50 74 72  ObjValue(linkPtr
3400: 29 3b 0a 2b 09 20 20 20 20 54 63 6c 5f 49 6e 63  );.+.    Tcl_Inc
3410: 72 52 65 66 43 6f 75 6e 74 28 74 6d 70 50 74 72  rRefCount(tmpPtr
3420: 29 3b 0a 2b 09 20 20 20 20 54 63 6c 5f 4f 62 6a  );.+.    Tcl_Obj
3430: 53 65 74 56 61 72 32 28 69 6e 74 65 72 70 2c 20  SetVar2(interp, 
3440: 6c 69 6e 6b 50 74 72 2d 3e 76 61 72 4e 61 6d 65  linkPtr->varName
3450: 2c 20 4e 55 4c 4c 2c 20 74 6d 70 50 74 72 2c 0a  , NULL, tmpPtr,.
3460: 20 09 09 20 20 20 20 54 43 4c 5f 47 4c 4f 42 41   ..    TCL_GLOBA
3470: 4c 5f 4f 4e 4c 59 29 3b 0a 2b 09 20 20 20 20 54  L_ONLY);.+.    T
3480: 63 6c 5f 44 65 63 72 52 65 66 43 6f 75 6e 74 28  cl_DecrRefCount(
3490: 74 6d 70 50 74 72 29 3b 0a 20 09 20 20 20 20 72  tmpPtr);. .    r
34a0: 65 73 75 6c 74 20 3d 20 22 76 61 72 69 61 62 6c  esult = "variabl
34b0: 65 20 6d 75 73 74 20 68 61 76 65 20 62 6f 6f 6c  e must have bool
34c0: 65 61 6e 20 76 61 6c 75 65 22 3b 0a 20 09 20 20  ean value";. .  
34d0: 20 20 67 6f 74 6f 20 65 6e 64 3b 0a 20 09 7d 0a    goto end;. .}.
34e0: 49 6e 64 65 78 3a 20 67 65 6e 65 72 69 63 2f 74  Index: generic/t
34f0: 63 6c 4d 61 69 6e 2e 63 0a 3d 3d 3d 3d 3d 3d 3d  clMain.c.=======
3500: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
3510: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
3520: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
3530: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 52 43 53  ============.RCS
3540: 20 66 69 6c 65 3a 20 2f 63 76 73 72 6f 6f 74 2f   file: /cvsroot/
3550: 74 63 6c 2f 74 63 6c 2f 67 65 6e 65 72 69 63 2f  tcl/tcl/generic/
3560: 74 63 6c 4d 61 69 6e 2e 63 2c 76 0a 72 65 74 72  tclMain.c,v.retr
3570: 69 65 76 69 6e 67 20 72 65 76 69 73 69 6f 6e 20  ieving revision 
3580: 31 2e 32 30 2e 32 2e 31 0a 64 69 66 66 20 2d 75  1.20.2.1.diff -u
3590: 20 2d 72 31 2e 32 30 2e 32 2e 31 20 74 63 6c 4d   -r1.20.2.1 tclM
35a0: 61 69 6e 2e 63 0a 2d 2d 2d 20 67 65 6e 65 72 69  ain.c.--- generi
35b0: 63 2f 74 63 6c 4d 61 69 6e 2e 63 09 33 30 20 53  c/tclMain.c.30 S
35c0: 65 70 20 32 30 30 35 20 31 39 3a 32 38 3a 35 35  ep 2005 19:28:55
35d0: 20 2d 30 30 30 30 09 31 2e 32 30 2e 32 2e 31 0a   -0000.1.20.2.1.
35e0: 2b 2b 2b 20 67 65 6e 65 72 69 63 2f 74 63 6c 4d  +++ generic/tclM
35f0: 61 69 6e 2e 63 09 32 33 20 4f 63 74 20 32 30 30  ain.c.23 Oct 200
3600: 35 20 32 31 3a 34 37 3a 35 37 20 2d 30 30 30 30  5 21:47:57 -0000
3610: 0a 40 40 20 2d 32 31 30 2c 36 20 2b 32 31 30 2c  .@@ -210,6 +210,
3620: 37 20 40 40 0a 20 20 20 20 20 54 63 6c 5f 43 68  7 @@.     Tcl_Ch
3630: 61 6e 6e 65 6c 20 69 6e 43 68 61 6e 6e 65 6c 2c  annel inChannel,
3640: 20 6f 75 74 43 68 61 6e 6e 65 6c 2c 20 65 72 72   outChannel, err
3650: 43 68 61 6e 6e 65 6c 3b 0a 20 20 20 20 20 54 63  Channel;.     Tc
3660: 6c 5f 49 6e 74 65 72 70 20 2a 69 6e 74 65 72 70  l_Interp *interp
3670: 3b 0a 20 20 20 20 20 54 63 6c 5f 44 53 74 72 69  ;.     Tcl_DStri
3680: 6e 67 20 61 70 70 4e 61 6d 65 3b 0a 2b 20 20 20  ng appName;.+   
3690: 20 54 63 6c 5f 4f 62 6a 20 2a 6f 62 6a 50 74 72   Tcl_Obj *objPtr
36a0: 3b 0a 20 0a 20 20 20 20 20 54 63 6c 5f 46 69 6e  ;. .     Tcl_Fin
36b0: 64 45 78 65 63 75 74 61 62 6c 65 28 61 72 67 76  dExecutable(argv
36c0: 5b 30 5d 29 3b 0a 20 0a 40 40 20 2d 32 34 31 2c  [0]);. .@@ -241,
36d0: 38 20 2b 32 34 32 2c 31 31 20 40 40 0a 20 20 20  8 +242,11 @@.   
36e0: 20 20 61 72 67 63 2d 2d 3b 0a 20 20 20 20 20 61    argc--;.     a
36f0: 72 67 76 2b 2b 3b 0a 20 0a 2d 20 20 20 20 54 63  rgv++;. .-    Tc
3700: 6c 5f 53 65 74 56 61 72 32 45 78 28 69 6e 74 65  l_SetVar2Ex(inte
3710: 72 70 2c 20 22 61 72 67 63 22 2c 20 4e 55 4c 4c  rp, "argc", NULL
3720: 2c 20 54 63 6c 5f 4e 65 77 49 6e 74 4f 62 6a 28  , Tcl_NewIntObj(
3730: 61 72 67 63 29 2c 20 54 43 4c 5f 47 4c 4f 42 41  argc), TCL_GLOBA
3740: 4c 5f 4f 4e 4c 59 29 3b 0a 2d 0a 2b 20 20 20 20  L_ONLY);.-.+    
3750: 6f 62 6a 50 74 72 20 3d 20 54 63 6c 5f 4e 65 77  objPtr = Tcl_New
3760: 49 6e 74 4f 62 6a 28 61 72 67 63 29 3b 0a 2b 20  IntObj(argc);.+ 
3770: 20 20 20 54 63 6c 5f 49 6e 63 72 52 65 66 43 6f     Tcl_IncrRefCo
3780: 75 6e 74 28 6f 62 6a 50 74 72 29 3b 0a 2b 20 20  unt(objPtr);.+  
3790: 20 20 54 63 6c 5f 53 65 74 56 61 72 32 45 78 28    Tcl_SetVar2Ex(
37a0: 69 6e 74 65 72 70 2c 20 22 61 72 67 63 22 2c 20  interp, "argc", 
37b0: 4e 55 4c 4c 2c 20 6f 62 6a 50 74 72 2c 20 54 43  NULL, objPtr, TC
37c0: 4c 5f 47 4c 4f 42 41 4c 5f 4f 4e 4c 59 29 3b 0a  L_GLOBAL_ONLY);.
37d0: 2b 20 20 20 20 54 63 6c 5f 44 65 63 72 52 65 66  +    Tcl_DecrRef
37e0: 43 6f 75 6e 74 28 6f 62 6a 50 74 72 29 3b 0a 2b  Count(objPtr);.+
37f0: 20 20 20 20 0a 20 20 20 20 20 61 72 67 76 50 74      .     argvPt
3800: 72 20 3d 20 54 63 6c 5f 4e 65 77 4c 69 73 74 4f  r = Tcl_NewListO
3810: 62 6a 28 30 2c 20 4e 55 4c 4c 29 3b 0a 20 20 20  bj(0, NULL);.   
3820: 20 20 77 68 69 6c 65 20 28 61 72 67 63 2d 2d 29    while (argc--)
3830: 20 7b 0a 20 09 54 63 6c 5f 44 53 74 72 69 6e 67   {. .Tcl_DString
3840: 20 64 73 3b 0a 40 40 20 2d 32 35 31 2c 37 20 2b   ds;.@@ -251,7 +
3850: 32 35 35 2c 39 20 40 40 0a 20 09 09 54 63 6c 5f  255,9 @@. ..Tcl_
3860: 44 53 74 72 69 6e 67 56 61 6c 75 65 28 26 64 73  DStringValue(&ds
3870: 29 2c 20 54 63 6c 5f 44 53 74 72 69 6e 67 4c 65  ), Tcl_DStringLe
3880: 6e 67 74 68 28 26 64 73 29 29 29 3b 0a 20 09 54  ngth(&ds)));. .T
3890: 63 6c 5f 44 53 74 72 69 6e 67 46 72 65 65 28 26  cl_DStringFree(&
38a0: 64 73 29 3b 0a 20 20 20 20 20 7d 0a 2b 20 20 20  ds);.     }.+   
38b0: 20 54 63 6c 5f 49 6e 63 72 52 65 66 43 6f 75 6e   Tcl_IncrRefCoun
38c0: 74 28 61 72 67 76 50 74 72 29 3b 0a 20 20 20 20  t(argvPtr);.    
38d0: 20 54 63 6c 5f 53 65 74 56 61 72 32 45 78 28 69   Tcl_SetVar2Ex(i
38e0: 6e 74 65 72 70 2c 20 22 61 72 67 76 22 2c 20 4e  nterp, "argv", N
38f0: 55 4c 4c 2c 20 61 72 67 76 50 74 72 2c 20 54 43  ULL, argvPtr, TC
3900: 4c 5f 47 4c 4f 42 41 4c 5f 4f 4e 4c 59 29 3b 0a  L_GLOBAL_ONLY);.
3910: 2b 20 20 20 20 54 63 6c 5f 44 65 63 72 52 65 66  +    Tcl_DecrRef
3920: 43 6f 75 6e 74 28 61 72 67 76 50 74 72 29 3b 0a  Count(argvPtr);.
3930: 20 0a 20 20 20 20 20 2f 2a 0a 20 20 20 20 20 20   .     /*.      
3940: 2a 20 53 65 74 20 74 68 65 20 22 74 63 6c 5f 69  * Set the "tcl_i
3950: 6e 74 65 72 61 63 74 69 76 65 22 20 76 61 72 69  nteractive" vari
3960: 61 62 6c 65 2e 0a 49 6e 64 65 78 3a 20 67 65 6e  able..Index: gen
3970: 65 72 69 63 2f 74 63 6c 50 72 6f 63 2e 63 0a 3d  eric/tclProc.c.=
3980: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
3990: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
39a0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
39b0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
39c0: 3d 3d 0a 52 43 53 20 66 69 6c 65 3a 20 2f 63 76  ==.RCS file: /cv
39d0: 73 72 6f 6f 74 2f 74 63 6c 2f 74 63 6c 2f 67 65  sroot/tcl/tcl/ge
39e0: 6e 65 72 69 63 2f 74 63 6c 50 72 6f 63 2e 63 2c  neric/tclProc.c,
39f0: 76 0a 72 65 74 72 69 65 76 69 6e 67 20 72 65 76  v.retrieving rev
3a00: 69 73 69 6f 6e 20 31 2e 34 34 2e 32 2e 32 0a 64  ision 1.44.2.2.d
3a10: 69 66 66 20 2d 75 20 2d 72 31 2e 34 34 2e 32 2e  iff -u -r1.44.2.
3a20: 32 20 74 63 6c 50 72 6f 63 2e 63 0a 2d 2d 2d 20  2 tclProc.c.--- 
3a30: 67 65 6e 65 72 69 63 2f 74 63 6c 50 72 6f 63 2e  generic/tclProc.
3a40: 63 09 32 20 4d 61 79 20 32 30 30 34 20 32 31 3a  c.2 May 2004 21:
3a50: 30 37 3a 31 36 20 2d 30 30 30 30 09 31 2e 34 34  07:16 -0000.1.44
3a60: 2e 32 2e 32 0a 2b 2b 2b 20 67 65 6e 65 72 69 63  .2.2.+++ generic
3a70: 2f 74 63 6c 50 72 6f 63 2e 63 09 32 33 20 4f 63  /tclProc.c.23 Oc
3a80: 74 20 32 30 30 35 20 32 31 3a 34 37 3a 35 38 20  t 2005 21:47:58 
3a90: 2d 30 30 30 30 0a 40 40 20 2d 31 34 36 34 2c 31  -0000.@@ -1464,1
3aa0: 39 20 2b 31 34 36 34 2c 32 34 20 40 40 0a 20 7b  9 +1464,24 @@. {
3ab0: 0a 20 20 20 20 20 69 6e 74 20 63 6f 64 65 3b 0a  .     int code;.
3ac0: 20 20 20 20 20 63 68 61 72 20 2a 65 72 72 6f 72       char *error
3ad0: 43 6f 64 65 3b 0a 2b 20 20 20 20 54 63 6c 5f 4f  Code;.+    Tcl_O
3ae0: 62 6a 20 2a 6f 62 6a 50 74 72 3b 0a 20 0a 20 20  bj *objPtr;. .  
3af0: 20 20 20 63 6f 64 65 20 3d 20 69 50 74 72 2d 3e     code = iPtr->
3b00: 72 65 74 75 72 6e 43 6f 64 65 3b 0a 20 20 20 20  returnCode;.    
3b10: 20 69 50 74 72 2d 3e 72 65 74 75 72 6e 43 6f 64   iPtr->returnCod
3b20: 65 20 3d 20 54 43 4c 5f 4f 4b 3b 0a 20 20 20 20  e = TCL_OK;.    
3b30: 20 69 66 20 28 63 6f 64 65 20 3d 3d 20 54 43 4c   if (code == TCL
3b40: 5f 45 52 52 4f 52 29 20 7b 0a 20 09 65 72 72 6f  _ERROR) {. .erro
3b50: 72 43 6f 64 65 20 3d 20 28 28 69 50 74 72 2d 3e  rCode = ((iPtr->
3b60: 65 72 72 6f 72 43 6f 64 65 20 21 3d 20 4e 55 4c  errorCode != NUL
3b70: 4c 29 20 3f 20 69 50 74 72 2d 3e 65 72 72 6f 72  L) ? iPtr->error
3b80: 43 6f 64 65 20 3a 20 22 4e 4f 4e 45 22 29 3b 0a  Code : "NONE");.
3b90: 2b 09 6f 62 6a 50 74 72 20 3d 20 54 63 6c 5f 4e  +.objPtr = Tcl_N
3ba0: 65 77 53 74 72 69 6e 67 4f 62 6a 28 65 72 72 6f  ewStringObj(erro
3bb0: 72 43 6f 64 65 2c 20 2d 31 29 3b 0a 2b 09 54 63  rCode, -1);.+.Tc
3bc0: 6c 5f 49 6e 63 72 52 65 66 43 6f 75 6e 74 28 6f  l_IncrRefCount(o
3bd0: 62 6a 50 74 72 29 3b 0a 20 09 54 63 6c 5f 4f 62  bjPtr);. .Tcl_Ob
3be0: 6a 53 65 74 56 61 72 32 28 28 54 63 6c 5f 49 6e  jSetVar2((Tcl_In
3bf0: 74 65 72 70 20 2a 29 20 69 50 74 72 2c 20 69 50  terp *) iPtr, iP
3c00: 74 72 2d 3e 65 78 65 63 45 6e 76 50 74 72 2d 3e  tr->execEnvPtr->
3c10: 65 72 72 6f 72 43 6f 64 65 2c 0a 2d 09 20 20 20  errorCode,.-.   
3c20: 20 20 20 20 20 4e 55 4c 4c 2c 20 54 63 6c 5f 4e       NULL, Tcl_N
3c30: 65 77 53 74 72 69 6e 67 4f 62 6a 28 65 72 72 6f  ewStringObj(erro
3c40: 72 43 6f 64 65 2c 20 2d 31 29 2c 0a 2d 09 09 54  rCode, -1),.-..T
3c50: 43 4c 5f 47 4c 4f 42 41 4c 5f 4f 4e 4c 59 29 3b  CL_GLOBAL_ONLY);
3c60: 0a 2b 09 20 20 20 20 20 20 20 20 4e 55 4c 4c 2c  .+.        NULL,
3c70: 20 6f 62 6a 50 74 72 2c 20 54 43 4c 5f 47 4c 4f   objPtr, TCL_GLO
3c80: 42 41 4c 5f 4f 4e 4c 59 29 3b 0a 2b 09 54 63 6c  BAL_ONLY);.+.Tcl
3c90: 5f 44 65 63 72 52 65 66 43 6f 75 6e 74 28 6f 62  _DecrRefCount(ob
3ca0: 6a 50 74 72 29 3b 0a 20 09 69 50 74 72 2d 3e 66  jPtr);. .iPtr->f
3cb0: 6c 61 67 73 20 7c 3d 20 45 52 52 4f 52 5f 43 4f  lags |= ERROR_CO
3cc0: 44 45 5f 53 45 54 3b 0a 20 09 69 66 20 28 69 50  DE_SET;. .if (iP
3cd0: 74 72 2d 3e 65 72 72 6f 72 49 6e 66 6f 20 21 3d  tr->errorInfo !=
3ce0: 20 4e 55 4c 4c 29 20 7b 0a 2b 09 20 20 20 20 6f   NULL) {.+.    o
3cf0: 62 6a 50 74 72 20 3d 20 54 63 6c 5f 4e 65 77 53  bjPtr = Tcl_NewS
3d00: 74 72 69 6e 67 4f 62 6a 28 69 50 74 72 2d 3e 65  tringObj(iPtr->e
3d10: 72 72 6f 72 49 6e 66 6f 2c 20 2d 31 29 3b 0a 2b  rrorInfo, -1);.+
3d20: 09 20 20 20 20 54 63 6c 5f 49 6e 63 72 52 65 66  .    Tcl_IncrRef
3d30: 43 6f 75 6e 74 28 6f 62 6a 50 74 72 29 3b 0a 20  Count(objPtr);. 
3d40: 09 20 20 20 20 54 63 6c 5f 4f 62 6a 53 65 74 56  .    Tcl_ObjSetV
3d50: 61 72 32 28 28 54 63 6c 5f 49 6e 74 65 72 70 20  ar2((Tcl_Interp 
3d60: 2a 29 20 69 50 74 72 2c 20 69 50 74 72 2d 3e 65  *) iPtr, iPtr->e
3d70: 78 65 63 45 6e 76 50 74 72 2d 3e 65 72 72 6f 72  xecEnvPtr->error
3d80: 49 6e 66 6f 2c 0a 2d 09 20 20 20 20 20 20 20 20  Info,.-.        
3d90: 20 20 20 20 4e 55 4c 4c 2c 20 54 63 6c 5f 4e 65      NULL, Tcl_Ne
3da0: 77 53 74 72 69 6e 67 4f 62 6a 28 69 50 74 72 2d  wStringObj(iPtr-
3db0: 3e 65 72 72 6f 72 49 6e 66 6f 2c 20 2d 31 29 2c  >errorInfo, -1),
3dc0: 0a 2d 09 09 20 20 20 20 54 43 4c 5f 47 4c 4f 42  .-..    TCL_GLOB
3dd0: 41 4c 5f 4f 4e 4c 59 29 3b 0a 2b 09 09 20 20 20  AL_ONLY);.+..   
3de0: 20 4e 55 4c 4c 2c 20 6f 62 6a 50 74 72 2c 20 54   NULL, objPtr, T
3df0: 43 4c 5f 47 4c 4f 42 41 4c 5f 4f 4e 4c 59 29 3b  CL_GLOBAL_ONLY);
3e00: 0a 2b 09 20 20 20 20 54 63 6c 5f 44 65 63 72 52  .+.    Tcl_DecrR
3e10: 65 66 43 6f 75 6e 74 28 6f 62 6a 50 74 72 29 3b  efCount(objPtr);
3e20: 0a 20 09 20 20 20 20 69 50 74 72 2d 3e 66 6c 61  . .    iPtr->fla
3e30: 67 73 20 7c 3d 20 45 52 52 5f 49 4e 5f 50 52 4f  gs |= ERR_IN_PRO
3e40: 47 52 45 53 53 3b 0a 20 09 7d 0a 20 20 20 20 20  GRESS;. .}.     
3e50: 7d 0a 49 6e 64 65 78 3a 20 67 65 6e 65 72 69 63  }.Index: generic
3e60: 2f 74 63 6c 53 63 61 6e 2e 63 0a 3d 3d 3d 3d 3d  /tclScan.c.=====
3e70: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
3e80: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
3e90: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
3ea0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 52  ==============.R
3eb0: 43 53 20 66 69 6c 65 3a 20 2f 63 76 73 72 6f 6f  CS file: /cvsroo
3ec0: 74 2f 74 63 6c 2f 74 63 6c 2f 67 65 6e 65 72 69  t/tcl/tcl/generi
3ed0: 63 2f 74 63 6c 53 63 61 6e 2e 63 2c 76 0a 72 65  c/tclScan.c,v.re
3ee0: 74 72 69 65 76 69 6e 67 20 72 65 76 69 73 69 6f  trieving revisio
3ef0: 6e 20 31 2e 31 32 2e 32 2e 31 0a 64 69 66 66 20  n 1.12.2.1.diff 
3f00: 2d 75 20 2d 72 31 2e 31 32 2e 32 2e 31 20 74 63  -u -r1.12.2.1 tc
3f10: 6c 53 63 61 6e 2e 63 0a 2d 2d 2d 20 67 65 6e 65  lScan.c.--- gene
3f20: 72 69 63 2f 74 63 6c 53 63 61 6e 2e 63 09 31 39  ric/tclScan.c.19
3f30: 20 41 75 67 20 32 30 30 34 20 32 31 3a 31 32 3a   Aug 2004 21:12:
3f40: 30 34 20 2d 30 30 30 30 09 31 2e 31 32 2e 32 2e  04 -0000.1.12.2.
3f50: 31 0a 2b 2b 2b 20 67 65 6e 65 72 69 63 2f 74 63  1.+++ generic/tc
3f60: 6c 53 63 61 6e 2e 63 09 32 33 20 4f 63 74 20 32  lScan.c.23 Oct 2
3f70: 30 30 35 20 32 31 3a 34 37 3a 35 38 20 2d 30 30  005 21:47:58 -00
3f80: 30 30 0a 40 40 20 2d 31 31 36 38 2c 31 35 20 2b  00.@@ -1168,15 +
3f90: 31 31 36 38 2c 31 37 20 40 40 0a 20 09 20 2a 2f  1168,17 @@. . */
3fa0: 0a 20 09 66 6f 72 20 28 69 20 3d 20 30 3b 20 69  . .for (i = 0; i
3fb0: 20 3c 20 74 6f 74 61 6c 56 61 72 73 3b 20 69 2b   < totalVars; i+
3fc0: 2b 29 20 7b 0a 20 09 20 20 20 20 69 66 20 28 6f  +) {. .    if (o
3fd0: 62 6a 73 5b 69 5d 20 21 3d 20 4e 55 4c 4c 29 20  bjs[i] != NULL) 
3fe0: 7b 0a 2b 09 09 54 63 6c 5f 4f 62 6a 20 2a 74 6d  {.+..Tcl_Obj *tm
3ff0: 70 50 74 72 3b 0a 2b 09 09 0a 20 09 09 72 65 73  pPtr;.+... ..res
4000: 75 6c 74 2b 2b 3b 0a 2d 09 09 69 66 20 28 54 63  ult++;.-..if (Tc
4010: 6c 5f 4f 62 6a 53 65 74 56 61 72 32 28 69 6e 74  l_ObjSetVar2(int
4020: 65 72 70 2c 20 6f 62 6a 76 5b 69 2b 33 5d 2c 20  erp, objv[i+3], 
4030: 4e 55 4c 4c 2c 0a 2d 09 09 09 6f 62 6a 73 5b 69  NULL,.-...objs[i
4040: 5d 2c 20 30 29 20 3d 3d 20 4e 55 4c 4c 29 20 7b  ], 0) == NULL) {
4050: 0a 2b 09 09 74 6d 70 50 74 72 20 3d 20 54 63 6c  .+..tmpPtr = Tcl
4060: 5f 4f 62 6a 53 65 74 56 61 72 32 28 69 6e 74 65  _ObjSetVar2(inte
4070: 72 70 2c 20 6f 62 6a 76 5b 69 2b 33 5d 2c 20 4e  rp, objv[i+3], N
4080: 55 4c 4c 2c 20 6f 62 6a 73 5b 69 5d 2c 20 30 29  ULL, objs[i], 0)
4090: 3b 0a 2b 09 09 54 63 6c 5f 44 65 63 72 52 65 66  ;.+..Tcl_DecrRef
40a0: 43 6f 75 6e 74 28 6f 62 6a 73 5b 69 5d 29 3b 0a  Count(objs[i]);.
40b0: 2b 09 09 69 66 20 28 74 6d 70 50 74 72 20 3d 3d  +..if (tmpPtr ==
40c0: 20 4e 55 4c 4c 29 20 7b 0a 20 09 09 20 20 20 20   NULL) {. ..    
40d0: 54 63 6c 5f 41 70 70 65 6e 64 53 74 72 69 6e 67  Tcl_AppendString
40e0: 73 54 6f 4f 62 6a 28 54 63 6c 5f 47 65 74 4f 62  sToObj(Tcl_GetOb
40f0: 6a 52 65 73 75 6c 74 28 69 6e 74 65 72 70 29 2c  jResult(interp),
4100: 0a 20 09 09 09 20 20 20 20 22 63 6f 75 6c 64 6e  . ...    "couldn
4110: 27 74 20 73 65 74 20 76 61 72 69 61 62 6c 65 20  't set variable 
4120: 5c 22 22 2c 0a 20 09 09 09 20 20 20 20 54 63 6c  \"",. ...    Tcl
4130: 5f 47 65 74 53 74 72 69 6e 67 28 6f 62 6a 76 5b  _GetString(objv[
4140: 69 2b 33 5d 29 2c 20 22 5c 22 22 2c 20 28 63 68  i+3]), "\"", (ch
4150: 61 72 20 2a 29 20 4e 55 4c 4c 29 3b 0a 20 09 09  ar *) NULL);. ..
4160: 20 20 20 20 63 6f 64 65 20 3d 20 54 43 4c 5f 45      code = TCL_E
4170: 52 52 4f 52 3b 0a 20 09 09 7d 0a 2d 09 09 54 63  RROR;. ..}.-..Tc
4180: 6c 5f 44 65 63 72 52 65 66 43 6f 75 6e 74 28 6f  l_DecrRefCount(o
4190: 62 6a 73 5b 69 5d 29 3b 0a 20 09 20 20 20 20 7d  bjs[i]);. .    }
41a0: 0a 20 09 7d 0a 20 20 20 20 20 7d 20 65 6c 73 65  . .}.     } else
41b0: 20 7b 0a 49 6e 64 65 78 3a 20 67 65 6e 65 72 69   {.Index: generi
41c0: 63 2f 74 63 6c 54 65 73 74 2e 63 0a 3d 3d 3d 3d  c/tclTest.c.====
41d0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
41e0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
41f0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
4200: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a  ===============.
4210: 52 43 53 20 66 69 6c 65 3a 20 2f 63 76 73 72 6f  RCS file: /cvsro
4220: 6f 74 2f 74 63 6c 2f 74 63 6c 2f 67 65 6e 65 72  ot/tcl/tcl/gener
4230: 69 63 2f 74 63 6c 54 65 73 74 2e 63 2c 76 0a 72  ic/tclTest.c,v.r
4240: 65 74 72 69 65 76 69 6e 67 20 72 65 76 69 73 69  etrieving revisi
4250: 6f 6e 20 31 2e 36 32 2e 32 2e 39 0a 64 69 66 66  on 1.62.2.9.diff
4260: 20 2d 75 20 2d 72 31 2e 36 32 2e 32 2e 39 20 74   -u -r1.62.2.9 t
4270: 63 6c 54 65 73 74 2e 63 0a 2d 2d 2d 20 67 65 6e  clTest.c.--- gen
4280: 65 72 69 63 2f 74 63 6c 54 65 73 74 2e 63 09 31  eric/tclTest.c.1
4290: 36 20 41 75 67 20 32 30 30 34 20 31 34 3a 31 38  6 Aug 2004 14:18
42a0: 3a 32 35 20 2d 30 30 30 30 09 31 2e 36 32 2e 32  :25 -0000.1.62.2
42b0: 2e 39 0a 2b 2b 2b 20 67 65 6e 65 72 69 63 2f 74  .9.+++ generic/t
42c0: 63 6c 54 65 73 74 2e 63 09 32 33 20 4f 63 74 20  clTest.c.23 Oct 
42d0: 32 30 30 35 20 32 31 3a 34 38 3a 30 30 20 2d 30  2005 21:48:00 -0
42e0: 30 30 30 0a 40 40 20 2d 33 34 33 37 2c 39 20 2b  000.@@ -3437,9 +
42f0: 33 34 33 37 2c 31 30 20 40 40 0a 20 09 09 09 69  3437,10 @@. ...i
4300: 6e 66 6f 2e 6d 61 74 63 68 65 73 5b 69 69 5d 2e  nfo.matches[ii].
4310: 65 6e 64 20 2d 20 31 29 3b 0a 20 09 20 20 20 20  end - 1);. .    
4320: 7d 0a 20 09 7d 0a 2b 09 54 63 6c 5f 49 6e 63 72  }. .}.+.Tcl_Incr
4330: 52 65 66 43 6f 75 6e 74 28 6e 65 77 50 74 72 29  RefCount(newPtr)
4340: 3b 0a 20 09 76 61 6c 75 65 50 74 72 20 3d 20 54  ;. .valuePtr = T
4350: 63 6c 5f 4f 62 6a 53 65 74 56 61 72 32 28 69 6e  cl_ObjSetVar2(in
4360: 74 65 72 70 2c 20 76 61 72 50 74 72 2c 20 4e 55  terp, varPtr, NU
4370: 4c 4c 2c 20 6e 65 77 50 74 72 2c 20 30 29 3b 0a  LL, newPtr, 0);.
4380: 2b 09 54 63 6c 5f 44 65 63 72 52 65 66 43 6f 75  +.Tcl_DecrRefCou
4390: 6e 74 28 6e 65 77 50 74 72 29 3b 0a 20 09 69 66  nt(newPtr);. .if
43a0: 20 28 76 61 6c 75 65 50 74 72 20 3d 3d 20 4e 55   (valuePtr == NU
43b0: 4c 4c 29 20 7b 0a 2d 09 20 20 20 20 54 63 6c 5f  LL) {.-.    Tcl_
43c0: 44 65 63 72 52 65 66 43 6f 75 6e 74 28 6e 65 77  DecrRefCount(new
43d0: 50 74 72 29 3b 0a 20 09 20 20 20 20 54 63 6c 5f  Ptr);. .    Tcl_
43e0: 41 70 70 65 6e 64 52 65 73 75 6c 74 28 69 6e 74  AppendResult(int
43f0: 65 72 70 2c 20 22 63 6f 75 6c 64 6e 27 74 20 73  erp, "couldn't s
4400: 65 74 20 76 61 72 69 61 62 6c 65 20 5c 22 22 2c  et variable \"",
4410: 0a 20 09 09 20 20 20 20 54 63 6c 5f 47 65 74 53  . ..    Tcl_GetS
4420: 74 72 69 6e 67 28 76 61 72 50 74 72 29 2c 20 22  tring(varPtr), "
4430: 5c 22 22 2c 20 28 63 68 61 72 20 2a 29 20 4e 55  \"", (char *) NU
4440: 4c 4c 29 3b 0a 20 09 20 20 20 20 72 65 74 75 72  LL);. .    retur
4450: 6e 20 54 43 4c 5f 45 52 52 4f 52 3b 0a 49 6e 64  n TCL_ERROR;.Ind
4460: 65 78 3a 20 67 65 6e 65 72 69 63 2f 74 63 6c 56  ex: generic/tclV
4470: 61 72 2e 63 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ar.c.===========
4480: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
4490: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
44a0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
44b0: 3d 3d 3d 3d 3d 3d 3d 3d 0a 52 43 53 20 66 69 6c  ========.RCS fil
44c0: 65 3a 20 2f 63 76 73 72 6f 6f 74 2f 74 63 6c 2f  e: /cvsroot/tcl/
44d0: 74 63 6c 2f 67 65 6e 65 72 69 63 2f 74 63 6c 56  tcl/generic/tclV
44e0: 61 72 2e 63 2c 76 0a 72 65 74 72 69 65 76 69 6e  ar.c,v.retrievin
44f0: 67 20 72 65 76 69 73 69 6f 6e 20 31 2e 36 39 2e  g revision 1.69.
4500: 32 2e 38 0a 64 69 66 66 20 2d 75 20 2d 72 31 2e  2.8.diff -u -r1.
4510: 36 39 2e 32 2e 38 20 74 63 6c 56 61 72 2e 63 0a  69.2.8 tclVar.c.
4520: 2d 2d 2d 20 67 65 6e 65 72 69 63 2f 74 63 6c 56  --- generic/tclV
4530: 61 72 2e 63 09 31 20 4f 63 74 20 32 30 30 34 20  ar.c.1 Oct 2004 
4540: 30 30 3a 30 39 3a 33 36 20 2d 30 30 30 30 09 31  00:09:36 -0000.1
4550: 2e 36 39 2e 32 2e 38 0a 2b 2b 2b 20 67 65 6e 65  .69.2.8.+++ gene
4560: 72 69 63 2f 74 63 6c 56 61 72 2e 63 09 32 33 20  ric/tclVar.c.23 
4570: 4f 63 74 20 32 30 30 35 20 32 31 3a 34 38 3a 30  Oct 2005 21:48:0
4580: 34 20 2d 30 30 30 30 0a 40 40 20 2d 32 36 38 36  4 -0000.@@ -2686
4590: 2c 37 20 2b 32 36 38 36 2c 37 20 40 40 0a 20 20  ,7 +2686,7 @@.  
45a0: 20 20 20 54 63 6c 5f 4f 62 6a 20 2a 76 61 72 56     Tcl_Obj *varV
45b0: 61 6c 75 65 50 74 72 2c 20 2a 6e 65 77 56 61 6c  aluePtr, *newVal
45c0: 75 65 50 74 72 3b 0a 20 20 20 20 20 72 65 67 69  uePtr;.     regi
45d0: 73 74 65 72 20 4c 69 73 74 20 2a 6c 69 73 74 52  ster List *listR
45e0: 65 70 50 74 72 3b 0a 20 20 20 20 20 72 65 67 69  epPtr;.     regi
45f0: 73 74 65 72 20 54 63 6c 5f 4f 62 6a 20 2a 2a 65  ster Tcl_Obj **e
4600: 6c 65 6d 50 74 72 73 3b 0a 2d 20 20 20 20 69 6e  lemPtrs;.-    in
4610: 74 20 6e 75 6d 45 6c 65 6d 73 2c 20 6e 75 6d 52  t numElems, numR
4620: 65 71 75 69 72 65 64 2c 20 63 72 65 61 74 65 64  equired, created
4630: 4e 65 77 4f 62 6a 2c 20 63 72 65 61 74 65 56 61  NewObj, createVa
4640: 72 2c 20 69 2c 20 6a 3b 0a 2b 20 20 20 20 69 6e  r, i, j;.+    in
4650: 74 20 6e 75 6d 45 6c 65 6d 73 2c 20 6e 75 6d 52  t numElems, numR
4660: 65 71 75 69 72 65 64 2c 20 63 72 65 61 74 65 64  equired, created
4670: 4e 65 77 4f 62 6a 2c 20 69 2c 20 6a 3b 0a 20 20  NewObj, i, j;.  
4680: 20 20 20 56 61 72 20 2a 76 61 72 50 74 72 2c 20     Var *varPtr, 
4690: 2a 61 72 72 61 79 50 74 72 3b 0a 20 20 20 20 20  *arrayPtr;.     
46a0: 63 68 61 72 20 2a 70 61 72 74 31 3b 0a 20 0a 40  char *part1;. .@
46b0: 40 20 2d 32 37 30 33 2c 31 30 20 2b 32 37 30 33  @ -2703,10 +2703
46c0: 2c 31 31 20 40 40 0a 20 09 20 20 20 20 20 2a 2f  ,11 @@. .     */
46d0: 0a 20 09 20 20 20 20 0a 20 09 20 20 20 20 76 61  . .    . .    va
46e0: 72 56 61 6c 75 65 50 74 72 20 3d 20 54 63 6c 5f  rValuePtr = Tcl_
46f0: 4e 65 77 4f 62 6a 28 29 3b 0a 2b 09 20 20 20 20  NewObj();.+.    
4700: 54 63 6c 5f 49 6e 63 72 52 65 66 43 6f 75 6e 74  Tcl_IncrRefCount
4710: 28 76 61 72 56 61 6c 75 65 50 74 72 29 3b 0a 20  (varValuePtr);. 
4720: 09 20 20 20 20 6e 65 77 56 61 6c 75 65 50 74 72  .    newValuePtr
4730: 20 3d 20 54 63 6c 5f 4f 62 6a 53 65 74 56 61 72   = Tcl_ObjSetVar
4740: 32 28 69 6e 74 65 72 70 2c 20 6f 62 6a 76 5b 31  2(interp, objv[1
4750: 5d 2c 20 4e 55 4c 4c 2c 20 76 61 72 56 61 6c 75  ], NULL, varValu
4760: 65 50 74 72 2c 0a 20 09 09 20 20 20 20 54 43 4c  ePtr,. ..    TCL
4770: 5f 4c 45 41 56 45 5f 45 52 52 5f 4d 53 47 29 3b  _LEAVE_ERR_MSG);
4780: 0a 2b 09 20 20 20 20 54 63 6c 5f 44 65 63 72 52  .+.    Tcl_DecrR
4790: 65 66 43 6f 75 6e 74 28 76 61 72 56 61 6c 75 65  efCount(varValue
47a0: 50 74 72 29 3b 0a 20 09 20 20 20 20 69 66 20 28  Ptr);. .    if (
47b0: 6e 65 77 56 61 6c 75 65 50 74 72 20 3d 3d 20 4e  newValuePtr == N
47c0: 55 4c 4c 29 20 7b 0a 2d 09 09 54 63 6c 5f 44 65  ULL) {.-..Tcl_De
47d0: 63 72 52 65 66 43 6f 75 6e 74 28 76 61 72 56 61  crRefCount(varVa
47e0: 6c 75 65 50 74 72 29 3b 20 2f 2a 20 66 72 65 65  luePtr); /* free
47f0: 20 75 6e 6e 65 65 64 65 64 20 6f 62 6a 65 63 74   unneeded object
4800: 20 2a 2f 0a 20 09 09 72 65 74 75 72 6e 20 54 43   */. ..return TC
4810: 4c 5f 45 52 52 4f 52 3b 0a 20 09 20 20 20 20 7d  L_ERROR;. .    }
4820: 0a 20 09 7d 0a 40 40 20 2d 32 37 31 39 2c 31 32  . .}.@@ -2719,12
4830: 20 2b 32 37 32 30 2c 37 20 40 40 0a 20 09 20 2a   +2720,7 @@. . *
4840: 20 74 68 65 20 76 61 72 69 61 62 6c 65 20 77 69   the variable wi
4850: 6c 6c 20 6e 6f 77 20 65 61 63 68 20 6f 6e 6c 79  ll now each only
4860: 20 62 65 20 63 61 6c 6c 65 64 20 6f 6e 63 65 2e   be called once.
4870: 20 41 6c 73 6f 2c 20 69 66 20 74 68 65 0a 20 09   Also, if the. .
4880: 20 2a 20 76 61 72 69 61 62 6c 65 27 73 20 6f 6c   * variable's ol
4890: 64 20 76 61 6c 75 65 20 69 73 20 75 6e 73 68 61  d value is unsha
48a0: 72 65 64 20 77 65 20 6d 6f 64 69 66 79 20 69 74  red we modify it
48b0: 20 64 69 72 65 63 74 6c 79 2c 20 6f 74 68 65 72   directly, other
48c0: 77 69 73 65 0a 20 09 20 2a 20 77 65 20 63 72 65  wise. . * we cre
48d0: 61 74 65 20 61 20 6e 65 77 20 63 6f 70 79 20 74  ate a new copy t
48e0: 6f 20 6d 6f 64 69 66 79 3a 20 74 68 69 73 20 69  o modify: this i
48f0: 73 20 22 63 6f 70 79 20 6f 6e 20 77 72 69 74 65  s "copy on write
4900: 22 2e 0a 2d 09 20 2a 2f 0a 2d 0a 2d 09 63 72 65  "..-. */.-.-.cre
4910: 61 74 65 64 4e 65 77 4f 62 6a 20 3d 20 30 3b 0a  atedNewObj = 0;.
4920: 2d 09 63 72 65 61 74 65 56 61 72 20 3d 20 31 3b  -.createVar = 1;
4930: 0a 2d 0a 2d 09 2f 2a 0a 2b 09 20 2a 0a 20 09 20  .-.-./*.+. *. . 
4940: 2a 20 55 73 65 20 74 68 65 20 54 43 4c 5f 54 52  * Use the TCL_TR
4950: 41 43 45 5f 52 45 41 44 53 20 66 6c 61 67 20 74  ACE_READS flag t
4960: 6f 20 65 6e 73 75 72 65 20 74 68 61 74 20 69 66  o ensure that if
4970: 20 77 65 20 68 61 76 65 20 61 6e 0a 20 09 20 2a   we have an. . *
4980: 20 61 72 72 61 79 20 77 69 74 68 20 6e 6f 20 65   array with no e
4990: 6c 65 6d 65 6e 74 73 20 73 65 74 20 79 65 74 2c  lements set yet,
49a0: 20 62 75 74 20 77 69 74 68 20 61 20 72 65 61 64   but with a read
49b0: 20 74 72 61 63 65 20 6f 6e 20 69 74 2c 0a 20 09   trace on it,. .
49c0: 20 2a 20 77 65 20 77 69 6c 6c 20 63 72 65 61 74   * we will creat
49d0: 65 20 74 68 65 20 76 61 72 69 61 62 6c 65 20 61  e the variable a
49e0: 6e 64 20 67 65 74 20 72 65 61 64 20 74 72 61 63  nd get read trac
49f0: 65 73 20 74 72 69 67 67 65 72 65 64 2e 0a 40 40  es triggered..@@
4a00: 20 2d 32 37 35 30 2c 36 20 2b 32 37 34 36 2c 37   -2750,6 +2746,7
4a10: 20 40 40 0a 20 09 20 20 20 20 61 72 72 61 79 50   @@. .    arrayP
4a20: 74 72 2d 3e 72 65 66 43 6f 75 6e 74 2d 2d 3b 0a  tr->refCount--;.
4a30: 20 09 7d 0a 20 0a 2b 09 63 72 65 61 74 65 64 4e   .}. .+.createdN
4a40: 65 77 4f 62 6a 20 3d 20 30 3b 0a 20 09 69 66 20  ewObj = 0;. .if 
4a50: 28 76 61 72 56 61 6c 75 65 50 74 72 20 3d 3d 20  (varValuePtr == 
4a60: 4e 55 4c 4c 29 20 7b 0a 20 09 20 20 20 20 2f 2a  NULL) {. .    /*
4a70: 0a 20 09 20 20 20 20 20 2a 20 57 65 20 63 6f 75  . .     * We cou
4a80: 6c 64 6e 27 74 20 72 65 61 64 20 74 68 65 20 6f  ldn't read the o
4a90: 6c 64 20 76 61 6c 75 65 3a 20 65 69 74 68 65 72  ld value: either
4aa0: 20 74 68 65 20 76 61 72 20 64 6f 65 73 6e 27 74   the var doesn't
4ab0: 20 79 65 74 0a 40 40 20 2d 32 37 35 37 2c 37 20   yet.@@ -2757,7 
4ac0: 2b 32 37 35 34 2c 36 20 40 40 0a 20 09 20 20 20  +2754,6 @@. .   
4ad0: 20 20 2a 20 63 72 65 61 74 65 20 69 74 20 77 69    * create it wi
4ae0: 74 68 20 54 63 6c 5f 4f 62 6a 53 65 74 56 61 72  th Tcl_ObjSetVar
4af0: 32 20 62 65 6c 6f 77 2e 0a 20 09 20 20 20 20 20  2 below.. .     
4b00: 2a 2f 0a 20 09 20 20 20 20 0a 2d 09 20 20 20 20  */. .    .-.    
4b10: 63 72 65 61 74 65 56 61 72 20 3d 20 28 54 63 6c  createVar = (Tcl
4b20: 49 73 56 61 72 55 6e 64 65 66 69 6e 65 64 28 76  IsVarUndefined(v
4b30: 61 72 50 74 72 29 29 3b 0a 20 09 20 20 20 20 76  arPtr));. .    v
4b40: 61 72 56 61 6c 75 65 50 74 72 20 3d 20 54 63 6c  arValuePtr = Tcl
4b50: 5f 4e 65 77 4f 62 6a 28 29 3b 0a 20 09 20 20 20  _NewObj();. .   
4b60: 20 63 72 65 61 74 65 64 4e 65 77 4f 62 6a 20 3d   createdNewObj =
4b70: 20 31 3b 0a 20 09 7d 20 65 6c 73 65 20 69 66 20   1;. .} else if 
4b80: 28 54 63 6c 5f 49 73 53 68 61 72 65 64 28 76 61  (Tcl_IsShared(va
4b90: 72 56 61 6c 75 65 50 74 72 29 29 20 7b 09 0a 40  rValuePtr)) {..@
4ba0: 40 20 2d 32 38 32 34 2c 31 32 20 2b 32 38 32 30  @ -2824,12 +2820
4bb0: 2c 31 31 20 40 40 0a 20 09 20 2a 20 77 61 73 20  ,11 @@. . * was 
4bc0: 6e 65 77 20 61 6e 64 20 77 65 20 64 69 64 6e 27  new and we didn'
4bd0: 74 20 63 72 65 61 74 65 20 74 68 65 20 76 61 72  t create the var
4be0: 69 61 62 6c 65 2e 0a 20 09 20 2a 2f 0a 20 09 0a  iable.. . */. ..
4bf0: 2b 09 54 63 6c 5f 49 6e 63 72 52 65 66 43 6f 75  +.Tcl_IncrRefCou
4c00: 6e 74 28 76 61 72 56 61 6c 75 65 50 74 72 29 3b  nt(varValuePtr);
4c10: 0a 20 09 6e 65 77 56 61 6c 75 65 50 74 72 20 3d  . .newValuePtr =
4c20: 20 54 63 6c 50 74 72 53 65 74 56 61 72 28 69 6e   TclPtrSetVar(in
4c30: 74 65 72 70 2c 20 76 61 72 50 74 72 2c 20 61 72  terp, varPtr, ar
4c40: 72 61 79 50 74 72 2c 20 70 61 72 74 31 2c 20 4e  rayPtr, part1, N
4c50: 55 4c 4c 2c 20 0a 20 09 20 20 20 20 20 20 20 20  ULL, . .        
4c60: 20 20 20 20 76 61 72 56 61 6c 75 65 50 74 72 2c      varValuePtr,
4c70: 20 54 43 4c 5f 4c 45 41 56 45 5f 45 52 52 5f 4d   TCL_LEAVE_ERR_M
4c80: 53 47 29 3b 09 0a 2b 09 54 63 6c 5f 44 65 63 72  SG);..+.Tcl_Decr
4c90: 52 65 66 43 6f 75 6e 74 28 76 61 72 56 61 6c 75  RefCount(varValu
4ca0: 65 50 74 72 29 3b 0a 20 09 69 66 20 28 6e 65 77  ePtr);. .if (new
4cb0: 56 61 6c 75 65 50 74 72 20 3d 3d 20 4e 55 4c 4c  ValuePtr == NULL
4cc0: 29 20 7b 0a 2d 09 20 20 20 20 69 66 20 28 63 72  ) {.-.    if (cr
4cd0: 65 61 74 65 64 4e 65 77 4f 62 6a 20 26 26 20 21  eatedNewObj && !
4ce0: 63 72 65 61 74 65 56 61 72 29 20 7b 0a 2d 09 09  createVar) {.-..
4cf0: 54 63 6c 5f 44 65 63 72 52 65 66 43 6f 75 6e 74  Tcl_DecrRefCount
4d00: 28 76 61 72 56 61 6c 75 65 50 74 72 29 3b 20 2f  (varValuePtr); /
4d10: 2a 20 66 72 65 65 20 75 6e 6e 65 65 64 65 64 20  * free unneeded 
4d20: 6f 62 6a 20 2a 2f 0a 2d 09 20 20 20 20 7d 0a 20  obj */.-.    }. 
4d30: 09 20 20 20 20 72 65 74 75 72 6e 20 54 43 4c 5f  .    return TCL_
4d40: 45 52 52 4f 52 3b 0a 20 09 7d 0a 20 20 20 20 20  ERROR;. .}.     
4d50: 7d 0a 49 6e 64 65 78 3a 20 6d 61 63 2f 74 63 6c  }.Index: mac/tcl
4d60: 4d 61 63 49 6e 69 74 2e 63 0a 3d 3d 3d 3d 3d 3d  MacInit.c.======
4d70: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
4d80: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
4d90: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
4da0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 52 43  =============.RC
4db0: 53 20 66 69 6c 65 3a 20 2f 63 76 73 72 6f 6f 74  S file: /cvsroot
4dc0: 2f 74 63 6c 2f 74 63 6c 2f 6d 61 63 2f 41 74 74  /tcl/tcl/mac/Att
4dd0: 69 63 2f 74 63 6c 4d 61 63 49 6e 69 74 2e 63 2c  ic/tclMacInit.c,
4de0: 76 0a 72 65 74 72 69 65 76 69 6e 67 20 72 65 76  v.retrieving rev
4df0: 69 73 69 6f 6e 20 31 2e 39 2e 32 2e 31 0a 64 69  ision 1.9.2.1.di
4e00: 66 66 20 2d 75 20 2d 72 31 2e 39 2e 32 2e 31 20  ff -u -r1.9.2.1 
4e10: 74 63 6c 4d 61 63 49 6e 69 74 2e 63 0a 2d 2d 2d  tclMacInit.c.---
4e20: 20 6d 61 63 2f 74 63 6c 4d 61 63 49 6e 69 74 2e   mac/tclMacInit.
4e30: 63 09 32 39 20 4d 61 72 20 32 30 30 34 20 31 38  c.29 Mar 2004 18
4e40: 3a 34 39 3a 33 36 20 2d 30 30 30 30 09 31 2e 39  :49:36 -0000.1.9
4e50: 2e 32 2e 31 0a 2b 2b 2b 20 6d 61 63 2f 74 63 6c  .2.1.+++ mac/tcl
4e60: 4d 61 63 49 6e 69 74 2e 63 09 32 33 20 4f 63 74  MacInit.c.23 Oct
4e70: 20 32 30 30 35 20 32 31 3a 34 38 3a 30 34 20 2d   2005 21:48:04 -
4e80: 30 30 30 30 0a 40 40 20 2d 37 31 32 2c 37 20 2b  0000.@@ -712,7 +
4e90: 37 31 32 2c 39 20 40 40 0a 20 20 20 20 20 69 66  712,9 @@.     if
4ea0: 20 28 70 61 74 68 50 74 72 20 3d 3d 20 4e 55 4c   (pathPtr == NUL
4eb0: 4c 29 20 7b 0a 20 09 70 61 74 68 50 74 72 20 3d  L) {. .pathPtr =
4ec0: 20 54 63 6c 5f 4e 65 77 4f 62 6a 28 29 3b 0a 20   Tcl_NewObj();. 
4ed0: 20 20 20 20 7d 0a 2b 20 20 20 20 54 63 6c 5f 49      }.+    Tcl_I
4ee0: 6e 63 72 52 65 66 43 6f 75 6e 74 28 70 61 74 68  ncrRefCount(path
4ef0: 50 74 72 29 3b 0a 20 20 20 20 20 54 63 6c 5f 53  Ptr);.     Tcl_S
4f00: 65 74 56 61 72 32 45 78 28 69 6e 74 65 72 70 2c  etVar2Ex(interp,
4f10: 20 22 61 75 74 6f 5f 70 61 74 68 22 2c 20 4e 55   "auto_path", NU
4f20: 4c 4c 2c 20 70 61 74 68 50 74 72 2c 20 54 43 4c  LL, pathPtr, TCL
4f30: 5f 47 4c 4f 42 41 4c 5f 4f 4e 4c 59 29 3b 0a 2b  _GLOBAL_ONLY);.+
4f40: 20 20 20 20 54 63 6c 5f 44 65 63 72 52 65 66 43      Tcl_DecrRefC
4f50: 6f 75 6e 74 28 70 61 74 68 50 74 72 29 3b 0a 20  ount(pathPtr);. 
4f60: 20 20 20 20 72 65 74 75 72 6e 20 54 63 6c 5f 45      return Tcl_E
4f70: 76 61 6c 28 69 6e 74 65 72 70 2c 20 69 6e 69 74  val(interp, init
4f80: 43 6d 64 29 3b 0a 20 7d 0a 20 0c 0a 49 6e 64 65  Cmd);. }. ..Inde
4f90: 78 3a 20 75 6e 69 78 2f 74 63 6c 55 6e 69 78 49  x: unix/tclUnixI
4fa0: 6e 69 74 2e 63 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  nit.c.==========
4fb0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
4fc0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
4fd0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
4fe0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 52 43 53 20 66 69  =========.RCS fi
4ff0: 6c 65 3a 20 2f 63 76 73 72 6f 6f 74 2f 74 63 6c  le: /cvsroot/tcl
5000: 2f 74 63 6c 2f 75 6e 69 78 2f 74 63 6c 55 6e 69  /tcl/unix/tclUni
5010: 78 49 6e 69 74 2e 63 2c 76 0a 72 65 74 72 69 65  xInit.c,v.retrie
5020: 76 69 6e 67 20 72 65 76 69 73 69 6f 6e 20 31 2e  ving revision 1.
5030: 33 34 2e 32 2e 39 0a 64 69 66 66 20 2d 75 20 2d  34.2.9.diff -u -
5040: 72 31 2e 33 34 2e 32 2e 39 20 74 63 6c 55 6e 69  r1.34.2.9 tclUni
5050: 78 49 6e 69 74 2e 63 0a 2d 2d 2d 20 75 6e 69 78  xInit.c.--- unix
5060: 2f 74 63 6c 55 6e 69 78 49 6e 69 74 2e 63 09 35  /tclUnixInit.c.5
5070: 20 41 75 67 20 32 30 30 35 20 32 30 3a 34 38 3a   Aug 2005 20:48:
5080: 31 39 20 2d 30 30 30 30 09 31 2e 33 34 2e 32 2e  19 -0000.1.34.2.
5090: 39 0a 2b 2b 2b 20 75 6e 69 78 2f 74 63 6c 55 6e  9.+++ unix/tclUn
50a0: 69 78 49 6e 69 74 2e 63 09 32 33 20 4f 63 74 20  ixInit.c.23 Oct 
50b0: 32 30 30 35 20 32 31 3a 34 38 3a 30 35 20 2d 30  2005 21:48:05 -0
50c0: 30 30 30 0a 40 40 20 2d 39 36 33 2c 37 20 2b 39  000.@@ -963,7 +9
50d0: 36 33 2c 39 20 40 40 0a 20 20 20 20 20 69 66 20  63,9 @@.     if 
50e0: 28 70 61 74 68 50 74 72 20 3d 3d 20 4e 55 4c 4c  (pathPtr == NULL
50f0: 29 20 7b 0a 20 09 70 61 74 68 50 74 72 20 3d 20  ) {. .pathPtr = 
5100: 54 63 6c 5f 4e 65 77 4f 62 6a 28 29 3b 0a 20 20  Tcl_NewObj();.  
5110: 20 20 20 7d 0a 2b 20 20 20 20 54 63 6c 5f 49 6e     }.+    Tcl_In
5120: 63 72 52 65 66 43 6f 75 6e 74 28 70 61 74 68 50  crRefCount(pathP
5130: 74 72 29 3b 0a 20 20 20 20 20 54 63 6c 5f 53 65  tr);.     Tcl_Se
5140: 74 56 61 72 32 45 78 28 69 6e 74 65 72 70 2c 20  tVar2Ex(interp, 
5150: 22 74 63 6c 5f 6c 69 62 50 61 74 68 22 2c 20 4e  "tcl_libPath", N
5160: 55 4c 4c 2c 20 70 61 74 68 50 74 72 2c 20 54 43  ULL, pathPtr, TC
5170: 4c 5f 47 4c 4f 42 41 4c 5f 4f 4e 4c 59 29 3b 0a  L_GLOBAL_ONLY);.
5180: 2b 20 20 20 20 54 63 6c 5f 44 65 63 72 52 65 66  +    Tcl_DecrRef
5190: 43 6f 75 6e 74 28 70 61 74 68 50 74 72 29 3b 0a  Count(pathPtr);.
51a0: 20 20 20 20 20 72 65 74 75 72 6e 20 54 63 6c 5f       return Tcl_
51b0: 45 76 61 6c 28 69 6e 74 65 72 70 2c 20 69 6e 69  Eval(interp, ini
51c0: 74 53 63 72 69 70 74 29 3b 0a 20 7d 0a 20 0c 0a  tScript);. }. ..
51d0: 49 6e 64 65 78 3a 20 77 69 6e 2f 74 63 6c 57 69  Index: win/tclWi
51e0: 6e 49 6e 69 74 2e 63 0a 3d 3d 3d 3d 3d 3d 3d 3d  nInit.c.========
51f0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
5200: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
5210: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
5220: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 52 43 53 20  ===========.RCS 
5230: 66 69 6c 65 3a 20 2f 63 76 73 72 6f 6f 74 2f 74  file: /cvsroot/t
5240: 63 6c 2f 74 63 6c 2f 77 69 6e 2f 74 63 6c 57 69  cl/tcl/win/tclWi
5250: 6e 49 6e 69 74 2e 63 2c 76 0a 72 65 74 72 69 65  nInit.c,v.retrie
5260: 76 69 6e 67 20 72 65 76 69 73 69 6f 6e 20 31 2e  ving revision 1.
5270: 34 30 2e 32 2e 35 0a 64 69 66 66 20 2d 75 20 2d  40.2.5.diff -u -
5280: 72 31 2e 34 30 2e 32 2e 35 20 74 63 6c 57 69 6e  r1.40.2.5 tclWin
5290: 49 6e 69 74 2e 63 0a 2d 2d 2d 20 77 69 6e 2f 74  Init.c.--- win/t
52a0: 63 6c 57 69 6e 49 6e 69 74 2e 63 09 32 39 20 4d  clWinInit.c.29 M
52b0: 61 72 20 32 30 30 34 20 31 38 3a 34 39 3a 33 36  ar 2004 18:49:36
52c0: 20 2d 30 30 30 30 09 31 2e 34 30 2e 32 2e 35 0a   -0000.1.40.2.5.
52d0: 2b 2b 2b 20 77 69 6e 2f 74 63 6c 57 69 6e 49 6e  +++ win/tclWinIn
52e0: 69 74 2e 63 09 32 33 20 4f 63 74 20 32 30 30 35  it.c.23 Oct 2005
52f0: 20 32 31 3a 34 38 3a 31 31 20 2d 30 30 30 30 0a   21:48:11 -0000.
5300: 40 40 20 2d 38 34 37 2c 37 20 2b 38 34 37 2c 39  @@ -847,7 +847,9
5310: 20 40 40 0a 20 20 20 20 20 69 66 20 28 70 61 74   @@.     if (pat
5320: 68 50 74 72 20 3d 3d 20 4e 55 4c 4c 29 20 7b 0a  hPtr == NULL) {.
5330: 20 09 70 61 74 68 50 74 72 20 3d 20 54 63 6c 5f   .pathPtr = Tcl_
5340: 4e 65 77 4f 62 6a 28 29 3b 0a 20 20 20 20 20 7d  NewObj();.     }
5350: 0a 2b 20 20 20 20 54 63 6c 5f 49 6e 63 72 52 65  .+    Tcl_IncrRe
5360: 66 43 6f 75 6e 74 28 70 61 74 68 50 74 72 29 3b  fCount(pathPtr);
5370: 20 20 20 20 0a 20 20 20 20 20 54 63 6c 5f 53 65      .     Tcl_Se
5380: 74 56 61 72 32 45 78 28 69 6e 74 65 72 70 2c 20  tVar2Ex(interp, 
5390: 22 74 63 6c 5f 6c 69 62 50 61 74 68 22 2c 20 4e  "tcl_libPath", N
53a0: 55 4c 4c 2c 20 70 61 74 68 50 74 72 2c 20 54 43  ULL, pathPtr, TC
53b0: 4c 5f 47 4c 4f 42 41 4c 5f 4f 4e 4c 59 29 3b 0a  L_GLOBAL_ONLY);.
53c0: 2b 20 20 20 20 54 63 6c 5f 44 65 63 72 52 65 66  +    Tcl_DecrRef
53d0: 43 6f 75 6e 74 28 70 61 74 68 50 74 72 29 3b 20  Count(pathPtr); 
53e0: 20 20 20 0a 20 20 20 20 20 72 65 74 75 72 6e 20     .     return 
53f0: 54 63 6c 5f 45 76 61 6c 28 69 6e 74 65 72 70 2c  Tcl_Eval(interp,
5400: 20 69 6e 69 74 53 63 72 69 70 74 29 3b 0a 20 7d   initScript);. }
5410: 0a 20 0c 0a                                      . ..