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