Attachment "link.diff" to
ticket [1992824fff]
added by
r_zaumseil
2008-06-13 18:08:59.
0000: 64 69 66 66 20 2d 4e 75 70 72 20 74 63 6c 2d 38 diff -Nupr tcl-8
0010: 2e 35 2f 67 65 6e 65 72 69 63 2f 74 63 6c 2e 64 .5/generic/tcl.d
0020: 65 63 6c 73 20 74 69 70 33 31 32 2f 67 65 6e 65 ecls tip312/gene
0030: 72 69 63 2f 74 63 6c 2e 64 65 63 6c 73 0a 2d 2d ric/tcl.decls.--
0040: 2d 20 74 63 6c 2d 38 2e 35 2f 67 65 6e 65 72 69 - tcl-8.5/generi
0050: 63 2f 74 63 6c 2e 64 65 63 6c 73 09 32 30 30 38 c/tcl.decls.2008
0060: 2d 30 33 2d 31 39 20 31 37 3a 35 36 3a 31 33 2e -03-19 17:56:13.
0070: 30 30 30 30 30 30 30 30 30 20 2b 30 31 30 30 0a 000000000 +0100.
0080: 2b 2b 2b 20 74 69 70 33 31 32 2f 67 65 6e 65 72 +++ tip312/gener
0090: 69 63 2f 74 63 6c 2e 64 65 63 6c 73 09 32 30 30 ic/tcl.decls.200
00a0: 38 2d 30 36 2d 31 33 20 31 31 3a 30 30 3a 34 33 8-06-13 11:00:43
00b0: 2e 30 30 30 30 30 30 30 30 30 20 2b 30 32 30 30 .000000000 +0200
00c0: 0a 40 40 20 2d 32 30 39 38 2c 36 20 2b 32 30 39 .@@ -2098,6 +209
00d0: 38 2c 31 32 20 40 40 20 64 65 63 6c 61 72 65 20 8,12 @@ declare
00e0: 35 37 38 20 67 65 6e 65 72 69 63 20 7b 0a 20 64 578 generic {. d
00f0: 65 63 6c 61 72 65 20 35 37 39 20 67 65 6e 65 72 eclare 579 gener
0100: 69 63 20 7b 0a 20 20 20 20 20 76 6f 69 64 20 54 ic {. void T
0110: 63 6c 5f 41 70 70 65 6e 64 50 72 69 6e 74 66 54 cl_AppendPrintfT
0120: 6f 4f 62 6a 28 54 63 6c 5f 4f 62 6a 20 2a 6f 62 oObj(Tcl_Obj *ob
0130: 6a 50 74 72 2c 20 43 4f 4e 53 54 20 63 68 61 72 jPtr, CONST char
0140: 20 2a 66 6f 72 6d 61 74 2c 20 2e 2e 2e 29 0a 20 *format, ...).
0150: 7d 0a 2b 23 20 54 49 50 23 33 31 32 20 4e 65 77 }.+# TIP#312 New
0160: 20 54 63 6c 5f 4c 69 6e 6b 41 72 72 61 79 28 29 Tcl_LinkArray()
0170: 20 66 75 6e 63 74 69 6f 6e 0a 2b 64 65 63 6c 61 function.+decla
0180: 72 65 20 35 38 30 20 67 65 6e 65 72 69 63 20 7b re 580 generic {
0190: 0a 2b 20 20 20 20 69 6e 74 20 54 63 6c 5f 4c 69 .+ int Tcl_Li
01a0: 6e 6b 41 72 72 61 79 28 54 63 6c 5f 49 6e 74 65 nkArray(Tcl_Inte
01b0: 72 70 20 2a 69 6e 74 65 72 70 2c 20 43 4f 4e 53 rp *interp, CONS
01c0: 54 20 63 68 61 72 20 2a 76 61 72 4e 61 6d 65 2c T char *varName,
01d0: 20 63 68 61 72 20 2a 61 64 64 72 2c 0a 2b 20 20 char *addr,.+
01e0: 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 74 79 int ty
01f0: 70 65 2c 20 69 6e 74 20 73 69 7a 65 29 0a 2b 7d pe, int size).+}
0200: 0a 2b 0a 20 0a 20 23 23 23 23 23 23 23 23 23 23 .+. . ##########
0210: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
0220: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
0230: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
0240: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
0250: 23 23 23 23 0a 20 0a 64 69 66 66 20 2d 4e 75 70 ####. .diff -Nup
0260: 72 20 74 63 6c 2d 38 2e 35 2f 67 65 6e 65 72 69 r tcl-8.5/generi
0270: 63 2f 74 63 6c 44 65 63 6c 73 2e 68 20 74 69 70 c/tclDecls.h tip
0280: 33 31 32 2f 67 65 6e 65 72 69 63 2f 74 63 6c 44 312/generic/tclD
0290: 65 63 6c 73 2e 68 0a 2d 2d 2d 20 74 63 6c 2d 38 ecls.h.--- tcl-8
02a0: 2e 35 2f 67 65 6e 65 72 69 63 2f 74 63 6c 44 65 .5/generic/tclDe
02b0: 63 6c 73 2e 68 09 32 30 30 37 2d 31 32 2d 31 33 cls.h.2007-12-13
02c0: 20 31 36 3a 32 33 3a 31 36 2e 30 30 30 30 30 30 16:23:16.000000
02d0: 30 30 30 20 2b 30 31 30 30 0a 2b 2b 2b 20 74 69 000 +0100.+++ ti
02e0: 70 33 31 32 2f 67 65 6e 65 72 69 63 2f 74 63 6c p312/generic/tcl
02f0: 44 65 63 6c 73 2e 68 09 32 30 30 38 2d 30 36 2d Decls.h.2008-06-
0300: 31 33 20 31 31 3a 32 37 3a 32 33 2e 30 30 30 30 13 11:27:23.0000
0310: 30 30 30 30 30 20 2b 30 32 30 30 0a 40 40 20 2d 00000 +0200.@@ -
0320: 33 35 30 31 2c 36 20 2b 33 35 30 31 2c 31 33 20 3501,6 +3501,13
0330: 40 40 20 45 58 54 45 52 4e 20 54 63 6c 5f 4f 62 @@ EXTERN Tcl_Ob
0340: 6a 20 2a 09 54 63 6c 5f 4f 62 6a 50 72 69 6e 74 j *.Tcl_ObjPrint
0350: 66 20 28 43 4f 4e 53 54 20 63 68 0a 20 45 58 54 f (CONST ch. EXT
0360: 45 52 4e 20 76 6f 69 64 09 09 54 63 6c 5f 41 70 ERN void..Tcl_Ap
0370: 70 65 6e 64 50 72 69 6e 74 66 54 6f 4f 62 6a 20 pendPrintfToObj
0380: 28 54 63 6c 5f 4f 62 6a 20 2a 20 6f 62 6a 50 74 (Tcl_Obj * objPt
0390: 72 2c 20 0a 20 09 09 09 09 43 4f 4e 53 54 20 63 r, . ....CONST c
03a0: 68 61 72 20 2a 20 66 6f 72 6d 61 74 2c 20 2e 2e har * format, ..
03b0: 2e 29 3b 0a 20 23 65 6e 64 69 66 0a 2b 23 69 66 .);. #endif.+#if
03c0: 6e 64 65 66 20 54 63 6c 5f 4c 69 6e 6b 41 72 72 ndef Tcl_LinkArr
03d0: 61 79 5f 54 43 4c 5f 44 45 43 4c 41 52 45 44 0a ay_TCL_DECLARED.
03e0: 2b 23 64 65 66 69 6e 65 20 54 63 6c 5f 4c 69 6e +#define Tcl_Lin
03f0: 6b 41 72 72 61 79 5f 54 43 4c 5f 44 45 43 4c 41 kArray_TCL_DECLA
0400: 52 45 44 0a 2b 2f 2a 20 35 38 30 20 2a 2f 0a 2b RED.+/* 580 */.+
0410: 45 58 54 45 52 4e 20 69 6e 74 09 09 54 63 6c 5f EXTERN int..Tcl_
0420: 4c 69 6e 6b 41 72 72 61 79 20 28 54 63 6c 5f 49 LinkArray (Tcl_I
0430: 6e 74 65 72 70 20 2a 20 69 6e 74 65 72 70 2c 20 nterp * interp,
0440: 0a 2b 09 09 09 09 43 4f 4e 53 54 20 63 68 61 72 .+....CONST char
0450: 20 2a 20 76 61 72 4e 61 6d 65 2c 20 63 68 61 72 * varName, char
0460: 20 2a 20 61 64 64 72 2c 20 69 6e 74 20 74 79 70 * addr, int typ
0470: 65 2c 20 0a 2b 09 09 09 09 69 6e 74 20 73 69 7a e, .+....int siz
0480: 65 29 3b 0a 2b 23 65 6e 64 69 66 0a 20 0a 20 74 e);.+#endif. . t
0490: 79 70 65 64 65 66 20 73 74 72 75 63 74 20 54 63 ypedef struct Tc
04a0: 6c 53 74 75 62 48 6f 6f 6b 73 20 7b 0a 20 20 20 lStubHooks {.
04b0: 20 20 73 74 72 75 63 74 20 54 63 6c 50 6c 61 74 struct TclPlat
04c0: 53 74 75 62 73 20 2a 74 63 6c 50 6c 61 74 53 74 Stubs *tclPlatSt
04d0: 75 62 73 3b 0a 40 40 20 2d 34 31 34 30 2c 36 20 ubs;.@@ -4140,6
04e0: 2b 34 31 34 37 2c 37 20 40 40 20 74 79 70 65 64 +4147,7 @@ typed
04f0: 65 66 20 73 74 72 75 63 74 20 54 63 6c 53 74 75 ef struct TclStu
0500: 62 73 20 7b 0a 20 20 20 20 20 69 6e 74 20 28 2a bs {. int (*
0510: 74 63 6c 5f 41 70 70 65 6e 64 46 6f 72 6d 61 74 tcl_AppendFormat
0520: 54 6f 4f 62 6a 29 20 28 54 63 6c 5f 49 6e 74 65 ToObj) (Tcl_Inte
0530: 72 70 20 2a 20 69 6e 74 65 72 70 2c 20 54 63 6c rp * interp, Tcl
0540: 5f 4f 62 6a 20 2a 20 6f 62 6a 50 74 72 2c 20 43 _Obj * objPtr, C
0550: 4f 4e 53 54 20 63 68 61 72 20 2a 20 66 6f 72 6d ONST char * form
0560: 61 74 2c 20 69 6e 74 20 6f 62 6a 63 2c 20 54 63 at, int objc, Tc
0570: 6c 5f 4f 62 6a 20 2a 20 43 4f 4e 53 54 20 6f 62 l_Obj * CONST ob
0580: 6a 76 5b 5d 29 3b 20 2f 2a 20 35 37 37 20 2a 2f jv[]); /* 577 */
0590: 0a 20 20 20 20 20 54 63 6c 5f 4f 62 6a 20 2a 20 . Tcl_Obj *
05a0: 28 2a 74 63 6c 5f 4f 62 6a 50 72 69 6e 74 66 29 (*tcl_ObjPrintf)
05b0: 20 28 43 4f 4e 53 54 20 63 68 61 72 20 2a 20 66 (CONST char * f
05c0: 6f 72 6d 61 74 2c 20 2e 2e 2e 29 3b 20 2f 2a 20 ormat, ...); /*
05d0: 35 37 38 20 2a 2f 0a 20 20 20 20 20 76 6f 69 64 578 */. void
05e0: 20 28 2a 74 63 6c 5f 41 70 70 65 6e 64 50 72 69 (*tcl_AppendPri
05f0: 6e 74 66 54 6f 4f 62 6a 29 20 28 54 63 6c 5f 4f ntfToObj) (Tcl_O
0600: 62 6a 20 2a 20 6f 62 6a 50 74 72 2c 20 43 4f 4e bj * objPtr, CON
0610: 53 54 20 63 68 61 72 20 2a 20 66 6f 72 6d 61 74 ST char * format
0620: 2c 20 2e 2e 2e 29 3b 20 2f 2a 20 35 37 39 20 2a , ...); /* 579 *
0630: 2f 0a 2b 20 20 20 20 69 6e 74 20 28 2a 74 63 6c /.+ int (*tcl
0640: 5f 4c 69 6e 6b 41 72 72 61 79 29 20 28 54 63 6c _LinkArray) (Tcl
0650: 5f 49 6e 74 65 72 70 20 2a 20 69 6e 74 65 72 70 _Interp * interp
0660: 2c 20 43 4f 4e 53 54 20 63 68 61 72 20 2a 20 76 , CONST char * v
0670: 61 72 4e 61 6d 65 2c 20 63 68 61 72 20 2a 20 61 arName, char * a
0680: 64 64 72 2c 20 69 6e 74 20 74 79 70 65 2c 20 69 ddr, int type, i
0690: 6e 74 20 73 69 7a 65 29 3b 20 2f 2a 20 35 38 30 nt size); /* 580
06a0: 20 2a 2f 0a 20 7d 20 54 63 6c 53 74 75 62 73 3b */. } TclStubs;
06b0: 0a 20 0a 20 23 69 66 64 65 66 20 5f 5f 63 70 6c . . #ifdef __cpl
06c0: 75 73 70 6c 75 73 0a 40 40 20 2d 36 35 33 36 2c usplus.@@ -6536,
06d0: 36 20 2b 36 35 34 34 2c 31 30 20 40 40 20 65 78 6 +6544,10 @@ ex
06e0: 74 65 72 6e 20 54 63 6c 53 74 75 62 73 20 2a 74 tern TclStubs *t
06f0: 63 6c 53 74 75 62 73 50 74 72 3b 0a 20 23 64 65 clStubsPtr;. #de
0700: 66 69 6e 65 20 54 63 6c 5f 41 70 70 65 6e 64 50 fine Tcl_AppendP
0710: 72 69 6e 74 66 54 6f 4f 62 6a 20 5c 0a 20 09 28 rintfToObj \. .(
0720: 74 63 6c 53 74 75 62 73 50 74 72 2d 3e 74 63 6c tclStubsPtr->tcl
0730: 5f 41 70 70 65 6e 64 50 72 69 6e 74 66 54 6f 4f _AppendPrintfToO
0740: 62 6a 29 20 2f 2a 20 35 37 39 20 2a 2f 0a 20 23 bj) /* 579 */. #
0750: 65 6e 64 69 66 0a 2b 23 69 66 6e 64 65 66 20 54 endif.+#ifndef T
0760: 63 6c 5f 4c 69 6e 6b 41 72 72 61 79 0a 2b 23 64 cl_LinkArray.+#d
0770: 65 66 69 6e 65 20 54 63 6c 5f 4c 69 6e 6b 41 72 efine Tcl_LinkAr
0780: 72 61 79 20 5c 0a 2b 09 28 74 63 6c 53 74 75 62 ray \.+.(tclStub
0790: 73 50 74 72 2d 3e 74 63 6c 5f 4c 69 6e 6b 41 72 sPtr->tcl_LinkAr
07a0: 72 61 79 29 20 2f 2a 20 35 38 30 20 2a 2f 0a 2b ray) /* 580 */.+
07b0: 23 65 6e 64 69 66 0a 20 0a 20 23 65 6e 64 69 66 #endif. . #endif
07c0: 20 2f 2a 20 64 65 66 69 6e 65 64 28 55 53 45 5f /* defined(USE_
07d0: 54 43 4c 5f 53 54 55 42 53 29 20 26 26 20 21 64 TCL_STUBS) && !d
07e0: 65 66 69 6e 65 64 28 55 53 45 5f 54 43 4c 5f 53 efined(USE_TCL_S
07f0: 54 55 42 5f 50 52 4f 43 53 29 20 2a 2f 0a 20 0a TUB_PROCS) */. .
0800: 64 69 66 66 20 2d 4e 75 70 72 20 74 63 6c 2d 38 diff -Nupr tcl-8
0810: 2e 35 2f 67 65 6e 65 72 69 63 2f 74 63 6c 2e 68 .5/generic/tcl.h
0820: 20 74 69 70 33 31 32 2f 67 65 6e 65 72 69 63 2f tip312/generic/
0830: 74 63 6c 2e 68 0a 2d 2d 2d 20 74 63 6c 2d 38 2e tcl.h.--- tcl-8.
0840: 35 2f 67 65 6e 65 72 69 63 2f 74 63 6c 2e 68 09 5/generic/tcl.h.
0850: 32 30 30 38 2d 30 33 2d 32 38 20 31 38 3a 33 31 2008-03-28 18:31
0860: 3a 34 34 2e 30 30 30 30 30 30 30 30 30 20 2b 30 :44.000000000 +0
0870: 31 30 30 0a 2b 2b 2b 20 74 69 70 33 31 32 2f 67 100.+++ tip312/g
0880: 65 6e 65 72 69 63 2f 74 63 6c 2e 68 09 32 30 30 eneric/tcl.h.200
0890: 38 2d 30 36 2d 31 33 20 31 30 3a 35 38 3a 33 31 8-06-13 10:58:31
08a0: 2e 30 30 30 30 30 30 30 30 30 20 2b 30 32 30 30 .000000000 +0200
08b0: 0a 40 40 20 2d 31 30 36 35 2c 36 20 2b 31 30 36 .@@ -1065,6 +106
08c0: 35 2c 38 20 40 40 20 74 79 70 65 64 65 66 20 73 5,8 @@ typedef s
08d0: 74 72 75 63 74 20 54 63 6c 5f 44 53 74 72 69 6e truct Tcl_DStrin
08e0: 67 20 7b 0a 20 23 64 65 66 69 6e 65 20 54 43 4c g {. #define TCL
08f0: 5f 4c 49 4e 4b 5f 55 4c 4f 4e 47 09 09 31 32 0a _LINK_ULONG..12.
0900: 20 23 64 65 66 69 6e 65 20 54 43 4c 5f 4c 49 4e #define TCL_LIN
0910: 4b 5f 46 4c 4f 41 54 09 09 31 33 0a 20 23 64 65 K_FLOAT..13. #de
0920: 66 69 6e 65 20 54 43 4c 5f 4c 49 4e 4b 5f 57 49 fine TCL_LINK_WI
0930: 44 45 5f 55 49 4e 54 09 31 34 0a 2b 23 64 65 66 DE_UINT.14.+#def
0940: 69 6e 65 20 54 43 4c 5f 4c 49 4e 4b 5f 43 48 41 ine TCL_LINK_CHA
0950: 52 53 20 20 20 20 20 20 20 20 20 20 31 35 0a 2b RS 15.+
0960: 23 64 65 66 69 6e 65 20 54 43 4c 5f 4c 49 4e 4b #define TCL_LINK
0970: 5f 42 49 4e 41 52 59 20 20 20 20 20 20 20 20 20 _BINARY
0980: 31 36 0a 20 23 64 65 66 69 6e 65 20 54 43 4c 5f 16. #define TCL_
0990: 4c 49 4e 4b 5f 52 45 41 44 5f 4f 4e 4c 59 09 30 LINK_READ_ONLY.0
09a0: 78 38 30 0a 20 0a 20 2f 2a 0a 64 69 66 66 20 2d x80. . /*.diff -
09b0: 4e 75 70 72 20 74 63 6c 2d 38 2e 35 2f 67 65 6e Nupr tcl-8.5/gen
09c0: 65 72 69 63 2f 74 63 6c 4c 69 6e 6b 2e 63 20 74 eric/tclLink.c t
09d0: 69 70 33 31 32 2f 67 65 6e 65 72 69 63 2f 74 63 ip312/generic/tc
09e0: 6c 4c 69 6e 6b 2e 63 0a 2d 2d 2d 20 74 63 6c 2d lLink.c.--- tcl-
09f0: 38 2e 35 2f 67 65 6e 65 72 69 63 2f 74 63 6c 4c 8.5/generic/tclL
0a00: 69 6e 6b 2e 63 09 32 30 30 37 2d 31 32 2d 31 33 ink.c.2007-12-13
0a10: 20 31 36 3a 32 33 3a 31 38 2e 30 30 30 30 30 30 16:23:18.000000
0a20: 30 30 30 20 2b 30 31 30 30 0a 2b 2b 2b 20 74 69 000 +0100.+++ ti
0a30: 70 33 31 32 2f 67 65 6e 65 72 69 63 2f 74 63 6c p312/generic/tcl
0a40: 4c 69 6e 6b 2e 63 09 32 30 30 38 2d 30 36 2d 31 Link.c.2008-06-1
0a50: 33 20 31 31 3a 30 39 3a 35 37 2e 30 30 30 30 30 3 11:09:57.00000
0a60: 30 30 30 30 20 2b 30 32 30 30 0a 40 40 20 2d 33 0000 +0200.@@ -3
0a70: 30 2c 36 20 2b 33 30 2c 39 20 40 40 20 74 79 70 0,6 +30,9 @@ typ
0a80: 65 64 65 66 20 73 74 72 75 63 74 20 4c 69 6e 6b edef struct Link
0a90: 20 7b 0a 20 09 09 09 09 20 2a 20 61 63 74 75 61 {. .... * actua
0aa0: 6c 20 76 61 72 69 61 62 6c 65 20 6d 61 79 20 62 l variable may b
0ab0: 65 20 61 6c 69 61 73 65 64 20 61 74 20 74 68 61 e aliased at tha
0ac0: 74 20 74 69 6d 65 0a 20 09 09 09 09 20 2a 20 76 t time. .... * v
0ad0: 69 61 20 75 70 76 61 72 2e 20 2a 2f 0a 20 20 20 ia upvar. */.
0ae0: 20 20 63 68 61 72 20 2a 61 64 64 72 3b 09 09 09 char *addr;...
0af0: 2f 2a 20 4c 6f 63 61 74 69 6f 6e 20 6f 66 20 43 /* Location of C
0b00: 20 76 61 72 69 61 62 6c 65 2e 20 2a 2f 0a 2b 20 variable. */.+
0b10: 20 20 20 69 6e 74 20 62 79 74 65 73 3b 09 09 09 int bytes;...
0b20: 2f 2a 20 53 69 7a 65 20 6f 66 20 43 20 76 61 72 /* Size of C var
0b30: 69 61 62 6c 65 20 61 72 72 61 79 2e 0a 2b 09 09 iable array..+..
0b40: 09 09 20 2a 20 30 20 77 68 65 6e 20 73 69 6e 67 .. * 0 when sing
0b50: 6c 65 20 76 61 72 69 61 62 6c 65 73 0a 2b 09 09 le variables.+..
0b60: 09 09 20 2a 20 3e 30 20 75 73 65 64 20 66 6f 72 .. * >0 used for
0b70: 20 61 72 72 61 79 20 76 61 72 69 61 62 6c 65 73 array variables
0b80: 20 2a 2f 0a 20 20 20 20 20 69 6e 74 20 74 79 70 */. int typ
0b90: 65 3b 09 09 09 2f 2a 20 54 79 70 65 20 6f 66 20 e;.../* Type of
0ba0: 6c 69 6e 6b 20 28 54 43 4c 5f 4c 49 4e 4b 5f 49 link (TCL_LINK_I
0bb0: 4e 54 2c 20 65 74 63 2e 29 2e 20 2a 2f 0a 20 20 NT, etc.). */.
0bc0: 20 20 20 75 6e 69 6f 6e 20 7b 0a 20 09 63 68 61 union {. .cha
0bd0: 72 20 63 3b 0a 40 40 20 2d 34 34 2c 36 20 2b 34 r c;.@@ -44,6 +4
0be0: 37 2c 31 38 20 40 40 20 74 79 70 65 64 65 66 20 7,18 @@ typedef
0bf0: 73 74 72 75 63 74 20 4c 69 6e 6b 20 7b 0a 20 09 struct Link {. .
0c00: 54 63 6c 5f 57 69 64 65 55 49 6e 74 20 75 77 3b Tcl_WideUInt uw;
0c10: 0a 20 09 66 6c 6f 61 74 20 66 3b 0a 20 09 64 6f . .float f;. .do
0c20: 75 62 6c 65 20 64 3b 0a 2b 09 63 68 61 72 20 2a uble d;.+.char *
0c30: 70 63 3b 0a 2b 09 75 6e 73 69 67 6e 65 64 20 63 pc;.+.unsigned c
0c40: 68 61 72 20 2a 70 75 63 3b 0a 2b 09 69 6e 74 20 har *puc;.+.int
0c50: 2a 70 69 3b 0a 2b 09 75 6e 73 69 67 6e 65 64 20 *pi;.+.unsigned
0c60: 69 6e 74 20 2a 70 75 69 3b 0a 2b 09 73 68 6f 72 int *pui;.+.shor
0c70: 74 20 2a 70 73 3b 0a 2b 09 75 6e 73 69 67 6e 65 t *ps;.+.unsigne
0c80: 64 20 73 68 6f 72 74 20 2a 70 75 73 3b 0a 2b 09 d short *pus;.+.
0c90: 6c 6f 6e 67 20 2a 70 6c 3b 0a 2b 09 75 6e 73 69 long *pl;.+.unsi
0ca0: 67 6e 65 64 20 6c 6f 6e 67 20 2a 70 75 6c 3b 0a gned long *pul;.
0cb0: 2b 09 54 63 6c 5f 57 69 64 65 49 6e 74 20 2a 70 +.Tcl_WideInt *p
0cc0: 77 3b 0a 2b 09 54 63 6c 5f 57 69 64 65 55 49 6e w;.+.Tcl_WideUIn
0cd0: 74 20 2a 70 75 77 3b 0a 2b 09 66 6c 6f 61 74 20 t *puw;.+.float
0ce0: 2a 70 66 3b 0a 2b 09 64 6f 75 62 6c 65 20 2a 70 *pf;.+.double *p
0cf0: 64 3b 0a 20 20 20 20 20 7d 20 6c 61 73 74 56 61 d;. } lastVa
0d00: 6c 75 65 3b 09 09 2f 2a 20 4c 61 73 74 20 6b 6e lue;../* Last kn
0d10: 6f 77 6e 20 76 61 6c 75 65 20 6f 66 20 43 20 76 own value of C v
0d20: 61 72 69 61 62 6c 65 3b 20 75 73 65 64 20 74 6f ariable; used to
0d30: 0a 20 09 09 09 09 20 2a 20 61 76 6f 69 64 20 73 . .... * avoid s
0d40: 74 72 69 6e 67 20 63 6f 6e 76 65 72 73 69 6f 6e tring conversion
0d50: 73 2e 20 2a 2f 0a 20 20 20 20 20 69 6e 74 20 66 s. */. int f
0d60: 6c 61 67 73 3b 09 09 09 2f 2a 20 4d 69 73 63 65 lags;.../* Misce
0d70: 6c 6c 61 6e 65 6f 75 73 20 6f 6e 65 2d 62 69 74 llaneous one-bit
0d80: 20 76 61 6c 75 65 73 3b 20 73 65 65 20 62 65 6c values; see bel
0d90: 6f 77 20 66 6f 72 0a 40 40 20 2d 35 37 2c 31 30 ow for.@@ -57,10
0da0: 20 2b 37 32 2c 31 34 20 40 40 20 74 79 70 65 64 +72,14 @@ typed
0db0: 65 66 20 73 74 72 75 63 74 20 4c 69 6e 6b 20 7b ef struct Link {
0dc0: 0a 20 20 2a 20 4c 49 4e 4b 5f 42 45 49 4e 47 5f . * LINK_BEING_
0dd0: 55 50 44 41 54 45 44 20 2d 09 09 31 20 6d 65 61 UPDATED -..1 mea
0de0: 6e 73 20 74 68 61 74 20 61 20 63 61 6c 6c 20 74 ns that a call t
0df0: 6f 20 54 63 6c 5f 55 70 64 61 74 65 4c 69 6e 6b o Tcl_UpdateLink
0e00: 65 64 56 61 72 20 69 73 0a 20 20 2a 09 09 09 09 edVar is. *....
0e10: 69 6e 20 70 72 6f 67 72 65 73 73 20 66 6f 72 20 in progress for
0e20: 74 68 69 73 20 76 61 72 69 61 62 6c 65 2c 20 73 this variable, s
0e30: 6f 20 74 72 61 63 65 0a 20 20 2a 09 09 09 09 63 o trace. *....c
0e40: 61 6c 6c 62 61 63 6b 73 20 6f 6e 20 74 68 65 20 allbacks on the
0e50: 76 61 72 69 61 62 6c 65 20 73 68 6f 75 6c 64 20 variable should
0e60: 62 65 20 69 67 6e 6f 72 65 64 2e 0a 2b 20 2a 20 be ignored..+ *
0e70: 4c 49 4e 4b 5f 41 4c 4c 4f 43 5f 41 44 44 52 20 LINK_ALLOC_ADDR
0e80: 2d 09 09 31 20 6d 65 61 6e 73 20 6c 69 6e 6b 50 -..1 means linkP
0e90: 74 72 2d 3e 61 64 64 72 20 77 61 73 20 61 6c 6c tr->addr was all
0ea0: 6f 63 61 74 65 64 20 6f 6e 20 74 68 65 20 68 65 ocated on the he
0eb0: 61 70 0a 2b 20 2a 20 4c 49 4e 4b 5f 41 4c 4c 4f ap.+ * LINK_ALLO
0ec0: 43 5f 4c 41 53 54 20 2d 09 09 31 20 6d 65 61 6e C_LAST -..1 mean
0ed0: 73 20 6c 69 6e 6b 50 74 72 2d 3e 76 61 6c 75 65 s linkPtr->value
0ee0: 4c 61 73 74 2e 70 20 77 61 73 20 61 6c 6c 6f 63 Last.p was alloc
0ef0: 61 74 65 64 20 6f 6e 20 74 68 65 20 68 65 61 70 ated on the heap
0f00: 0a 20 20 2a 2f 0a 20 0a 20 23 64 65 66 69 6e 65 . */. . #define
0f10: 20 4c 49 4e 4b 5f 52 45 41 44 5f 4f 4e 4c 59 09 LINK_READ_ONLY.
0f20: 09 31 0a 20 23 64 65 66 69 6e 65 20 4c 49 4e 4b .1. #define LINK
0f30: 5f 42 45 49 4e 47 5f 55 50 44 41 54 45 44 09 32 _BEING_UPDATED.2
0f40: 0a 2b 23 64 65 66 69 6e 65 20 4c 49 4e 4b 5f 41 .+#define LINK_A
0f50: 4c 4c 4f 43 5f 41 44 44 52 09 09 34 0a 2b 23 64 LLOC_ADDR..4.+#d
0f60: 65 66 69 6e 65 20 4c 49 4e 4b 5f 41 4c 4c 4f 43 efine LINK_ALLOC
0f70: 5f 4c 41 53 54 09 09 38 0a 20 0a 20 2f 2a 0a 20 _LAST..8. . /*.
0f80: 20 2a 20 46 6f 72 77 61 72 64 20 72 65 66 65 72 * Forward refer
0f90: 65 6e 63 65 73 20 74 6f 20 66 75 6e 63 74 69 6f ences to functio
0fa0: 6e 73 20 64 65 66 69 6e 65 64 20 6c 61 74 65 72 ns defined later
0fb0: 20 69 6e 20 74 68 69 73 20 66 69 6c 65 3a 0a 40 in this file:.@
0fc0: 40 20 2d 36 39 2c 36 20 2b 38 38 2c 37 20 40 40 @ -69,6 +88,7 @@
0fd0: 20 74 79 70 65 64 65 66 20 73 74 72 75 63 74 20 typedef struct
0fe0: 4c 69 6e 6b 20 7b 0a 20 73 74 61 74 69 63 20 63 Link {. static c
0ff0: 68 61 72 20 2a 09 09 4c 69 6e 6b 54 72 61 63 65 har *..LinkTrace
1000: 50 72 6f 63 28 43 6c 69 65 6e 74 44 61 74 61 20 Proc(ClientData
1010: 63 6c 69 65 6e 74 44 61 74 61 2c 54 63 6c 5f 49 clientData,Tcl_I
1020: 6e 74 65 72 70 20 2a 69 6e 74 65 72 70 2c 0a 20 nterp *interp,.
1030: 09 09 09 20 20 20 20 43 4f 4e 53 54 20 63 68 61 ... CONST cha
1040: 72 20 2a 6e 61 6d 65 31 2c 20 43 4f 4e 53 54 20 r *name1, CONST
1050: 63 68 61 72 20 2a 6e 61 6d 65 32 2c 20 69 6e 74 char *name2, int
1060: 20 66 6c 61 67 73 29 3b 0a 20 73 74 61 74 69 63 flags);. static
1070: 20 54 63 6c 5f 4f 62 6a 20 2a 09 4f 62 6a 56 61 Tcl_Obj *.ObjVa
1080: 6c 75 65 28 4c 69 6e 6b 20 2a 6c 69 6e 6b 50 74 lue(Link *linkPt
1090: 72 29 3b 0a 2b 73 74 61 74 69 63 20 76 6f 69 64 r);.+static void
10a0: 09 09 4c 69 6e 6b 46 72 65 65 28 4c 69 6e 6b 20 ..LinkFree(Link
10b0: 2a 6c 69 6e 6b 50 74 72 29 3b 0a 20 0a 20 2f 2a *linkPtr);. . /*
10c0: 0a 20 20 2a 20 43 6f 6e 76 65 6e 69 65 6e 63 65 . * Convenience
10d0: 20 6d 61 63 72 6f 20 66 6f 72 20 61 63 63 65 73 macro for acces
10e0: 73 69 6e 67 20 74 68 65 20 76 61 6c 75 65 20 6f sing the value o
10f0: 66 20 74 68 65 20 43 20 76 61 72 69 61 62 6c 65 f the C variable
1100: 20 70 6f 69 6e 74 65 64 20 74 6f 20 62 79 20 61 pointed to by a
1110: 0a 40 40 20 2d 31 32 35 2c 31 31 20 2b 31 34 35 .@@ -125,11 +145
1120: 2c 31 32 20 40 40 20 54 63 6c 5f 4c 69 6e 6b 56 ,12 @@ Tcl_LinkV
1130: 61 72 28 0a 20 20 20 20 20 7d 20 65 6c 73 65 20 ar(. } else
1140: 7b 0a 20 09 6c 69 6e 6b 50 74 72 2d 3e 66 6c 61 {. .linkPtr->fla
1150: 67 73 20 3d 20 30 3b 0a 20 20 20 20 20 7d 0a 2b gs = 0;. }.+
1160: 20 20 20 20 6c 69 6e 6b 50 74 72 2d 3e 62 79 74 linkPtr->byt
1170: 65 73 20 3d 20 30 3b 0a 20 20 20 20 20 6f 62 6a es = 0;. obj
1180: 50 74 72 20 3d 20 4f 62 6a 56 61 6c 75 65 28 6c Ptr = ObjValue(l
1190: 69 6e 6b 50 74 72 29 3b 0a 20 20 20 20 20 69 66 inkPtr);. if
11a0: 20 28 54 63 6c 5f 4f 62 6a 53 65 74 56 61 72 32 (Tcl_ObjSetVar2
11b0: 28 69 6e 74 65 72 70 2c 20 6c 69 6e 6b 50 74 72 (interp, linkPtr
11c0: 2d 3e 76 61 72 4e 61 6d 65 2c 20 4e 55 4c 4c 2c ->varName, NULL,
11d0: 20 6f 62 6a 50 74 72 2c 0a 20 09 20 20 20 20 54 objPtr,. . T
11e0: 43 4c 5f 47 4c 4f 42 41 4c 5f 4f 4e 4c 59 7c 54 CL_GLOBAL_ONLY|T
11f0: 43 4c 5f 4c 45 41 56 45 5f 45 52 52 5f 4d 53 47 CL_LEAVE_ERR_MSG
1200: 29 20 3d 3d 20 4e 55 4c 4c 29 20 7b 0a 20 09 54 ) == NULL) {. .T
1210: 63 6c 5f 44 65 63 72 52 65 66 43 6f 75 6e 74 28 cl_DecrRefCount(
1220: 6c 69 6e 6b 50 74 72 2d 3e 76 61 72 4e 61 6d 65 linkPtr->varName
1230: 29 3b 0a 2d 09 63 6b 66 72 65 65 28 28 63 68 61 );.-.ckfree((cha
1240: 72 20 2a 29 20 6c 69 6e 6b 50 74 72 29 3b 0a 2b r *) linkPtr);.+
1250: 09 4c 69 6e 6b 46 72 65 65 28 6c 69 6e 6b 50 74 .LinkFree(linkPt
1260: 72 29 3b 0a 20 09 72 65 74 75 72 6e 20 54 43 4c r);. .return TCL
1270: 5f 45 52 52 4f 52 3b 0a 20 20 20 20 20 7d 0a 20 _ERROR;. }.
1280: 20 20 20 20 63 6f 64 65 20 3d 20 54 63 6c 5f 54 code = Tcl_T
1290: 72 61 63 65 56 61 72 28 69 6e 74 65 72 70 2c 20 raceVar(interp,
12a0: 76 61 72 4e 61 6d 65 2c 20 54 43 4c 5f 47 4c 4f varName, TCL_GLO
12b0: 42 41 4c 5f 4f 4e 4c 59 7c 54 43 4c 5f 54 52 41 BAL_ONLY|TCL_TRA
12c0: 43 45 5f 52 45 41 44 53 0a 40 40 20 2d 31 33 37 CE_READS.@@ -137
12d0: 2c 37 20 2b 31 35 38 2c 31 34 39 20 40 40 20 54 ,7 +158,149 @@ T
12e0: 63 6c 5f 4c 69 6e 6b 56 61 72 28 0a 20 09 20 20 cl_LinkVar(. .
12f0: 20 20 28 43 6c 69 65 6e 74 44 61 74 61 29 20 6c (ClientData) l
1300: 69 6e 6b 50 74 72 29 3b 0a 20 20 20 20 20 69 66 inkPtr);. if
1310: 20 28 63 6f 64 65 20 21 3d 20 54 43 4c 5f 4f 4b (code != TCL_OK
1320: 29 20 7b 0a 20 09 54 63 6c 5f 44 65 63 72 52 65 ) {. .Tcl_DecrRe
1330: 66 43 6f 75 6e 74 28 6c 69 6e 6b 50 74 72 2d 3e fCount(linkPtr->
1340: 76 61 72 4e 61 6d 65 29 3b 0a 2d 09 63 6b 66 72 varName);.-.ckfr
1350: 65 65 28 28 63 68 61 72 20 2a 29 20 6c 69 6e 6b ee((char *) link
1360: 50 74 72 29 3b 0a 2b 09 4c 69 6e 6b 46 72 65 65 Ptr);.+.LinkFree
1370: 28 6c 69 6e 6b 50 74 72 29 3b 0a 2b 20 20 20 20 (linkPtr);.+
1380: 7d 0a 2b 20 20 20 20 72 65 74 75 72 6e 20 63 6f }.+ return co
1390: 64 65 3b 0a 2b 7d 0a 2b 0c 0a 2b 2f 2a 0a 2b 20 de;.+}.+..+/*.+
13a0: 2a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d *---------------
13b0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
13c0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
13d0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
13e0: 2d 2d 2d 2d 2d 2d 2d 0a 2b 20 2a 0a 2b 20 2a 20 -------.+ *.+ *
13f0: 54 63 6c 5f 4c 69 6e 6b 41 72 72 61 79 20 2d 2d Tcl_LinkArray --
1400: 0a 2b 20 2a 0a 2b 20 2a 09 4c 69 6e 6b 20 61 20 .+ *.+ *.Link a
1410: 43 20 76 61 72 69 61 62 6c 65 20 61 72 72 61 79 C variable array
1420: 20 74 6f 20 61 20 54 63 6c 20 76 61 72 69 61 62 to a Tcl variab
1430: 6c 65 20 73 6f 20 74 68 61 74 20 63 68 61 6e 67 le so that chang
1440: 65 73 20 74 6f 20 65 69 74 68 65 72 20 6f 6e 65 es to either one
1450: 0a 2b 20 2a 09 63 61 75 73 65 73 20 74 68 65 20 .+ *.causes the
1460: 6f 74 68 65 72 20 74 6f 20 63 68 61 6e 67 65 2e other to change.
1470: 0a 2b 20 2a 0a 2b 20 2a 20 52 65 73 75 6c 74 73 .+ *.+ * Results
1480: 3a 0a 2b 20 2a 09 54 68 65 20 72 65 74 75 72 6e :.+ *.The return
1490: 20 76 61 6c 75 65 20 69 73 20 54 43 4c 5f 4f 4b value is TCL_OK
14a0: 20 69 66 20 65 76 65 72 79 74 68 69 6e 67 20 77 if everything w
14b0: 65 6e 74 20 77 65 6c 6c 20 6f 72 20 54 43 4c 5f ent well or TCL_
14c0: 45 52 52 4f 52 20 69 66 20 61 6e 0a 2b 20 2a 09 ERROR if an.+ *.
14d0: 65 72 72 6f 72 20 6f 63 63 75 72 72 65 64 20 28 error occurred (
14e0: 74 68 65 20 69 6e 74 65 72 70 27 73 20 72 65 73 the interp's res
14f0: 75 6c 74 20 69 73 20 61 6c 73 6f 20 73 65 74 20 ult is also set
1500: 61 66 74 65 72 20 65 72 72 6f 72 73 29 2e 0a 2b after errors)..+
1510: 20 2a 0a 2b 20 2a 20 53 69 64 65 20 65 66 66 65 *.+ * Side effe
1520: 63 74 73 3a 0a 2b 20 2a 09 54 68 65 20 76 61 6c cts:.+ *.The val
1530: 75 65 20 61 74 20 2a 61 64 64 72 20 69 73 20 6c ue at *addr is l
1540: 69 6e 6b 65 64 20 74 6f 20 74 68 65 20 54 63 6c inked to the Tcl
1550: 20 76 61 72 69 61 62 6c 65 20 22 76 61 72 4e 61 variable "varNa
1560: 6d 65 22 2c 20 75 73 69 6e 67 0a 2b 20 2a 09 22 me", using.+ *."
1570: 74 79 70 65 22 20 74 6f 20 63 6f 6e 76 65 72 74 type" to convert
1580: 20 62 65 74 77 65 65 6e 20 73 74 72 69 6e 67 20 between string
1590: 76 61 6c 75 65 73 20 66 6f 72 20 54 63 6c 20 61 values for Tcl a
15a0: 6e 64 20 62 69 6e 61 72 79 20 76 61 6c 75 65 73 nd binary values
15b0: 20 66 6f 72 0a 2b 20 2a 09 2a 61 64 64 72 2e 0a for.+ *.*addr..
15c0: 2b 20 2a 0a 2b 20 2a 2d 2d 2d 2d 2d 2d 2d 2d 2d + *.+ *---------
15d0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
15e0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
15f0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
1600: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 2b 20 -------------.+
1610: 2a 2f 0a 2b 0a 2b 69 6e 74 0a 2b 54 63 6c 5f 4c */.+.+int.+Tcl_L
1620: 69 6e 6b 41 72 72 61 79 28 0a 2b 20 20 20 20 54 inkArray(.+ T
1630: 63 6c 5f 49 6e 74 65 72 70 20 2a 69 6e 74 65 72 cl_Interp *inter
1640: 70 2c 09 09 2f 2a 20 49 6e 74 65 72 70 72 65 74 p,../* Interpret
1650: 65 72 20 69 6e 20 77 68 69 63 68 20 76 61 72 4e er in which varN
1660: 61 6d 65 20 65 78 69 73 74 73 2e 20 2a 2f 0a 2b ame exists. */.+
1670: 20 20 20 20 43 4f 4e 53 54 20 63 68 61 72 20 2a CONST char *
1680: 76 61 72 4e 61 6d 65 2c 09 2f 2a 20 4e 61 6d 65 varName,./* Name
1690: 20 6f 66 20 61 20 67 6c 6f 62 61 6c 20 76 61 72 of a global var
16a0: 69 61 62 6c 65 20 69 6e 20 69 6e 74 65 72 70 2e iable in interp.
16b0: 20 2a 2f 0a 2b 20 20 20 20 63 68 61 72 20 2a 61 */.+ char *a
16c0: 64 64 72 2c 09 09 09 2f 2a 20 41 64 64 72 65 73 ddr,.../* Addres
16d0: 73 20 6f 66 20 61 20 43 20 76 61 72 69 61 62 6c s of a C variabl
16e0: 65 20 74 6f 20 62 65 20 6c 69 6e 6b 65 64 20 74 e to be linked t
16f0: 6f 0a 2b 09 09 09 09 20 2a 20 76 61 72 4e 61 6d o.+.... * varNam
1700: 65 2e 20 49 66 20 4e 55 4c 4c 20 74 68 65 6e 20 e. If NULL then
1710: 74 68 65 20 6e 65 63 65 73 73 61 72 79 20 73 70 the necessary sp
1720: 61 63 65 0a 2b 09 09 09 09 20 2a 20 77 69 6c 6c ace.+.... * will
1730: 20 62 65 20 61 6c 6c 6f 63 61 74 65 64 20 61 6e be allocated an
1740: 64 20 72 65 74 75 72 6e 65 64 20 61 73 20 74 68 d returned as th
1750: 65 0a 2b 09 09 09 09 20 2a 20 69 6e 74 65 72 70 e.+.... * interp
1760: 72 65 74 65 72 20 72 65 73 75 6c 74 2e 20 2a 2f reter result. */
1770: 0a 2b 20 20 20 20 69 6e 74 20 74 79 70 65 2c 09 .+ int type,.
1780: 09 09 2f 2a 20 54 79 70 65 20 6f 66 20 43 20 76 ../* Type of C v
1790: 61 72 69 61 62 6c 65 3a 20 54 43 4c 5f 4c 49 4e ariable: TCL_LIN
17a0: 4b 5f 49 4e 54 2c 20 65 74 63 2e 20 41 6c 73 6f K_INT, etc. Also
17b0: 0a 2b 09 09 09 09 20 2a 20 6d 61 79 20 68 61 76 .+.... * may hav
17c0: 65 20 54 43 4c 5f 4c 49 4e 4b 5f 52 45 41 44 5f e TCL_LINK_READ_
17d0: 4f 4e 4c 59 20 61 6e 64 0a 2b 09 09 09 09 20 2a ONLY and.+.... *
17e0: 20 54 43 4c 5f 4c 49 4e 4b 5f 41 4c 4c 4f 43 20 TCL_LINK_ALLOC
17f0: 4f 52 27 65 64 20 69 6e 2e 20 2a 2f 0a 2b 20 20 OR'ed in. */.+
1800: 20 20 69 6e 74 20 73 69 7a 65 29 09 09 09 2f 2a int size).../*
1810: 20 53 69 7a 65 20 6f 66 20 43 20 76 61 72 69 61 Size of C varia
1820: 62 6c 65 20 61 72 72 61 79 2c 20 3e 31 20 69 66 ble array, >1 if
1830: 20 61 72 72 61 79 20 2a 2f 0a 2b 7b 0a 2b 20 20 array */.+{.+
1840: 20 20 54 63 6c 5f 4f 62 6a 20 2a 6f 62 6a 50 74 Tcl_Obj *objPt
1850: 72 3b 0a 2b 20 20 20 20 4c 69 6e 6b 20 2a 6c 69 r;.+ Link *li
1860: 6e 6b 50 74 72 3b 0a 2b 20 20 20 20 69 6e 74 20 nkPtr;.+ int
1870: 63 6f 64 65 3b 0a 2b 0a 2b 20 20 20 20 69 66 20 code;.+.+ if
1880: 28 73 69 7a 65 20 3c 20 31 29 20 7b 0a 2b 09 54 (size < 1) {.+.T
1890: 63 6c 5f 53 65 74 52 65 73 75 6c 74 28 69 6e 74 cl_SetResult(int
18a0: 65 72 70 2c 20 22 77 72 6f 6e 67 20 61 72 72 61 erp, "wrong arra
18b0: 79 20 73 69 7a 65 20 67 69 76 65 6e 22 2c 20 54 y size given", T
18c0: 43 4c 5f 53 54 41 54 49 43 29 3b 0a 2b 09 72 65 CL_STATIC);.+.re
18d0: 74 75 72 6e 20 54 43 4c 5f 45 52 52 4f 52 3b 0a turn TCL_ERROR;.
18e0: 2b 20 20 20 20 7d 0a 2b 0a 2b 20 20 20 20 6c 69 + }.+.+ li
18f0: 6e 6b 50 74 72 20 3d 20 28 4c 69 6e 6b 20 2a 29 nkPtr = (Link *)
1900: 20 63 6b 61 6c 6c 6f 63 28 73 69 7a 65 6f 66 28 ckalloc(sizeof(
1910: 4c 69 6e 6b 29 29 3b 0a 2b 20 20 20 20 6c 69 6e Link));.+ lin
1920: 6b 50 74 72 2d 3e 74 79 70 65 20 3d 20 74 79 70 kPtr->type = typ
1930: 65 20 26 20 7e 54 43 4c 5f 4c 49 4e 4b 5f 52 45 e & ~TCL_LINK_RE
1940: 41 44 5f 4f 4e 4c 59 3b 0a 2b 20 20 20 20 69 66 AD_ONLY;.+ if
1950: 20 28 74 79 70 65 20 26 20 54 43 4c 5f 4c 49 4e (type & TCL_LIN
1960: 4b 5f 52 45 41 44 5f 4f 4e 4c 59 29 20 7b 0a 2b K_READ_ONLY) {.+
1970: 09 6c 69 6e 6b 50 74 72 2d 3e 66 6c 61 67 73 20 .linkPtr->flags
1980: 3d 20 4c 49 4e 4b 5f 52 45 41 44 5f 4f 4e 4c 59 = LINK_READ_ONLY
1990: 3b 0a 2b 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a ;.+ } else {.
19a0: 2b 09 6c 69 6e 6b 50 74 72 2d 3e 66 6c 61 67 73 +.linkPtr->flags
19b0: 20 3d 20 30 3b 0a 2b 20 20 20 20 7d 0a 2b 20 20 = 0;.+ }.+
19c0: 20 20 73 77 69 74 63 68 20 28 6c 69 6e 6b 50 74 switch (linkPt
19d0: 72 2d 3e 74 79 70 65 29 20 7b 0a 2b 20 20 20 20 r->type) {.+
19e0: 63 61 73 65 20 54 43 4c 5f 4c 49 4e 4b 5f 49 4e case TCL_LINK_IN
19f0: 54 3a 0a 2b 20 20 20 20 63 61 73 65 20 54 43 4c T:.+ case TCL
1a00: 5f 4c 49 4e 4b 5f 42 4f 4f 4c 45 41 4e 3a 0a 2b _LINK_BOOLEAN:.+
1a10: 09 6c 69 6e 6b 50 74 72 2d 3e 62 79 74 65 73 20 .linkPtr->bytes
1a20: 3d 20 73 69 7a 65 20 2a 20 73 69 7a 65 6f 66 28 = size * sizeof(
1a30: 69 6e 74 29 3b 0a 2b 09 62 72 65 61 6b 3b 0a 2b int);.+.break;.+
1a40: 20 20 20 20 63 61 73 65 20 54 43 4c 5f 4c 49 4e case TCL_LIN
1a50: 4b 5f 44 4f 55 42 4c 45 3a 0a 2b 09 6c 69 6e 6b K_DOUBLE:.+.link
1a60: 50 74 72 2d 3e 62 79 74 65 73 20 3d 20 73 69 7a Ptr->bytes = siz
1a70: 65 20 2a 20 73 69 7a 65 6f 66 28 64 6f 75 62 6c e * sizeof(doubl
1a80: 65 29 3b 0a 2b 09 62 72 65 61 6b 3b 0a 2b 20 20 e);.+.break;.+
1a90: 20 20 63 61 73 65 20 54 43 4c 5f 4c 49 4e 4b 5f case TCL_LINK_
1aa0: 57 49 44 45 5f 49 4e 54 3a 0a 2b 09 6c 69 6e 6b WIDE_INT:.+.link
1ab0: 50 74 72 2d 3e 62 79 74 65 73 20 3d 20 73 69 7a Ptr->bytes = siz
1ac0: 65 20 2a 20 73 69 7a 65 6f 66 28 54 63 6c 5f 57 e * sizeof(Tcl_W
1ad0: 69 64 65 49 6e 74 29 3b 0a 2b 09 62 72 65 61 6b ideInt);.+.break
1ae0: 3b 0a 2b 20 20 20 20 63 61 73 65 20 54 43 4c 5f ;.+ case TCL_
1af0: 4c 49 4e 4b 5f 57 49 44 45 5f 55 49 4e 54 3a 0a LINK_WIDE_UINT:.
1b00: 2b 09 6c 69 6e 6b 50 74 72 2d 3e 62 79 74 65 73 +.linkPtr->bytes
1b10: 20 3d 20 73 69 7a 65 20 2a 20 73 69 7a 65 6f 66 = size * sizeof
1b20: 28 54 63 6c 5f 57 69 64 65 55 49 6e 74 29 3b 0a (Tcl_WideUInt);.
1b30: 2b 09 62 72 65 61 6b 3b 0a 2b 20 20 20 20 63 61 +.break;.+ ca
1b40: 73 65 20 54 43 4c 5f 4c 49 4e 4b 5f 43 48 41 52 se TCL_LINK_CHAR
1b50: 3a 0a 2b 09 6c 69 6e 6b 50 74 72 2d 3e 62 79 74 :.+.linkPtr->byt
1b60: 65 73 20 3d 20 73 69 7a 65 20 2a 20 73 69 7a 65 es = size * size
1b70: 6f 66 28 63 68 61 72 29 3b 0a 2b 09 62 72 65 61 of(char);.+.brea
1b80: 6b 3b 0a 2b 20 20 20 20 63 61 73 65 20 54 43 4c k;.+ case TCL
1b90: 5f 4c 49 4e 4b 5f 55 43 48 41 52 3a 0a 2b 09 6c _LINK_UCHAR:.+.l
1ba0: 69 6e 6b 50 74 72 2d 3e 62 79 74 65 73 20 3d 20 inkPtr->bytes =
1bb0: 73 69 7a 65 20 2a 20 73 69 7a 65 6f 66 28 75 6e size * sizeof(un
1bc0: 73 69 67 6e 65 64 20 63 68 61 72 29 3b 0a 2b 09 signed char);.+.
1bd0: 62 72 65 61 6b 3b 0a 2b 20 20 20 20 63 61 73 65 break;.+ case
1be0: 20 54 43 4c 5f 4c 49 4e 4b 5f 53 48 4f 52 54 3a TCL_LINK_SHORT:
1bf0: 0a 2b 09 6c 69 6e 6b 50 74 72 2d 3e 62 79 74 65 .+.linkPtr->byte
1c00: 73 20 3d 20 73 69 7a 65 20 2a 20 73 69 7a 65 6f s = size * sizeo
1c10: 66 28 73 68 6f 72 74 29 3b 0a 2b 09 62 72 65 61 f(short);.+.brea
1c20: 6b 3b 0a 2b 20 20 20 20 63 61 73 65 20 54 43 4c k;.+ case TCL
1c30: 5f 4c 49 4e 4b 5f 55 53 48 4f 52 54 3a 0a 2b 09 _LINK_USHORT:.+.
1c40: 6c 69 6e 6b 50 74 72 2d 3e 62 79 74 65 73 20 3d linkPtr->bytes =
1c50: 20 73 69 7a 65 20 2a 20 73 69 7a 65 6f 66 28 75 size * sizeof(u
1c60: 6e 73 69 67 6e 65 64 20 73 68 6f 72 74 29 3b 0a nsigned short);.
1c70: 2b 09 62 72 65 61 6b 3b 0a 2b 20 20 20 20 63 61 +.break;.+ ca
1c80: 73 65 20 54 43 4c 5f 4c 49 4e 4b 5f 55 49 4e 54 se TCL_LINK_UINT
1c90: 3a 0a 2b 09 6c 69 6e 6b 50 74 72 2d 3e 62 79 74 :.+.linkPtr->byt
1ca0: 65 73 20 3d 20 73 69 7a 65 20 2a 20 73 69 7a 65 es = size * size
1cb0: 6f 66 28 75 6e 73 69 67 6e 65 64 20 69 6e 74 29 of(unsigned int)
1cc0: 3b 0a 2b 09 62 72 65 61 6b 3b 0a 2b 20 20 20 20 ;.+.break;.+
1cd0: 63 61 73 65 20 54 43 4c 5f 4c 49 4e 4b 5f 4c 4f case TCL_LINK_LO
1ce0: 4e 47 3a 0a 2b 09 6c 69 6e 6b 50 74 72 2d 3e 62 NG:.+.linkPtr->b
1cf0: 79 74 65 73 20 3d 20 73 69 7a 65 20 2a 20 73 69 ytes = size * si
1d00: 7a 65 6f 66 28 6c 6f 6e 67 29 3b 0a 2b 09 62 72 zeof(long);.+.br
1d10: 65 61 6b 3b 0a 2b 20 20 20 20 63 61 73 65 20 54 eak;.+ case T
1d20: 43 4c 5f 4c 49 4e 4b 5f 55 4c 4f 4e 47 3a 0a 2b CL_LINK_ULONG:.+
1d30: 09 6c 69 6e 6b 50 74 72 2d 3e 62 79 74 65 73 20 .linkPtr->bytes
1d40: 3d 20 73 69 7a 65 20 2a 20 73 69 7a 65 6f 66 28 = size * sizeof(
1d50: 75 6e 73 69 67 6e 65 64 20 6c 6f 6e 67 29 3b 0a unsigned long);.
1d60: 2b 09 62 72 65 61 6b 3b 0a 2b 20 20 20 20 63 61 +.break;.+ ca
1d70: 73 65 20 54 43 4c 5f 4c 49 4e 4b 5f 46 4c 4f 41 se TCL_LINK_FLOA
1d80: 54 3a 0a 2b 09 6c 69 6e 6b 50 74 72 2d 3e 62 79 T:.+.linkPtr->by
1d90: 74 65 73 20 3d 20 73 69 7a 65 20 2a 20 73 69 7a tes = size * siz
1da0: 65 6f 66 28 66 6c 6f 61 74 29 3b 0a 2b 09 62 72 eof(float);.+.br
1db0: 65 61 6b 3b 0a 2b 20 20 20 20 63 61 73 65 20 54 eak;.+ case T
1dc0: 43 4c 5f 4c 49 4e 4b 5f 53 54 52 49 4e 47 3a 0a CL_LINK_STRING:.
1dd0: 2b 09 6c 69 6e 6b 50 74 72 2d 3e 62 79 74 65 73 +.linkPtr->bytes
1de0: 20 3d 20 73 69 7a 65 20 2a 20 73 69 7a 65 6f 66 = size * sizeof
1df0: 28 63 68 61 72 29 3b 0a 2b 09 73 69 7a 65 20 3d (char);.+.size =
1e00: 20 31 3b 2f 2a 20 74 68 69 73 20 69 73 20 61 20 1;/* this is a
1e10: 76 61 72 69 61 62 6c 65 20 6c 65 6e 67 74 68 20 variable length
1e20: 73 74 72 69 6e 67 2c 20 6e 6f 20 6e 65 65 64 20 string, no need
1e30: 74 6f 20 63 68 65 63 6b 20 6c 61 73 74 20 76 61 to check last va
1e40: 6c 75 65 20 2a 2f 0a 2b 09 2f 2a 20 69 66 20 6e lue */.+./* if n
1e50: 6f 20 61 64 64 72 65 73 73 20 69 73 20 67 69 76 o address is giv
1e60: 65 6e 20 63 72 65 61 74 65 20 6f 6e 65 20 61 6e en create one an
1e70: 64 20 75 73 65 20 61 73 20 61 64 64 72 65 73 73 d use as address
1e80: 20 74 68 65 0a 2b 20 20 20 20 20 20 20 20 20 2a the.+ *
1e90: 20 6e 6f 74 20 6e 65 65 64 65 64 20 6c 69 6e 6b not needed link
1ea0: 50 74 72 2d 3e 6c 61 73 74 56 61 6c 75 65 20 2a Ptr->lastValue *
1eb0: 2f 0a 2b 09 69 66 20 28 61 64 64 72 20 3d 3d 20 /.+.if (addr ==
1ec0: 4e 55 4c 4c 29 20 7b 0a 2b 09 20 20 20 20 6c 69 NULL) {.+. li
1ed0: 6e 6b 50 74 72 2d 3e 6c 61 73 74 56 61 6c 75 65 nkPtr->lastValue
1ee0: 2e 70 63 20 3d 20 63 6b 61 6c 6c 6f 63 28 6c 69 .pc = ckalloc(li
1ef0: 6e 6b 50 74 72 2d 3e 62 79 74 65 73 29 3b 0a 2b nkPtr->bytes);.+
1f00: 09 20 20 20 20 6c 69 6e 6b 50 74 72 2d 3e 66 6c . linkPtr->fl
1f10: 61 67 73 20 7c 3d 20 4c 49 4e 4b 5f 41 4c 4c 4f ags |= LINK_ALLO
1f20: 43 5f 4c 41 53 54 3b 0a 2b 09 20 20 20 20 61 64 C_LAST;.+. ad
1f30: 64 72 20 3d 20 28 63 68 61 72 20 2a 29 26 6c 69 dr = (char *)&li
1f40: 6e 6b 50 74 72 2d 3e 6c 61 73 74 56 61 6c 75 65 nkPtr->lastValue
1f50: 2e 70 63 3b 0a 2b 09 7d 0a 2b 09 62 72 65 61 6b .pc;.+.}.+.break
1f60: 3b 0a 2b 20 20 20 20 63 61 73 65 20 54 43 4c 5f ;.+ case TCL_
1f70: 4c 49 4e 4b 5f 43 48 41 52 53 3a 0a 2b 20 20 20 LINK_CHARS:.+
1f80: 20 63 61 73 65 20 54 43 4c 5f 4c 49 4e 4b 5f 42 case TCL_LINK_B
1f90: 49 4e 41 52 59 3a 0a 2b 09 6c 69 6e 6b 50 74 72 INARY:.+.linkPtr
1fa0: 2d 3e 62 79 74 65 73 20 3d 20 73 69 7a 65 20 2a ->bytes = size *
1fb0: 20 73 69 7a 65 6f 66 28 63 68 61 72 29 3b 0a 2b sizeof(char);.+
1fc0: 09 62 72 65 61 6b 3b 0a 2b 20 20 20 20 64 65 66 .break;.+ def
1fd0: 61 75 6c 74 3a 0a 2b 09 4c 69 6e 6b 46 72 65 65 ault:.+.LinkFree
1fe0: 28 6c 69 6e 6b 50 74 72 29 3b 0a 2b 09 54 63 6c (linkPtr);.+.Tcl
1ff0: 5f 53 65 74 52 65 73 75 6c 74 28 69 6e 74 65 72 _SetResult(inter
2000: 70 2c 20 22 62 61 64 20 6c 69 6e 6b 65 64 20 61 p, "bad linked a
2010: 72 72 61 79 20 76 61 72 69 61 62 6c 65 20 74 79 rray variable ty
2020: 70 65 22 2c 20 54 43 4c 5f 53 54 41 54 49 43 29 pe", TCL_STATIC)
2030: 3b 0a 2b 09 72 65 74 75 72 6e 20 54 43 4c 5f 45 ;.+.return TCL_E
2040: 52 52 4f 52 3b 0a 2b 20 20 20 20 7d 0a 2b 20 20 RROR;.+ }.+
2050: 20 20 2f 2a 20 61 6c 6c 6f 63 61 74 65 20 43 20 /* allocate C
2060: 76 61 72 69 61 62 6c 65 20 73 70 61 63 65 20 69 variable space i
2070: 6e 20 63 61 73 65 20 6e 6f 20 61 64 64 72 65 73 n case no addres
2080: 73 20 69 73 20 67 69 76 65 6e 20 2a 2f 0a 2b 20 s is given */.+
2090: 20 20 20 69 66 20 28 61 64 64 72 3d 3d 4e 55 4c if (addr==NUL
20a0: 4c 29 20 7b 0a 2b 09 6c 69 6e 6b 50 74 72 2d 3e L) {.+.linkPtr->
20b0: 61 64 64 72 20 3d 20 63 6b 61 6c 6c 6f 63 28 6c addr = ckalloc(l
20c0: 69 6e 6b 50 74 72 2d 3e 62 79 74 65 73 29 3b 0a inkPtr->bytes);.
20d0: 2b 09 6c 69 6e 6b 50 74 72 2d 3e 66 6c 61 67 73 +.linkPtr->flags
20e0: 20 7c 3d 20 4c 49 4e 4b 5f 41 4c 4c 4f 43 5f 41 |= LINK_ALLOC_A
20f0: 44 44 52 3b 0a 2b 20 20 20 20 7d 20 65 6c 73 65 DDR;.+ } else
2100: 20 7b 0a 2b 09 6c 69 6e 6b 50 74 72 2d 3e 61 64 {.+.linkPtr->ad
2110: 64 72 20 3d 20 61 64 64 72 3b 0a 2b 20 20 20 20 dr = addr;.+
2120: 7d 0a 2b 20 20 20 20 2f 2a 20 69 66 20 6e 65 63 }.+ /* if nec
2130: 65 73 73 61 72 79 20 63 72 65 61 74 65 20 73 70 essary create sp
2140: 61 63 65 20 66 6f 72 20 6c 61 73 74 20 75 73 65 ace for last use
2150: 64 20 76 61 6c 75 65 20 2a 2f 0a 2b 20 20 20 20 d value */.+
2160: 69 66 20 28 73 69 7a 65 20 3e 20 31 29 20 7b 0a if (size > 1) {.
2170: 2b 09 6c 69 6e 6b 50 74 72 2d 3e 6c 61 73 74 56 +.linkPtr->lastV
2180: 61 6c 75 65 2e 70 63 20 3d 20 63 6b 61 6c 6c 6f alue.pc = ckallo
2190: 63 28 6c 69 6e 6b 50 74 72 2d 3e 62 79 74 65 73 c(linkPtr->bytes
21a0: 29 3b 0a 2b 09 6c 69 6e 6b 50 74 72 2d 3e 66 6c );.+.linkPtr->fl
21b0: 61 67 73 20 7c 3d 20 4c 49 4e 4b 5f 41 4c 4c 4f ags |= LINK_ALLO
21c0: 43 5f 4c 41 53 54 3b 0a 2b 20 20 20 20 7d 0a 2b C_LAST;.+ }.+
21d0: 20 20 20 20 2f 2a 20 73 65 74 20 63 6f 6d 6d 6f /* set commo
21e0: 6e 20 73 74 72 75 63 74 75 72 65 20 76 61 6c 75 n structure valu
21f0: 65 73 20 2a 2f 0a 2b 20 20 20 20 6c 69 6e 6b 50 es */.+ linkP
2200: 74 72 2d 3e 69 6e 74 65 72 70 20 3d 20 69 6e 74 tr->interp = int
2210: 65 72 70 3b 0a 2b 20 20 20 20 6c 69 6e 6b 50 74 erp;.+ linkPt
2220: 72 2d 3e 76 61 72 4e 61 6d 65 20 3d 20 54 63 6c r->varName = Tcl
2230: 5f 4e 65 77 53 74 72 69 6e 67 4f 62 6a 28 76 61 _NewStringObj(va
2240: 72 4e 61 6d 65 2c 20 2d 31 29 3b 0a 2b 20 20 20 rName, -1);.+
2250: 20 54 63 6c 5f 49 6e 63 72 52 65 66 43 6f 75 6e Tcl_IncrRefCoun
2260: 74 28 6c 69 6e 6b 50 74 72 2d 3e 76 61 72 4e 61 t(linkPtr->varNa
2270: 6d 65 29 3b 0a 2b 20 20 20 20 6f 62 6a 50 74 72 me);.+ objPtr
2280: 20 3d 20 4f 62 6a 56 61 6c 75 65 28 6c 69 6e 6b = ObjValue(link
2290: 50 74 72 29 3b 0a 2b 20 20 20 20 69 66 20 28 54 Ptr);.+ if (T
22a0: 63 6c 5f 4f 62 6a 53 65 74 56 61 72 32 28 69 6e cl_ObjSetVar2(in
22b0: 74 65 72 70 2c 20 6c 69 6e 6b 50 74 72 2d 3e 76 terp, linkPtr->v
22c0: 61 72 4e 61 6d 65 2c 20 4e 55 4c 4c 2c 20 6f 62 arName, NULL, ob
22d0: 6a 50 74 72 2c 0a 2b 09 20 20 20 20 54 43 4c 5f jPtr,.+. TCL_
22e0: 47 4c 4f 42 41 4c 5f 4f 4e 4c 59 7c 54 43 4c 5f GLOBAL_ONLY|TCL_
22f0: 4c 45 41 56 45 5f 45 52 52 5f 4d 53 47 29 20 3d LEAVE_ERR_MSG) =
2300: 3d 20 4e 55 4c 4c 29 20 7b 0a 2b 09 54 63 6c 5f = NULL) {.+.Tcl_
2310: 44 65 63 72 52 65 66 43 6f 75 6e 74 28 6c 69 6e DecrRefCount(lin
2320: 6b 50 74 72 2d 3e 76 61 72 4e 61 6d 65 29 3b 0a kPtr->varName);.
2330: 2b 09 4c 69 6e 6b 46 72 65 65 28 6c 69 6e 6b 50 +.LinkFree(linkP
2340: 74 72 29 3b 0a 2b 09 72 65 74 75 72 6e 20 54 43 tr);.+.return TC
2350: 4c 5f 45 52 52 4f 52 3b 0a 2b 20 20 20 20 7d 0a L_ERROR;.+ }.
2360: 2b 20 20 20 20 63 6f 64 65 20 3d 20 54 63 6c 5f + code = Tcl_
2370: 54 72 61 63 65 56 61 72 28 69 6e 74 65 72 70 2c TraceVar(interp,
2380: 20 76 61 72 4e 61 6d 65 2c 20 54 43 4c 5f 47 4c varName, TCL_GL
2390: 4f 42 41 4c 5f 4f 4e 4c 59 7c 54 43 4c 5f 54 52 OBAL_ONLY|TCL_TR
23a0: 41 43 45 5f 52 45 41 44 53 0a 2b 09 20 20 20 20 ACE_READS.+.
23b0: 7c 54 43 4c 5f 54 52 41 43 45 5f 57 52 49 54 45 |TCL_TRACE_WRITE
23c0: 53 7c 54 43 4c 5f 54 52 41 43 45 5f 55 4e 53 45 S|TCL_TRACE_UNSE
23d0: 54 53 2c 20 4c 69 6e 6b 54 72 61 63 65 50 72 6f TS, LinkTracePro
23e0: 63 2c 0a 2b 09 20 20 20 20 28 43 6c 69 65 6e 74 c,.+. (Client
23f0: 44 61 74 61 29 20 6c 69 6e 6b 50 74 72 29 3b 0a Data) linkPtr);.
2400: 2b 20 20 20 20 69 66 20 28 63 6f 64 65 20 21 3d + if (code !=
2410: 20 54 43 4c 5f 4f 4b 29 20 7b 0a 2b 09 54 63 6c TCL_OK) {.+.Tcl
2420: 5f 44 65 63 72 52 65 66 43 6f 75 6e 74 28 6c 69 _DecrRefCount(li
2430: 6e 6b 50 74 72 2d 3e 76 61 72 4e 61 6d 65 29 3b nkPtr->varName);
2440: 0a 2b 09 4c 69 6e 6b 46 72 65 65 28 6c 69 6e 6b .+.LinkFree(link
2450: 50 74 72 29 3b 0a 2b 20 20 20 20 7d 20 65 6c 73 Ptr);.+ } els
2460: 65 20 7b 0a 2b 09 54 63 6c 5f 53 65 74 4f 62 6a e {.+.Tcl_SetObj
2470: 52 65 73 75 6c 74 28 69 6e 74 65 72 70 2c 54 63 Result(interp,Tc
2480: 6c 5f 4e 65 77 49 6e 74 4f 62 6a 28 28 69 6e 74 l_NewIntObj((int
2490: 29 6c 69 6e 6b 50 74 72 2d 3e 61 64 64 72 29 29 )linkPtr->addr))
24a0: 3b 0a 20 20 20 20 20 7d 0a 20 20 20 20 20 72 65 ;. }. re
24b0: 74 75 72 6e 20 63 6f 64 65 3b 0a 20 7d 0a 40 40 turn code;. }.@@
24c0: 20 2d 31 37 36 2c 37 20 2b 33 33 39 2c 37 20 40 -176,7 +339,7 @
24d0: 40 20 54 63 6c 5f 55 6e 6c 69 6e 6b 56 61 72 28 @ Tcl_UnlinkVar(
24e0: 0a 20 09 20 20 20 20 54 43 4c 5f 47 4c 4f 42 41 . . TCL_GLOBA
24f0: 4c 5f 4f 4e 4c 59 7c 54 43 4c 5f 54 52 41 43 45 L_ONLY|TCL_TRACE
2500: 5f 52 45 41 44 53 7c 54 43 4c 5f 54 52 41 43 45 _READS|TCL_TRACE
2510: 5f 57 52 49 54 45 53 7c 54 43 4c 5f 54 52 41 43 _WRITES|TCL_TRAC
2520: 45 5f 55 4e 53 45 54 53 2c 0a 20 09 20 20 20 20 E_UNSETS,. .
2530: 4c 69 6e 6b 54 72 61 63 65 50 72 6f 63 2c 20 28 LinkTraceProc, (
2540: 43 6c 69 65 6e 74 44 61 74 61 29 20 6c 69 6e 6b ClientData) link
2550: 50 74 72 29 3b 0a 20 20 20 20 20 54 63 6c 5f 44 Ptr);. Tcl_D
2560: 65 63 72 52 65 66 43 6f 75 6e 74 28 6c 69 6e 6b ecrRefCount(link
2570: 50 74 72 2d 3e 76 61 72 4e 61 6d 65 29 3b 0a 2d Ptr->varName);.-
2580: 20 20 20 20 63 6b 66 72 65 65 28 28 63 68 61 72 ckfree((char
2590: 20 2a 29 20 6c 69 6e 6b 50 74 72 29 3b 0a 2b 20 *) linkPtr);.+
25a0: 20 20 20 4c 69 6e 6b 46 72 65 65 28 6c 69 6e 6b LinkFree(link
25b0: 50 74 72 29 3b 0a 20 7d 0a 20 0c 0a 20 2f 2a 0a Ptr);. }. .. /*.
25c0: 40 40 20 2d 32 36 32 2c 36 20 2b 34 32 35 2c 39 @@ -262,6 +425,9
25d0: 20 40 40 20 4c 69 6e 6b 54 72 61 63 65 50 72 6f @@ LinkTracePro
25e0: 63 28 0a 20 20 20 20 20 69 6e 74 20 76 61 6c 75 c(. int valu
25f0: 65 49 6e 74 3b 0a 20 20 20 20 20 54 63 6c 5f 57 eInt;. Tcl_W
2600: 69 64 65 49 6e 74 20 76 61 6c 75 65 57 69 64 65 ideInt valueWide
2610: 3b 0a 20 20 20 20 20 64 6f 75 62 6c 65 20 76 61 ;. double va
2620: 6c 75 65 44 6f 75 62 6c 65 3b 0a 2b 20 20 20 20 lueDouble;.+
2630: 69 6e 74 20 6f 62 6a 63 3b 0a 2b 20 20 20 20 54 int objc;.+ T
2640: 63 6c 5f 4f 62 6a 20 2a 2a 6f 62 6a 76 3b 0a 2b cl_Obj **objv;.+
2650: 20 20 20 20 69 6e 74 20 69 3b 0a 20 0a 20 20 20 int i;. .
2660: 20 20 2f 2a 0a 20 20 20 20 20 20 2a 20 49 66 20 /*. * If
2670: 74 68 65 20 76 61 72 69 61 62 6c 65 20 69 73 20 the variable is
2680: 62 65 69 6e 67 20 75 6e 73 65 74 2c 20 74 68 65 being unset, the
2690: 6e 20 6a 75 73 74 20 72 65 2d 63 72 65 61 74 65 n just re-create
26a0: 20 69 74 20 28 77 69 74 68 20 61 20 74 72 61 63 it (with a trac
26b0: 65 29 0a 40 40 20 2d 32 37 31 2c 37 20 2b 34 33 e).@@ -271,7 +43
26c0: 37 2c 37 20 40 40 20 4c 69 6e 6b 54 72 61 63 65 7,7 @@ LinkTrace
26d0: 50 72 6f 63 28 0a 20 20 20 20 20 69 66 20 28 66 Proc(. if (f
26e0: 6c 61 67 73 20 26 20 54 43 4c 5f 54 52 41 43 45 lags & TCL_TRACE
26f0: 5f 55 4e 53 45 54 53 29 20 7b 0a 20 09 69 66 20 _UNSETS) {. .if
2700: 28 54 63 6c 5f 49 6e 74 65 72 70 44 65 6c 65 74 (Tcl_InterpDelet
2710: 65 64 28 69 6e 74 65 72 70 29 29 20 7b 0a 20 09 ed(interp)) {. .
2720: 20 20 20 20 54 63 6c 5f 44 65 63 72 52 65 66 43 Tcl_DecrRefC
2730: 6f 75 6e 74 28 6c 69 6e 6b 50 74 72 2d 3e 76 61 ount(linkPtr->va
2740: 72 4e 61 6d 65 29 3b 0a 2d 09 20 20 20 20 63 6b rName);.-. ck
2750: 66 72 65 65 28 28 63 68 61 72 20 2a 29 20 6c 69 free((char *) li
2760: 6e 6b 50 74 72 29 3b 0a 2b 09 20 20 20 20 4c 69 nkPtr);.+. Li
2770: 6e 6b 46 72 65 65 28 6c 69 6e 6b 50 74 72 29 3b nkFree(linkPtr);
2780: 0a 20 09 7d 20 65 6c 73 65 20 69 66 20 28 66 6c . .} else if (fl
2790: 61 67 73 20 26 20 54 43 4c 5f 54 52 41 43 45 5f ags & TCL_TRACE_
27a0: 44 45 53 54 52 4f 59 45 44 29 20 7b 0a 20 09 20 DESTROYED) {. .
27b0: 20 20 20 54 63 6c 5f 4f 62 6a 53 65 74 56 61 72 Tcl_ObjSetVar
27c0: 32 28 69 6e 74 65 72 70 2c 20 6c 69 6e 6b 50 74 2(interp, linkPt
27d0: 72 2d 3e 76 61 72 4e 61 6d 65 2c 20 4e 55 4c 4c r->varName, NULL
27e0: 2c 20 4f 62 6a 56 61 6c 75 65 28 6c 69 6e 6b 50 , ObjValue(linkP
27f0: 74 72 29 2c 0a 20 09 09 20 20 20 20 54 43 4c 5f tr),. .. TCL_
2800: 47 4c 4f 42 41 4c 5f 4f 4e 4c 59 29 3b 0a 40 40 GLOBAL_ONLY);.@@
2810: 20 2d 32 39 38 2c 36 20 2b 34 36 34 2c 31 31 20 -298,6 +464,11
2820: 40 40 20 4c 69 6e 6b 54 72 61 63 65 50 72 6f 63 @@ LinkTraceProc
2830: 28 0a 20 20 20 20 20 20 2a 2f 0a 20 0a 20 20 20 (. */. .
2840: 20 20 69 66 20 28 66 6c 61 67 73 20 26 20 54 43 if (flags & TC
2850: 4c 5f 54 52 41 43 45 5f 52 45 41 44 53 29 20 7b L_TRACE_READS) {
2860: 0a 2b 09 2f 2a 20 76 61 72 69 61 62 6c 65 20 61 .+./* variable a
2870: 72 72 61 79 73 20 2a 2f 0a 2b 09 69 66 20 28 6c rrays */.+.if (l
2880: 69 6e 6b 50 74 72 2d 3e 66 6c 61 67 73 20 26 20 inkPtr->flags &
2890: 4c 49 4e 4b 5f 41 4c 4c 4f 43 5f 4c 41 53 54 29 LINK_ALLOC_LAST)
28a0: 20 7b 0a 2b 09 20 20 20 20 63 68 61 6e 67 65 64 {.+. changed
28b0: 20 3d 20 6d 65 6d 63 6d 70 28 6c 69 6e 6b 50 74 = memcmp(linkPt
28c0: 72 2d 3e 61 64 64 72 2c 6c 69 6e 6b 50 74 72 2d r->addr,linkPtr-
28d0: 3e 6c 61 73 74 56 61 6c 75 65 2e 70 63 2c 6c 69 >lastValue.pc,li
28e0: 6e 6b 50 74 72 2d 3e 62 79 74 65 73 29 3b 0a 2b nkPtr->bytes);.+
28f0: 09 2f 2a 20 73 69 6e 67 6c 65 20 76 61 72 69 61 ./* single varia
2900: 62 6c 65 73 20 2a 2f 0a 2b 09 7d 20 65 6c 73 65 bles */.+.} else
2910: 20 7b 0a 20 09 73 77 69 74 63 68 20 28 6c 69 6e {. .switch (lin
2920: 6b 50 74 72 2d 3e 74 79 70 65 29 20 7b 0a 20 09 kPtr->type) {. .
2930: 63 61 73 65 20 54 43 4c 5f 4c 49 4e 4b 5f 49 4e case TCL_LINK_IN
2940: 54 3a 0a 20 09 63 61 73 65 20 54 43 4c 5f 4c 49 T:. .case TCL_LI
2950: 4e 4b 5f 42 4f 4f 4c 45 41 4e 3a 0a 40 40 20 2d NK_BOOLEAN:.@@ -
2960: 33 33 37 2c 31 30 20 2b 35 30 38 2c 31 33 20 40 337,10 +508,13 @
2970: 40 20 4c 69 6e 6b 54 72 61 63 65 50 72 6f 63 28 @ LinkTraceProc(
2980: 0a 20 09 20 20 20 20 63 68 61 6e 67 65 64 20 3d . . changed =
2990: 20 28 4c 69 6e 6b 65 64 56 61 72 28 66 6c 6f 61 (LinkedVar(floa
29a0: 74 29 20 21 3d 20 6c 69 6e 6b 50 74 72 2d 3e 6c t) != linkPtr->l
29b0: 61 73 74 56 61 6c 75 65 2e 66 29 3b 0a 20 09 20 astValue.f);. .
29c0: 20 20 20 62 72 65 61 6b 3b 0a 20 09 63 61 73 65 break;. .case
29d0: 20 54 43 4c 5f 4c 49 4e 4b 5f 53 54 52 49 4e 47 TCL_LINK_STRING
29e0: 3a 0a 2b 09 63 61 73 65 20 54 43 4c 5f 4c 49 4e :.+.case TCL_LIN
29f0: 4b 5f 43 48 41 52 53 3a 0a 2b 09 63 61 73 65 20 K_CHARS:.+.case
2a00: 54 43 4c 5f 4c 49 4e 4b 5f 42 49 4e 41 52 59 3a TCL_LINK_BINARY:
2a10: 0a 20 09 20 20 20 20 63 68 61 6e 67 65 64 20 3d . . changed =
2a20: 20 31 3b 0a 20 09 20 20 20 20 62 72 65 61 6b 3b 1;. . break;
2a30: 0a 20 09 64 65 66 61 75 6c 74 3a 0a 2d 09 20 20 . .default:.-.
2a40: 20 20 72 65 74 75 72 6e 20 22 69 6e 74 65 72 6e return "intern
2a50: 61 6c 20 65 72 72 6f 72 3a 20 62 61 64 20 6c 69 al error: bad li
2a60: 6e 6b 65 64 20 76 61 72 69 61 62 6c 65 20 74 79 nked variable ty
2a70: 70 65 22 3b 0a 2b 09 20 20 20 20 63 68 61 6e 67 pe";.+. chang
2a80: 65 64 20 3d 20 30 3b 0a 2b 09 7d 0a 20 09 7d 0a ed = 0;.+.}. .}.
2a90: 20 09 69 66 20 28 63 68 61 6e 67 65 64 29 20 7b .if (changed) {
2aa0: 0a 20 09 20 20 20 20 54 63 6c 5f 4f 62 6a 53 65 . . Tcl_ObjSe
2ab0: 74 56 61 72 32 28 69 6e 74 65 72 70 2c 20 6c 69 tVar2(interp, li
2ac0: 6e 6b 50 74 72 2d 3e 76 61 72 4e 61 6d 65 2c 20 nkPtr->varName,
2ad0: 4e 55 4c 4c 2c 20 4f 62 6a 56 61 6c 75 65 28 6c NULL, ObjValue(l
2ae0: 69 6e 6b 50 74 72 29 2c 0a 40 40 20 2d 33 35 32 inkPtr),.@@ -352
2af0: 2c 37 20 2b 35 32 36 2c 37 20 40 40 20 4c 69 6e ,7 +526,7 @@ Lin
2b00: 6b 54 72 61 63 65 50 72 6f 63 28 0a 20 20 20 20 kTraceProc(.
2b10: 20 2f 2a 0a 20 20 20 20 20 20 2a 20 46 6f 72 20 /*. * For
2b20: 77 72 69 74 65 73 2c 20 66 69 72 73 74 20 6d 61 writes, first ma
2b30: 6b 65 20 73 75 72 65 20 74 68 61 74 20 74 68 65 ke sure that the
2b40: 20 76 61 72 69 61 62 6c 65 20 69 73 20 77 72 69 variable is wri
2b50: 74 61 62 6c 65 2e 20 54 68 65 6e 20 63 6f 6e 76 table. Then conv
2b60: 65 72 74 0a 20 20 20 20 20 20 2a 20 74 68 65 20 ert. * the
2b70: 54 63 6c 20 76 61 6c 75 65 20 74 6f 20 43 20 69 Tcl value to C i
2b80: 66 20 70 6f 73 73 69 62 6c 65 2e 20 49 66 20 74 f possible. If t
2b90: 68 65 20 76 61 72 69 61 62 6c 65 20 69 73 6e 27 he variable isn'
2ba0: 74 20 77 72 69 74 61 62 6c 65 20 6f 72 20 63 61 t writable or ca
2bb0: 6e 27 74 0a 2d 20 20 20 20 20 2a 20 62 65 20 63 n't.- * be c
2bc0: 6f 6e 76 65 72 74 65 64 2c 20 74 68 65 6e 20 72 onverted, then r
2bd0: 65 73 74 6f 72 65 20 74 68 65 20 76 61 72 61 69 estore the varai
2be0: 62 6c 65 27 73 20 6f 6c 64 20 76 61 6c 75 65 20 ble's old value
2bf0: 61 6e 64 20 72 65 74 75 72 6e 20 61 6e 0a 2b 20 and return an.+
2c00: 20 20 20 20 2a 20 62 65 20 63 6f 6e 76 65 72 74 * be convert
2c10: 65 64 2c 20 74 68 65 6e 20 72 65 73 74 6f 72 65 ed, then restore
2c20: 20 74 68 65 20 76 61 72 69 61 62 6c 65 27 73 20 the variable's
2c30: 6f 6c 64 20 76 61 6c 75 65 20 61 6e 64 20 72 65 old value and re
2c40: 74 75 72 6e 20 61 6e 0a 20 20 20 20 20 20 2a 20 turn an. *
2c50: 65 72 72 6f 72 2e 20 41 6e 6f 74 68 65 72 20 74 error. Another t
2c60: 72 69 63 6b 79 20 74 68 69 6e 67 3a 20 77 65 20 ricky thing: we
2c70: 68 61 76 65 20 74 6f 20 73 61 76 65 20 61 6e 64 have to save and
2c80: 20 72 65 73 74 6f 72 65 20 74 68 65 20 69 6e 74 restore the int
2c90: 65 72 70 27 73 0a 20 20 20 20 20 20 2a 20 72 65 erp's. * re
2ca0: 73 75 6c 74 2c 20 73 69 6e 63 65 20 74 68 65 20 sult, since the
2cb0: 76 61 72 69 61 62 6c 65 20 61 63 63 65 73 73 20 variable access
2cc0: 63 6f 75 6c 64 20 6f 63 63 75 72 20 77 68 65 6e could occur when
2cd0: 20 74 68 65 20 72 65 73 75 6c 74 20 68 61 73 20 the result has
2ce0: 62 65 65 6e 0a 20 20 20 20 20 20 2a 20 70 61 72 been. * par
2cf0: 74 69 61 6c 6c 79 20 73 65 74 2e 0a 40 40 20 2d tially set..@@ -
2d00: 33 37 34 2c 36 20 2b 35 34 38 2c 32 31 20 40 40 374,6 +548,21 @@
2d10: 20 4c 69 6e 6b 54 72 61 63 65 50 72 6f 63 28 0a LinkTraceProc(.
2d20: 20 0a 20 20 20 20 20 73 77 69 74 63 68 20 28 6c . switch (l
2d30: 69 6e 6b 50 74 72 2d 3e 74 79 70 65 29 20 7b 0a inkPtr->type) {.
2d40: 20 20 20 20 20 63 61 73 65 20 54 43 4c 5f 4c 49 case TCL_LI
2d50: 4e 4b 5f 49 4e 54 3a 0a 2b 09 69 66 20 28 6c 69 NK_INT:.+.if (li
2d60: 6e 6b 50 74 72 2d 3e 66 6c 61 67 73 20 26 20 4c nkPtr->flags & L
2d70: 49 4e 4b 5f 41 4c 4c 4f 43 5f 4c 41 53 54 29 20 INK_ALLOC_LAST)
2d80: 7b 0a 2b 09 20 20 20 20 69 66 20 28 54 63 6c 5f {.+. if (Tcl_
2d90: 4c 69 73 74 4f 62 6a 47 65 74 45 6c 65 6d 65 6e ListObjGetElemen
2da0: 74 73 28 69 6e 74 65 72 70 2c 76 61 6c 75 65 4f ts(interp,valueO
2db0: 62 6a 2c 26 6f 62 6a 63 2c 26 6f 62 6a 76 29 3d bj,&objc,&objv)=
2dc0: 3d 54 43 4c 5f 45 52 52 4f 52 0a 2b 09 09 7c 7c =TCL_ERROR.+..||
2dd0: 20 6f 62 6a 63 20 21 3d 20 6c 69 6e 6b 50 74 72 objc != linkPtr
2de0: 2d 3e 62 79 74 65 73 2f 73 69 7a 65 6f 66 28 69 ->bytes/sizeof(i
2df0: 6e 74 29 29 20 7b 0a 2b 09 09 72 65 74 75 72 6e nt)) {.+..return
2e00: 20 22 77 72 6f 6e 67 20 64 69 6d 65 6e 73 69 6f "wrong dimensio
2e10: 6e 22 3b 0a 2b 09 20 20 20 20 7d 0a 2b 09 20 20 n";.+. }.+.
2e20: 20 20 66 6f 72 20 28 69 3d 30 3b 20 69 20 3c 20 for (i=0; i <
2e30: 6f 62 6a 63 3b 20 69 2b 2b 29 20 7b 0a 2b 09 09 objc; i++) {.+..
2e40: 69 66 20 28 54 63 6c 5f 47 65 74 49 6e 74 46 72 if (Tcl_GetIntFr
2e50: 6f 6d 4f 62 6a 28 4e 55 4c 4c 2c 6f 62 6a 76 5b omObj(NULL,objv[
2e60: 69 5d 2c 26 6c 69 6e 6b 50 74 72 2d 3e 6c 61 73 i],&linkPtr->las
2e70: 74 56 61 6c 75 65 2e 70 69 5b 69 5d 29 21 3d 20 tValue.pi[i])!=
2e80: 54 43 4c 5f 4f 4b 29 20 7b 0a 2b 09 20 20 20 20 TCL_OK) {.+.
2e90: 20 20 20 20 54 63 6c 5f 4f 62 6a 53 65 74 56 61 Tcl_ObjSetVa
2ea0: 72 32 28 69 6e 74 65 72 70 2c 20 6c 69 6e 6b 50 r2(interp, linkP
2eb0: 74 72 2d 3e 76 61 72 4e 61 6d 65 2c 20 4e 55 4c tr->varName, NUL
2ec0: 4c 2c 20 4f 62 6a 56 61 6c 75 65 28 6c 69 6e 6b L, ObjValue(link
2ed0: 50 74 72 29 2c 0a 2b 09 09 20 20 20 20 54 43 4c Ptr),.+.. 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 20 20 20 20 20 20 20 20 72 65 74 . ret
2f00: 75 72 6e 20 22 76 61 72 69 61 62 6c 65 20 61 72 urn "variable ar
2f10: 72 61 79 20 6d 75 73 74 20 68 61 76 65 20 69 6e ray must have in
2f20: 74 65 67 65 72 20 76 61 6c 75 65 22 3b 0a 2b 09 teger value";.+.
2f30: 09 7d 0a 2b 09 20 20 20 20 7d 0a 2b 09 20 20 20 .}.+. }.+.
2f40: 20 6d 65 6d 63 70 79 28 6c 69 6e 6b 50 74 72 2d memcpy(linkPtr-
2f50: 3e 61 64 64 72 2c 6c 69 6e 6b 50 74 72 2d 3e 6c >addr,linkPtr->l
2f60: 61 73 74 56 61 6c 75 65 2e 70 63 2c 6c 69 6e 6b astValue.pc,link
2f70: 50 74 72 2d 3e 62 79 74 65 73 29 3b 0a 2b 09 20 Ptr->bytes);.+.
2f80: 20 20 20 62 72 65 61 6b 3b 0a 2b 09 7d 0a 20 09 break;.+.}. .
2f90: 69 66 20 28 54 63 6c 5f 47 65 74 49 6e 74 46 72 if (Tcl_GetIntFr
2fa0: 6f 6d 4f 62 6a 28 4e 55 4c 4c 2c 20 76 61 6c 75 omObj(NULL, valu
2fb0: 65 4f 62 6a 2c 20 26 6c 69 6e 6b 50 74 72 2d 3e eObj, &linkPtr->
2fc0: 6c 61 73 74 56 61 6c 75 65 2e 69 29 0a 20 09 09 lastValue.i). ..
2fd0: 21 3d 20 54 43 4c 5f 4f 4b 29 20 7b 0a 20 09 20 != TCL_OK) {. .
2fe0: 20 20 20 54 63 6c 5f 4f 62 6a 53 65 74 56 61 72 Tcl_ObjSetVar
2ff0: 32 28 69 6e 74 65 72 70 2c 20 6c 69 6e 6b 50 74 2(interp, linkPt
3000: 72 2d 3e 76 61 72 4e 61 6d 65 2c 20 4e 55 4c 4c r->varName, NULL
3010: 2c 20 4f 62 6a 56 61 6c 75 65 28 6c 69 6e 6b 50 , ObjValue(linkP
3020: 74 72 29 2c 0a 40 40 20 2d 33 38 34 2c 31 36 20 tr),.@@ -384,16
3030: 2b 35 37 33 2c 35 33 20 40 40 20 4c 69 6e 6b 54 +573,53 @@ LinkT
3040: 72 61 63 65 50 72 6f 63 28 0a 20 09 62 72 65 61 raceProc(. .brea
3050: 6b 3b 0a 20 0a 20 20 20 20 20 63 61 73 65 20 54 k;. . case T
3060: 43 4c 5f 4c 49 4e 4b 5f 57 49 44 45 5f 49 4e 54 CL_LINK_WIDE_INT
3070: 3a 0a 2b 09 69 66 20 28 6c 69 6e 6b 50 74 72 2d :.+.if (linkPtr-
3080: 3e 66 6c 61 67 73 20 26 20 4c 49 4e 4b 5f 41 4c >flags & LINK_AL
3090: 4c 4f 43 5f 4c 41 53 54 29 20 7b 0a 2b 09 20 20 LOC_LAST) {.+.
30a0: 20 20 69 66 20 28 54 63 6c 5f 4c 69 73 74 4f 62 if (Tcl_ListOb
30b0: 6a 47 65 74 45 6c 65 6d 65 6e 74 73 28 69 6e 74 jGetElements(int
30c0: 65 72 70 2c 76 61 6c 75 65 4f 62 6a 2c 26 6f 62 erp,valueObj,&ob
30d0: 6a 63 2c 26 6f 62 6a 76 29 3d 3d 54 43 4c 5f 45 jc,&objv)==TCL_E
30e0: 52 52 4f 52 0a 2b 09 09 7c 7c 20 6f 62 6a 63 20 RROR.+..|| objc
30f0: 21 3d 20 6c 69 6e 6b 50 74 72 2d 3e 62 79 74 65 != linkPtr->byte
3100: 73 2f 73 69 7a 65 6f 66 28 54 63 6c 5f 57 69 64 s/sizeof(Tcl_Wid
3110: 65 49 6e 74 29 29 20 7b 0a 2b 09 09 72 65 74 75 eInt)) {.+..retu
3120: 72 6e 20 22 77 72 6f 6e 67 20 64 69 6d 65 6e 73 rn "wrong dimens
3130: 69 6f 6e 22 3b 0a 2b 09 20 20 20 20 7d 0a 2b 09 ion";.+. }.+.
3140: 20 20 20 20 66 6f 72 20 28 69 3d 30 3b 20 69 20 for (i=0; i
3150: 3c 20 6f 62 6a 63 3b 20 69 2b 2b 29 20 7b 0a 2b < objc; i++) {.+
3160: 09 09 69 66 20 28 54 63 6c 5f 47 65 74 57 69 64 ..if (Tcl_GetWid
3170: 65 49 6e 74 46 72 6f 6d 4f 62 6a 28 4e 55 4c 4c eIntFromObj(NULL
3180: 2c 6f 62 6a 76 5b 69 5d 2c 26 6c 69 6e 6b 50 74 ,objv[i],&linkPt
3190: 72 2d 3e 6c 61 73 74 56 61 6c 75 65 2e 70 77 5b r->lastValue.pw[
31a0: 69 5d 29 21 3d 20 54 43 4c 5f 4f 4b 29 20 7b 0a i])!= TCL_OK) {.
31b0: 2b 09 20 20 20 20 20 20 20 20 54 63 6c 5f 4f 62 +. Tcl_Ob
31c0: 6a 53 65 74 56 61 72 32 28 69 6e 74 65 72 70 2c jSetVar2(interp,
31d0: 20 6c 69 6e 6b 50 74 72 2d 3e 76 61 72 4e 61 6d linkPtr->varNam
31e0: 65 2c 20 4e 55 4c 4c 2c 20 4f 62 6a 56 61 6c 75 e, NULL, ObjValu
31f0: 65 28 6c 69 6e 6b 50 74 72 29 2c 0a 2b 09 09 20 e(linkPtr),.+..
3200: 20 20 20 54 43 4c 5f 47 4c 4f 42 41 4c 5f 4f 4e TCL_GLOBAL_ON
3210: 4c 59 29 3b 0a 2b 09 20 20 20 20 20 20 20 20 20 LY);.+.
3220: 20 20 20 72 65 74 75 72 6e 20 22 76 61 72 69 61 return "varia
3230: 62 6c 65 20 61 72 72 61 79 20 6d 75 73 74 20 68 ble array must h
3240: 61 76 65 20 77 69 64 65 20 69 6e 74 65 67 65 72 ave wide integer
3250: 20 76 61 6c 75 65 22 3b 0a 2b 09 09 7d 0a 2b 09 value";.+..}.+.
3260: 20 20 20 20 7d 0a 2b 09 20 20 20 20 6d 65 6d 63 }.+. memc
3270: 70 79 28 6c 69 6e 6b 50 74 72 2d 3e 61 64 64 72 py(linkPtr->addr
3280: 2c 6c 69 6e 6b 50 74 72 2d 3e 6c 61 73 74 56 61 ,linkPtr->lastVa
3290: 6c 75 65 2e 70 63 2c 6c 69 6e 6b 50 74 72 2d 3e lue.pc,linkPtr->
32a0: 62 79 74 65 73 29 3b 0a 2b 09 20 20 20 20 62 72 bytes);.+. br
32b0: 65 61 6b 3b 0a 2b 09 7d 0a 20 09 69 66 20 28 54 eak;.+.}. .if (T
32c0: 63 6c 5f 47 65 74 57 69 64 65 49 6e 74 46 72 6f cl_GetWideIntFro
32d0: 6d 4f 62 6a 28 4e 55 4c 4c 2c 20 76 61 6c 75 65 mObj(NULL, value
32e0: 4f 62 6a 2c 20 26 6c 69 6e 6b 50 74 72 2d 3e 6c Obj, &linkPtr->l
32f0: 61 73 74 56 61 6c 75 65 2e 77 29 0a 20 09 09 21 astValue.w). ..!
3300: 3d 20 54 43 4c 5f 4f 4b 29 20 7b 0a 20 09 20 20 = TCL_OK) {. .
3310: 20 20 54 63 6c 5f 4f 62 6a 53 65 74 56 61 72 32 Tcl_ObjSetVar2
3320: 28 69 6e 74 65 72 70 2c 20 6c 69 6e 6b 50 74 72 (interp, linkPtr
3330: 2d 3e 76 61 72 4e 61 6d 65 2c 20 4e 55 4c 4c 2c ->varName, NULL,
3340: 20 4f 62 6a 56 61 6c 75 65 28 6c 69 6e 6b 50 74 ObjValue(linkPt
3350: 72 29 2c 0a 20 09 09 20 20 20 20 54 43 4c 5f 47 r),. .. TCL_G
3360: 4c 4f 42 41 4c 5f 4f 4e 4c 59 29 3b 0a 2d 09 20 LOBAL_ONLY);.-.
3370: 20 20 20 72 65 74 75 72 6e 20 22 76 61 72 69 61 return "varia
3380: 62 6c 65 20 6d 75 73 74 20 68 61 76 65 20 69 6e ble must have in
3390: 74 65 67 65 72 20 76 61 6c 75 65 22 3b 0a 2b 09 teger value";.+.
33a0: 20 20 20 20 72 65 74 75 72 6e 20 22 76 61 72 69 return "vari
33b0: 61 62 6c 65 20 6d 75 73 74 20 68 61 76 65 20 77 able must have w
33c0: 69 64 65 20 69 6e 74 65 67 65 72 20 76 61 6c 75 ide integer valu
33d0: 65 22 3b 0a 20 09 7d 0a 20 09 4c 69 6e 6b 65 64 e";. .}. .Linked
33e0: 56 61 72 28 54 63 6c 5f 57 69 64 65 49 6e 74 29 Var(Tcl_WideInt)
33f0: 20 3d 20 6c 69 6e 6b 50 74 72 2d 3e 6c 61 73 74 = linkPtr->last
3400: 56 61 6c 75 65 2e 77 3b 0a 20 09 62 72 65 61 6b Value.w;. .break
3410: 3b 0a 20 0a 20 20 20 20 20 63 61 73 65 20 54 43 ;. . case TC
3420: 4c 5f 4c 49 4e 4b 5f 44 4f 55 42 4c 45 3a 0a 2b L_LINK_DOUBLE:.+
3430: 09 69 66 20 28 6c 69 6e 6b 50 74 72 2d 3e 66 6c .if (linkPtr->fl
3440: 61 67 73 20 26 20 4c 49 4e 4b 5f 41 4c 4c 4f 43 ags & LINK_ALLOC
3450: 5f 4c 41 53 54 29 20 7b 0a 2b 09 20 20 20 20 69 _LAST) {.+. i
3460: 66 20 28 54 63 6c 5f 4c 69 73 74 4f 62 6a 47 65 f (Tcl_ListObjGe
3470: 74 45 6c 65 6d 65 6e 74 73 28 69 6e 74 65 72 70 tElements(interp
3480: 2c 76 61 6c 75 65 4f 62 6a 2c 26 6f 62 6a 63 2c ,valueObj,&objc,
3490: 26 6f 62 6a 76 29 3d 3d 54 43 4c 5f 45 52 52 4f &objv)==TCL_ERRO
34a0: 52 0a 2b 09 09 7c 7c 20 6f 62 6a 63 20 21 3d 20 R.+..|| objc !=
34b0: 6c 69 6e 6b 50 74 72 2d 3e 62 79 74 65 73 2f 73 linkPtr->bytes/s
34c0: 69 7a 65 6f 66 28 64 6f 75 62 6c 65 29 29 20 7b izeof(double)) {
34d0: 0a 2b 09 09 72 65 74 75 72 6e 20 22 77 72 6f 6e .+..return "wron
34e0: 67 20 64 69 6d 65 6e 73 69 6f 6e 22 3b 0a 2b 09 g dimension";.+.
34f0: 20 20 20 20 7d 0a 2b 09 20 20 20 20 66 6f 72 20 }.+. for
3500: 28 69 3d 30 3b 20 69 20 3c 20 6f 62 6a 63 3b 20 (i=0; i < objc;
3510: 69 2b 2b 29 20 7b 0a 2b 09 09 69 66 20 28 54 63 i++) {.+..if (Tc
3520: 6c 5f 47 65 74 44 6f 75 62 6c 65 46 72 6f 6d 4f l_GetDoubleFromO
3530: 62 6a 28 4e 55 4c 4c 2c 6f 62 6a 76 5b 69 5d 2c bj(NULL,objv[i],
3540: 26 6c 69 6e 6b 50 74 72 2d 3e 6c 61 73 74 56 61 &linkPtr->lastVa
3550: 6c 75 65 2e 70 64 5b 69 5d 29 21 3d 20 54 43 4c lue.pd[i])!= TCL
3560: 5f 4f 4b 29 20 7b 0a 2b 23 69 66 64 65 66 20 41 _OK) {.+#ifdef A
3570: 43 43 45 50 54 5f 4e 41 4e 0a 2b 09 20 20 20 20 CCEPT_NAN.+.
3580: 69 66 20 28 76 61 6c 75 65 4f 62 6a 2d 3e 74 79 if (valueObj->ty
3590: 70 65 50 74 72 20 21 3d 20 26 74 63 6c 44 6f 75 pePtr != &tclDou
35a0: 62 6c 65 54 79 70 65 29 20 7b 0a 2b 23 65 6e 64 bleType) {.+#end
35b0: 69 66 0a 2b 09 20 20 20 20 20 20 20 20 54 63 6c if.+. Tcl
35c0: 5f 4f 62 6a 53 65 74 56 61 72 32 28 69 6e 74 65 _ObjSetVar2(inte
35d0: 72 70 2c 20 6c 69 6e 6b 50 74 72 2d 3e 76 61 72 rp, linkPtr->var
35e0: 4e 61 6d 65 2c 20 4e 55 4c 4c 2c 20 4f 62 6a 56 Name, NULL, ObjV
35f0: 61 6c 75 65 28 6c 69 6e 6b 50 74 72 29 2c 0a 2b alue(linkPtr),.+
3600: 09 09 20 20 20 20 54 43 4c 5f 47 4c 4f 42 41 4c .. TCL_GLOBAL
3610: 5f 4f 4e 4c 59 29 3b 0a 2b 09 20 20 20 20 20 20 _ONLY);.+.
3620: 20 20 20 20 20 20 72 65 74 75 72 6e 20 22 76 61 return "va
3630: 72 69 61 62 6c 65 20 61 72 72 61 79 20 6d 75 73 riable array mus
3640: 74 20 68 61 76 65 20 72 65 61 6c 20 76 61 6c 75 t have real valu
3650: 65 22 3b 0a 2b 23 69 66 64 65 66 20 41 43 43 45 e";.+#ifdef ACCE
3660: 50 54 5f 4e 41 4e 0a 2b 09 20 20 20 20 7d 0a 2b PT_NAN.+. }.+
3670: 09 20 20 20 20 6c 69 6e 6b 50 74 72 2d 3e 6c 61 . linkPtr->la
3680: 73 74 56 61 6c 75 65 2e 70 64 69 5b 69 5d 20 3d stValue.pdi[i] =
3690: 20 76 61 6c 75 65 4f 62 6a 2d 3e 69 6e 74 65 72 valueObj->inter
36a0: 6e 61 6c 52 65 70 2e 64 6f 75 62 6c 65 56 61 6c nalRep.doubleVal
36b0: 75 65 3b 0a 2b 23 65 6e 64 69 66 0a 2b 09 09 7d ue;.+#endif.+..}
36c0: 0a 2b 09 20 20 20 20 7d 0a 2b 09 20 20 20 20 6d .+. }.+. m
36d0: 65 6d 63 70 79 28 6c 69 6e 6b 50 74 72 2d 3e 61 emcpy(linkPtr->a
36e0: 64 64 72 2c 6c 69 6e 6b 50 74 72 2d 3e 6c 61 73 ddr,linkPtr->las
36f0: 74 56 61 6c 75 65 2e 70 63 2c 6c 69 6e 6b 50 74 tValue.pc,linkPt
3700: 72 2d 3e 62 79 74 65 73 29 3b 0a 2b 09 20 20 20 r->bytes);.+.
3710: 20 62 72 65 61 6b 3b 0a 2b 09 7d 0a 20 09 69 66 break;.+.}. .if
3720: 20 28 54 63 6c 5f 47 65 74 44 6f 75 62 6c 65 46 (Tcl_GetDoubleF
3730: 72 6f 6d 4f 62 6a 28 4e 55 4c 4c 2c 20 76 61 6c romObj(NULL, val
3740: 75 65 4f 62 6a 2c 20 26 6c 69 6e 6b 50 74 72 2d ueObj, &linkPtr-
3750: 3e 6c 61 73 74 56 61 6c 75 65 2e 64 29 0a 20 09 >lastValue.d). .
3760: 09 21 3d 20 54 43 4c 5f 4f 4b 29 20 7b 0a 20 23 .!= TCL_OK) {. #
3770: 69 66 64 65 66 20 41 43 43 45 50 54 5f 4e 41 4e ifdef ACCEPT_NAN
3780: 0a 40 40 20 2d 34 31 31 2c 36 20 2b 36 33 37 2c .@@ -411,6 +637,
3790: 32 31 20 40 40 20 4c 69 6e 6b 54 72 61 63 65 50 21 @@ LinkTraceP
37a0: 72 6f 63 28 0a 20 09 62 72 65 61 6b 3b 0a 20 0a roc(. .break;. .
37b0: 20 20 20 20 20 63 61 73 65 20 54 43 4c 5f 4c 49 case TCL_LI
37c0: 4e 4b 5f 42 4f 4f 4c 45 41 4e 3a 0a 2b 09 69 66 NK_BOOLEAN:.+.if
37d0: 20 28 6c 69 6e 6b 50 74 72 2d 3e 66 6c 61 67 73 (linkPtr->flags
37e0: 20 26 20 4c 49 4e 4b 5f 41 4c 4c 4f 43 5f 4c 41 & LINK_ALLOC_LA
37f0: 53 54 29 20 7b 0a 2b 09 20 20 20 20 69 66 20 28 ST) {.+. if (
3800: 54 63 6c 5f 4c 69 73 74 4f 62 6a 47 65 74 45 6c Tcl_ListObjGetEl
3810: 65 6d 65 6e 74 73 28 69 6e 74 65 72 70 2c 76 61 ements(interp,va
3820: 6c 75 65 4f 62 6a 2c 26 6f 62 6a 63 2c 26 6f 62 lueObj,&objc,&ob
3830: 6a 76 29 3d 3d 54 43 4c 5f 45 52 52 4f 52 0a 2b jv)==TCL_ERROR.+
3840: 09 09 7c 7c 20 6f 62 6a 63 20 21 3d 20 6c 69 6e ..|| objc != lin
3850: 6b 50 74 72 2d 3e 62 79 74 65 73 2f 73 69 7a 65 kPtr->bytes/size
3860: 6f 66 28 69 6e 74 29 29 20 7b 0a 2b 09 09 72 65 of(int)) {.+..re
3870: 74 75 72 6e 20 22 77 72 6f 6e 67 20 64 69 6d 65 turn "wrong dime
3880: 6e 73 69 6f 6e 22 3b 0a 2b 09 20 20 20 20 7d 0a nsion";.+. }.
3890: 2b 09 20 20 20 20 66 6f 72 20 28 69 3d 30 3b 20 +. for (i=0;
38a0: 69 20 3c 20 6f 62 6a 63 3b 20 69 2b 2b 29 20 7b i < objc; i++) {
38b0: 0a 2b 09 09 69 66 20 28 54 63 6c 5f 47 65 74 42 .+..if (Tcl_GetB
38c0: 6f 6f 6c 65 61 6e 46 72 6f 6d 4f 62 6a 28 4e 55 ooleanFromObj(NU
38d0: 4c 4c 2c 6f 62 6a 76 5b 69 5d 2c 26 6c 69 6e 6b LL,objv[i],&link
38e0: 50 74 72 2d 3e 6c 61 73 74 56 61 6c 75 65 2e 70 Ptr->lastValue.p
38f0: 69 5b 69 5d 29 21 3d 20 54 43 4c 5f 4f 4b 29 20 i[i])!= TCL_OK)
3900: 7b 0a 2b 09 20 20 20 20 20 20 20 20 54 63 6c 5f {.+. Tcl_
3910: 4f 62 6a 53 65 74 56 61 72 32 28 69 6e 74 65 72 ObjSetVar2(inter
3920: 70 2c 20 6c 69 6e 6b 50 74 72 2d 3e 76 61 72 4e p, linkPtr->varN
3930: 61 6d 65 2c 20 4e 55 4c 4c 2c 20 4f 62 6a 56 61 ame, NULL, ObjVa
3940: 6c 75 65 28 6c 69 6e 6b 50 74 72 29 2c 0a 2b 09 lue(linkPtr),.+.
3950: 09 20 20 20 20 54 43 4c 5f 47 4c 4f 42 41 4c 5f . TCL_GLOBAL_
3960: 4f 4e 4c 59 29 3b 0a 2b 09 20 20 20 20 20 20 20 ONLY);.+.
3970: 20 20 20 20 20 72 65 74 75 72 6e 20 22 76 61 72 return "var
3980: 69 61 62 6c 65 20 61 72 72 61 79 20 6d 75 73 74 iable array must
3990: 20 68 61 76 65 20 62 6f 6f 6c 65 61 6e 20 76 61 have boolean va
39a0: 6c 75 65 22 3b 0a 2b 09 09 7d 0a 2b 09 20 20 20 lue";.+..}.+.
39b0: 20 7d 0a 2b 09 20 20 20 20 6d 65 6d 63 70 79 28 }.+. memcpy(
39c0: 6c 69 6e 6b 50 74 72 2d 3e 61 64 64 72 2c 6c 69 linkPtr->addr,li
39d0: 6e 6b 50 74 72 2d 3e 6c 61 73 74 56 61 6c 75 65 nkPtr->lastValue
39e0: 2e 70 63 2c 6c 69 6e 6b 50 74 72 2d 3e 62 79 74 .pc,linkPtr->byt
39f0: 65 73 29 3b 0a 2b 09 20 20 20 20 62 72 65 61 6b es);.+. break
3a00: 3b 0a 2b 09 7d 0a 20 09 69 66 20 28 54 63 6c 5f ;.+.}. .if (Tcl_
3a10: 47 65 74 42 6f 6f 6c 65 61 6e 46 72 6f 6d 4f 62 GetBooleanFromOb
3a20: 6a 28 4e 55 4c 4c 2c 20 76 61 6c 75 65 4f 62 6a j(NULL, valueObj
3a30: 2c 20 26 6c 69 6e 6b 50 74 72 2d 3e 6c 61 73 74 , &linkPtr->last
3a40: 56 61 6c 75 65 2e 69 29 0a 20 09 09 21 3d 20 54 Value.i). ..!= T
3a50: 43 4c 5f 4f 4b 29 20 7b 0a 20 09 20 20 20 20 54 CL_OK) {. . T
3a60: 63 6c 5f 4f 62 6a 53 65 74 56 61 72 32 28 69 6e cl_ObjSetVar2(in
3a70: 74 65 72 70 2c 20 6c 69 6e 6b 50 74 72 2d 3e 76 terp, linkPtr->v
3a80: 61 72 4e 61 6d 65 2c 20 4e 55 4c 4c 2c 20 4f 62 arName, NULL, Ob
3a90: 6a 56 61 6c 75 65 28 6c 69 6e 6b 50 74 72 29 2c jValue(linkPtr),
3aa0: 0a 40 40 20 2d 34 32 31 2c 36 20 2b 36 36 32 2c .@@ -421,6 +662,
3ab0: 32 33 20 40 40 20 4c 69 6e 6b 54 72 61 63 65 50 23 @@ LinkTraceP
3ac0: 72 6f 63 28 0a 20 09 62 72 65 61 6b 3b 0a 20 0a roc(. .break;. .
3ad0: 20 20 20 20 20 63 61 73 65 20 54 43 4c 5f 4c 49 case TCL_LI
3ae0: 4e 4b 5f 43 48 41 52 3a 0a 2b 09 69 66 20 28 6c NK_CHAR:.+.if (l
3af0: 69 6e 6b 50 74 72 2d 3e 66 6c 61 67 73 20 26 20 inkPtr->flags &
3b00: 4c 49 4e 4b 5f 41 4c 4c 4f 43 5f 4c 41 53 54 29 LINK_ALLOC_LAST)
3b10: 20 7b 0a 2b 09 20 20 20 20 69 66 20 28 54 63 6c {.+. if (Tcl
3b20: 5f 4c 69 73 74 4f 62 6a 47 65 74 45 6c 65 6d 65 _ListObjGetEleme
3b30: 6e 74 73 28 69 6e 74 65 72 70 2c 76 61 6c 75 65 nts(interp,value
3b40: 4f 62 6a 2c 26 6f 62 6a 63 2c 26 6f 62 6a 76 29 Obj,&objc,&objv)
3b50: 3d 3d 54 43 4c 5f 45 52 52 4f 52 0a 2b 09 09 7c ==TCL_ERROR.+..|
3b60: 7c 20 6f 62 6a 63 20 21 3d 20 6c 69 6e 6b 50 74 | objc != linkPt
3b70: 72 2d 3e 62 79 74 65 73 2f 73 69 7a 65 6f 66 28 r->bytes/sizeof(
3b80: 63 68 61 72 29 29 20 7b 0a 2b 09 09 72 65 74 75 char)) {.+..retu
3b90: 72 6e 20 22 77 72 6f 6e 67 20 64 69 6d 65 6e 73 rn "wrong dimens
3ba0: 69 6f 6e 22 3b 0a 2b 09 20 20 20 20 7d 0a 2b 09 ion";.+. }.+.
3bb0: 20 20 20 20 66 6f 72 20 28 69 3d 30 3b 20 69 20 for (i=0; i
3bc0: 3c 20 6f 62 6a 63 3b 20 69 2b 2b 29 20 7b 0a 2b < objc; i++) {.+
3bd0: 09 09 69 66 20 28 54 63 6c 5f 47 65 74 49 6e 74 ..if (Tcl_GetInt
3be0: 46 72 6f 6d 4f 62 6a 28 4e 55 4c 4c 2c 6f 62 6a FromObj(NULL,obj
3bf0: 76 5b 69 5d 2c 26 76 61 6c 75 65 49 6e 74 29 21 v[i],&valueInt)!
3c00: 3d 20 54 43 4c 5f 4f 4b 0a 2b 09 09 09 7c 7c 20 = TCL_OK.+...||
3c10: 76 61 6c 75 65 49 6e 74 20 3c 20 53 43 48 41 52 valueInt < SCHAR
3c20: 5f 4d 49 4e 20 7c 7c 20 76 61 6c 75 65 49 6e 74 _MIN || valueInt
3c30: 20 3e 20 53 43 48 41 52 5f 4d 41 58 29 20 7b 0a > SCHAR_MAX) {.
3c40: 2b 09 20 20 20 20 20 20 20 20 54 63 6c 5f 4f 62 +. Tcl_Ob
3c50: 6a 53 65 74 56 61 72 32 28 69 6e 74 65 72 70 2c jSetVar2(interp,
3c60: 20 6c 69 6e 6b 50 74 72 2d 3e 76 61 72 4e 61 6d linkPtr->varNam
3c70: 65 2c 20 4e 55 4c 4c 2c 20 4f 62 6a 56 61 6c 75 e, NULL, ObjValu
3c80: 65 28 6c 69 6e 6b 50 74 72 29 2c 0a 2b 09 09 20 e(linkPtr),.+..
3c90: 20 20 20 54 43 4c 5f 47 4c 4f 42 41 4c 5f 4f 4e TCL_GLOBAL_ON
3ca0: 4c 59 29 3b 0a 2b 09 20 20 20 20 20 20 20 20 20 LY);.+.
3cb0: 20 20 20 72 65 74 75 72 6e 20 22 76 61 72 69 61 return "varia
3cc0: 62 6c 65 20 61 72 72 61 79 20 6d 75 73 74 20 68 ble array must h
3cd0: 61 76 65 20 63 68 61 72 20 76 61 6c 75 65 22 3b ave char value";
3ce0: 0a 2b 09 09 7d 0a 2b 09 09 6c 69 6e 6b 50 74 72 .+..}.+..linkPtr
3cf0: 2d 3e 6c 61 73 74 56 61 6c 75 65 2e 70 63 5b 69 ->lastValue.pc[i
3d00: 5d 20 3d 20 28 63 68 61 72 29 76 61 6c 75 65 49 ] = (char)valueI
3d10: 6e 74 3b 0a 2b 09 20 20 20 20 7d 0a 2b 09 20 20 nt;.+. }.+.
3d20: 20 20 6d 65 6d 63 70 79 28 6c 69 6e 6b 50 74 72 memcpy(linkPtr
3d30: 2d 3e 61 64 64 72 2c 6c 69 6e 6b 50 74 72 2d 3e ->addr,linkPtr->
3d40: 6c 61 73 74 56 61 6c 75 65 2e 70 63 2c 6c 69 6e lastValue.pc,lin
3d50: 6b 50 74 72 2d 3e 62 79 74 65 73 29 3b 0a 2b 09 kPtr->bytes);.+.
3d60: 20 20 20 20 62 72 65 61 6b 3b 0a 2b 09 7d 0a 20 break;.+.}.
3d70: 09 69 66 20 28 54 63 6c 5f 47 65 74 49 6e 74 46 .if (Tcl_GetIntF
3d80: 72 6f 6d 4f 62 6a 28 69 6e 74 65 72 70 2c 20 76 romObj(interp, v
3d90: 61 6c 75 65 4f 62 6a 2c 20 26 76 61 6c 75 65 49 alueObj, &valueI
3da0: 6e 74 29 20 21 3d 20 54 43 4c 5f 4f 4b 0a 20 09 nt) != TCL_OK. .
3db0: 09 7c 7c 20 76 61 6c 75 65 49 6e 74 20 3c 20 53 .|| valueInt < S
3dc0: 43 48 41 52 5f 4d 49 4e 20 7c 7c 20 76 61 6c 75 CHAR_MIN || valu
3dd0: 65 49 6e 74 20 3e 20 53 43 48 41 52 5f 4d 41 58 eInt > SCHAR_MAX
3de0: 29 20 7b 0a 20 09 20 20 20 20 54 63 6c 5f 4f 62 ) {. . Tcl_Ob
3df0: 6a 53 65 74 56 61 72 32 28 69 6e 74 65 72 70 2c jSetVar2(interp,
3e00: 20 6c 69 6e 6b 50 74 72 2d 3e 76 61 72 4e 61 6d linkPtr->varNam
3e10: 65 2c 20 4e 55 4c 4c 2c 20 4f 62 6a 56 61 6c 75 e, NULL, ObjValu
3e20: 65 28 6c 69 6e 6b 50 74 72 29 2c 0a 40 40 20 2d e(linkPtr),.@@ -
3e30: 34 33 32 2c 36 20 2b 36 39 30 2c 32 33 20 40 40 432,6 +690,23 @@
3e40: 20 4c 69 6e 6b 54 72 61 63 65 50 72 6f 63 28 0a LinkTraceProc(.
3e50: 20 09 62 72 65 61 6b 3b 0a 20 0a 20 20 20 20 20 .break;. .
3e60: 63 61 73 65 20 54 43 4c 5f 4c 49 4e 4b 5f 55 43 case TCL_LINK_UC
3e70: 48 41 52 3a 0a 2b 09 69 66 20 28 6c 69 6e 6b 50 HAR:.+.if (linkP
3e80: 74 72 2d 3e 66 6c 61 67 73 20 26 20 4c 49 4e 4b tr->flags & LINK
3e90: 5f 41 4c 4c 4f 43 5f 4c 41 53 54 29 20 7b 0a 2b _ALLOC_LAST) {.+
3ea0: 09 20 20 20 20 69 66 20 28 54 63 6c 5f 4c 69 73 . if (Tcl_Lis
3eb0: 74 4f 62 6a 47 65 74 45 6c 65 6d 65 6e 74 73 28 tObjGetElements(
3ec0: 69 6e 74 65 72 70 2c 76 61 6c 75 65 4f 62 6a 2c interp,valueObj,
3ed0: 26 6f 62 6a 63 2c 26 6f 62 6a 76 29 3d 3d 54 43 &objc,&objv)==TC
3ee0: 4c 5f 45 52 52 4f 52 0a 2b 09 09 7c 7c 20 6f 62 L_ERROR.+..|| ob
3ef0: 6a 63 20 21 3d 20 6c 69 6e 6b 50 74 72 2d 3e 62 jc != linkPtr->b
3f00: 79 74 65 73 2f 73 69 7a 65 6f 66 28 75 6e 73 69 ytes/sizeof(unsi
3f10: 67 6e 65 64 20 63 68 61 72 29 29 20 7b 0a 2b 09 gned char)) {.+.
3f20: 09 72 65 74 75 72 6e 20 22 77 72 6f 6e 67 20 64 .return "wrong d
3f30: 69 6d 65 6e 73 69 6f 6e 22 3b 0a 2b 09 20 20 20 imension";.+.
3f40: 20 7d 0a 2b 09 20 20 20 20 66 6f 72 20 28 69 3d }.+. for (i=
3f50: 30 3b 20 69 20 3c 20 6f 62 6a 63 3b 20 69 2b 2b 0; i < objc; i++
3f60: 29 20 7b 0a 2b 09 09 69 66 20 28 54 63 6c 5f 47 ) {.+..if (Tcl_G
3f70: 65 74 49 6e 74 46 72 6f 6d 4f 62 6a 28 4e 55 4c etIntFromObj(NUL
3f80: 4c 2c 6f 62 6a 76 5b 69 5d 2c 26 76 61 6c 75 65 L,objv[i],&value
3f90: 49 6e 74 29 21 3d 20 54 43 4c 5f 4f 4b 0a 2b 09 Int)!= TCL_OK.+.
3fa0: 09 09 7c 7c 20 76 61 6c 75 65 49 6e 74 20 3c 20 ..|| valueInt <
3fb0: 30 20 7c 7c 20 76 61 6c 75 65 49 6e 74 20 3e 20 0 || valueInt >
3fc0: 55 43 48 41 52 5f 4d 41 58 29 20 7b 0a 2b 09 20 UCHAR_MAX) {.+.
3fd0: 20 20 20 20 20 20 20 54 63 6c 5f 4f 62 6a 53 65 Tcl_ObjSe
3fe0: 74 56 61 72 32 28 69 6e 74 65 72 70 2c 20 6c 69 tVar2(interp, li
3ff0: 6e 6b 50 74 72 2d 3e 76 61 72 4e 61 6d 65 2c 20 nkPtr->varName,
4000: 4e 55 4c 4c 2c 20 4f 62 6a 56 61 6c 75 65 28 6c NULL, ObjValue(l
4010: 69 6e 6b 50 74 72 29 2c 0a 2b 09 09 20 20 20 20 inkPtr),.+..
4020: 54 43 4c 5f 47 4c 4f 42 41 4c 5f 4f 4e 4c 59 29 TCL_GLOBAL_ONLY)
4030: 3b 0a 2b 09 20 20 20 20 20 20 20 20 20 20 20 20 ;.+.
4040: 72 65 74 75 72 6e 20 22 76 61 72 69 61 62 6c 65 return "variable
4050: 20 61 72 72 61 79 20 6d 75 73 74 20 68 61 76 65 array must have
4060: 20 75 6e 73 69 67 6e 65 64 20 63 68 61 72 20 76 unsigned char v
4070: 61 6c 75 65 22 3b 0a 2b 09 09 7d 0a 2b 09 09 6c alue";.+..}.+..l
4080: 69 6e 6b 50 74 72 2d 3e 6c 61 73 74 56 61 6c 75 inkPtr->lastValu
4090: 65 2e 70 75 63 5b 69 5d 20 3d 20 28 75 6e 73 69 e.puc[i] = (unsi
40a0: 67 6e 65 64 20 63 68 61 72 29 76 61 6c 75 65 49 gned char)valueI
40b0: 6e 74 3b 0a 2b 09 20 20 20 20 7d 0a 2b 09 20 20 nt;.+. }.+.
40c0: 20 20 6d 65 6d 63 70 79 28 6c 69 6e 6b 50 74 72 memcpy(linkPtr
40d0: 2d 3e 61 64 64 72 2c 6c 69 6e 6b 50 74 72 2d 3e ->addr,linkPtr->
40e0: 6c 61 73 74 56 61 6c 75 65 2e 70 63 2c 6c 69 6e lastValue.pc,lin
40f0: 6b 50 74 72 2d 3e 62 79 74 65 73 29 3b 0a 2b 09 kPtr->bytes);.+.
4100: 20 20 20 20 62 72 65 61 6b 3b 0a 2b 09 7d 0a 20 break;.+.}.
4110: 09 69 66 20 28 54 63 6c 5f 47 65 74 49 6e 74 46 .if (Tcl_GetIntF
4120: 72 6f 6d 4f 62 6a 28 69 6e 74 65 72 70 2c 20 76 romObj(interp, v
4130: 61 6c 75 65 4f 62 6a 2c 20 26 76 61 6c 75 65 49 alueObj, &valueI
4140: 6e 74 29 20 21 3d 20 54 43 4c 5f 4f 4b 0a 20 09 nt) != TCL_OK. .
4150: 09 7c 7c 20 76 61 6c 75 65 49 6e 74 20 3c 20 30 .|| valueInt < 0
4160: 20 7c 7c 20 76 61 6c 75 65 49 6e 74 20 3e 20 55 || valueInt > U
4170: 43 48 41 52 5f 4d 41 58 29 20 7b 0a 20 09 20 20 CHAR_MAX) {. .
4180: 20 20 54 63 6c 5f 4f 62 6a 53 65 74 56 61 72 32 Tcl_ObjSetVar2
4190: 28 69 6e 74 65 72 70 2c 20 6c 69 6e 6b 50 74 72 (interp, linkPtr
41a0: 2d 3e 76 61 72 4e 61 6d 65 2c 20 4e 55 4c 4c 2c ->varName, NULL,
41b0: 20 4f 62 6a 56 61 6c 75 65 28 6c 69 6e 6b 50 74 ObjValue(linkPt
41c0: 72 29 2c 0a 40 40 20 2d 34 34 33 2c 36 20 2b 37 r),.@@ -443,6 +7
41d0: 31 38 2c 32 33 20 40 40 20 4c 69 6e 6b 54 72 61 18,23 @@ LinkTra
41e0: 63 65 50 72 6f 63 28 0a 20 09 62 72 65 61 6b 3b ceProc(. .break;
41f0: 0a 20 0a 20 20 20 20 20 63 61 73 65 20 54 43 4c . . case TCL
4200: 5f 4c 49 4e 4b 5f 53 48 4f 52 54 3a 0a 2b 09 69 _LINK_SHORT:.+.i
4210: 66 20 28 6c 69 6e 6b 50 74 72 2d 3e 66 6c 61 67 f (linkPtr->flag
4220: 73 20 26 20 4c 49 4e 4b 5f 41 4c 4c 4f 43 5f 4c s & LINK_ALLOC_L
4230: 41 53 54 29 20 7b 0a 2b 09 20 20 20 20 69 66 20 AST) {.+. if
4240: 28 54 63 6c 5f 4c 69 73 74 4f 62 6a 47 65 74 45 (Tcl_ListObjGetE
4250: 6c 65 6d 65 6e 74 73 28 69 6e 74 65 72 70 2c 76 lements(interp,v
4260: 61 6c 75 65 4f 62 6a 2c 26 6f 62 6a 63 2c 26 6f alueObj,&objc,&o
4270: 62 6a 76 29 3d 3d 54 43 4c 5f 45 52 52 4f 52 0a bjv)==TCL_ERROR.
4280: 2b 09 09 7c 7c 20 6f 62 6a 63 20 21 3d 20 6c 69 +..|| objc != li
4290: 6e 6b 50 74 72 2d 3e 62 79 74 65 73 2f 73 69 7a nkPtr->bytes/siz
42a0: 65 6f 66 28 73 68 6f 72 74 29 29 20 7b 0a 2b 09 eof(short)) {.+.
42b0: 09 72 65 74 75 72 6e 20 22 77 72 6f 6e 67 20 64 .return "wrong d
42c0: 69 6d 65 6e 73 69 6f 6e 22 3b 0a 2b 09 20 20 20 imension";.+.
42d0: 20 7d 0a 2b 09 20 20 20 20 66 6f 72 20 28 69 3d }.+. for (i=
42e0: 30 3b 20 69 20 3c 20 6f 62 6a 63 3b 20 69 2b 2b 0; i < objc; i++
42f0: 29 20 7b 0a 2b 09 09 69 66 20 28 54 63 6c 5f 47 ) {.+..if (Tcl_G
4300: 65 74 49 6e 74 46 72 6f 6d 4f 62 6a 28 4e 55 4c etIntFromObj(NUL
4310: 4c 2c 6f 62 6a 76 5b 69 5d 2c 26 76 61 6c 75 65 L,objv[i],&value
4320: 49 6e 74 29 21 3d 20 54 43 4c 5f 4f 4b 0a 2b 09 Int)!= TCL_OK.+.
4330: 09 09 7c 7c 20 76 61 6c 75 65 49 6e 74 20 3c 20 ..|| valueInt <
4340: 53 48 52 54 5f 4d 49 4e 20 7c 7c 20 76 61 6c 75 SHRT_MIN || valu
4350: 65 49 6e 74 20 3e 20 53 48 52 54 5f 4d 41 58 29 eInt > SHRT_MAX)
4360: 20 7b 0a 2b 09 20 20 20 20 20 20 20 20 54 63 6c {.+. Tcl
4370: 5f 4f 62 6a 53 65 74 56 61 72 32 28 69 6e 74 65 _ObjSetVar2(inte
4380: 72 70 2c 20 6c 69 6e 6b 50 74 72 2d 3e 76 61 72 rp, linkPtr->var
4390: 4e 61 6d 65 2c 20 4e 55 4c 4c 2c 20 4f 62 6a 56 Name, NULL, ObjV
43a0: 61 6c 75 65 28 6c 69 6e 6b 50 74 72 29 2c 0a 2b alue(linkPtr),.+
43b0: 09 09 20 20 20 20 54 43 4c 5f 47 4c 4f 42 41 4c .. TCL_GLOBAL
43c0: 5f 4f 4e 4c 59 29 3b 0a 2b 09 20 20 20 20 20 20 _ONLY);.+.
43d0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 22 76 61 return "va
43e0: 72 69 61 62 6c 65 20 61 72 72 61 79 20 6d 75 73 riable array mus
43f0: 74 20 68 61 76 65 20 73 68 6f 72 74 20 76 61 6c t have short val
4400: 75 65 22 3b 0a 2b 09 09 7d 0a 2b 09 09 6c 69 6e ue";.+..}.+..lin
4410: 6b 50 74 72 2d 3e 6c 61 73 74 56 61 6c 75 65 2e kPtr->lastValue.
4420: 70 73 5b 69 5d 20 3d 20 28 73 68 6f 72 74 29 76 ps[i] = (short)v
4430: 61 6c 75 65 49 6e 74 3b 0a 2b 09 20 20 20 20 7d alueInt;.+. }
4440: 0a 2b 09 20 20 20 20 6d 65 6d 63 70 79 28 6c 69 .+. memcpy(li
4450: 6e 6b 50 74 72 2d 3e 61 64 64 72 2c 6c 69 6e 6b nkPtr->addr,link
4460: 50 74 72 2d 3e 6c 61 73 74 56 61 6c 75 65 2e 70 Ptr->lastValue.p
4470: 63 2c 6c 69 6e 6b 50 74 72 2d 3e 62 79 74 65 73 c,linkPtr->bytes
4480: 29 3b 0a 2b 09 20 20 20 20 62 72 65 61 6b 3b 0a );.+. break;.
4490: 2b 09 7d 0a 20 09 69 66 20 28 54 63 6c 5f 47 65 +.}. .if (Tcl_Ge
44a0: 74 49 6e 74 46 72 6f 6d 4f 62 6a 28 69 6e 74 65 tIntFromObj(inte
44b0: 72 70 2c 20 76 61 6c 75 65 4f 62 6a 2c 20 26 76 rp, valueObj, &v
44c0: 61 6c 75 65 49 6e 74 29 20 21 3d 20 54 43 4c 5f alueInt) != TCL_
44d0: 4f 4b 0a 20 09 09 7c 7c 20 76 61 6c 75 65 49 6e OK. ..|| valueIn
44e0: 74 20 3c 20 53 48 52 54 5f 4d 49 4e 20 7c 7c 20 t < SHRT_MIN ||
44f0: 76 61 6c 75 65 49 6e 74 20 3e 20 53 48 52 54 5f valueInt > SHRT_
4500: 4d 41 58 29 20 7b 0a 20 09 20 20 20 20 54 63 6c MAX) {. . Tcl
4510: 5f 4f 62 6a 53 65 74 56 61 72 32 28 69 6e 74 65 _ObjSetVar2(inte
4520: 72 70 2c 20 6c 69 6e 6b 50 74 72 2d 3e 76 61 72 rp, linkPtr->var
4530: 4e 61 6d 65 2c 20 4e 55 4c 4c 2c 20 4f 62 6a 56 Name, NULL, ObjV
4540: 61 6c 75 65 28 6c 69 6e 6b 50 74 72 29 2c 0a 40 alue(linkPtr),.@
4550: 40 20 2d 34 35 34 2c 36 20 2b 37 34 36 2c 32 33 @ -454,6 +746,23
4560: 20 40 40 20 4c 69 6e 6b 54 72 61 63 65 50 72 6f @@ LinkTracePro
4570: 63 28 0a 20 09 62 72 65 61 6b 3b 0a 20 0a 20 20 c(. .break;. .
4580: 20 20 20 63 61 73 65 20 54 43 4c 5f 4c 49 4e 4b case TCL_LINK
4590: 5f 55 53 48 4f 52 54 3a 0a 2b 09 69 66 20 28 6c _USHORT:.+.if (l
45a0: 69 6e 6b 50 74 72 2d 3e 66 6c 61 67 73 20 26 20 inkPtr->flags &
45b0: 4c 49 4e 4b 5f 41 4c 4c 4f 43 5f 4c 41 53 54 29 LINK_ALLOC_LAST)
45c0: 20 7b 0a 2b 09 20 20 20 20 69 66 20 28 54 63 6c {.+. if (Tcl
45d0: 5f 4c 69 73 74 4f 62 6a 47 65 74 45 6c 65 6d 65 _ListObjGetEleme
45e0: 6e 74 73 28 69 6e 74 65 72 70 2c 76 61 6c 75 65 nts(interp,value
45f0: 4f 62 6a 2c 26 6f 62 6a 63 2c 26 6f 62 6a 76 29 Obj,&objc,&objv)
4600: 3d 3d 54 43 4c 5f 45 52 52 4f 52 0a 2b 09 09 7c ==TCL_ERROR.+..|
4610: 7c 20 6f 62 6a 63 20 21 3d 20 6c 69 6e 6b 50 74 | objc != linkPt
4620: 72 2d 3e 62 79 74 65 73 2f 73 69 7a 65 6f 66 28 r->bytes/sizeof(
4630: 75 6e 73 69 67 6e 65 64 20 73 68 6f 72 74 29 29 unsigned short))
4640: 20 7b 0a 2b 09 09 72 65 74 75 72 6e 20 22 77 72 {.+..return "wr
4650: 6f 6e 67 20 64 69 6d 65 6e 73 69 6f 6e 22 3b 0a ong dimension";.
4660: 2b 09 20 20 20 20 7d 0a 2b 09 20 20 20 20 66 6f +. }.+. fo
4670: 72 20 28 69 3d 30 3b 20 69 20 3c 20 6f 62 6a 63 r (i=0; i < objc
4680: 3b 20 69 2b 2b 29 20 7b 0a 2b 09 09 69 66 20 28 ; i++) {.+..if (
4690: 54 63 6c 5f 47 65 74 49 6e 74 46 72 6f 6d 4f 62 Tcl_GetIntFromOb
46a0: 6a 28 4e 55 4c 4c 2c 6f 62 6a 76 5b 69 5d 2c 26 j(NULL,objv[i],&
46b0: 76 61 6c 75 65 49 6e 74 29 21 3d 20 54 43 4c 5f valueInt)!= TCL_
46c0: 4f 4b 0a 2b 09 09 09 7c 7c 20 76 61 6c 75 65 49 OK.+...|| valueI
46d0: 6e 74 20 3c 20 30 20 7c 7c 20 76 61 6c 75 65 49 nt < 0 || valueI
46e0: 6e 74 20 3e 20 55 53 48 52 54 5f 4d 41 58 29 20 nt > USHRT_MAX)
46f0: 7b 0a 2b 09 20 20 20 20 20 20 20 20 54 63 6c 5f {.+. Tcl_
4700: 4f 62 6a 53 65 74 56 61 72 32 28 69 6e 74 65 72 ObjSetVar2(inter
4710: 70 2c 20 6c 69 6e 6b 50 74 72 2d 3e 76 61 72 4e p, linkPtr->varN
4720: 61 6d 65 2c 20 4e 55 4c 4c 2c 20 4f 62 6a 56 61 ame, NULL, ObjVa
4730: 6c 75 65 28 6c 69 6e 6b 50 74 72 29 2c 0a 2b 09 lue(linkPtr),.+.
4740: 09 20 20 20 20 54 43 4c 5f 47 4c 4f 42 41 4c 5f . TCL_GLOBAL_
4750: 4f 4e 4c 59 29 3b 0a 2b 09 20 20 20 20 20 20 20 ONLY);.+.
4760: 20 20 20 20 20 72 65 74 75 72 6e 20 22 76 61 72 return "var
4770: 69 61 62 6c 65 20 61 72 72 61 79 20 6d 75 73 74 iable array must
4780: 20 68 61 76 65 20 75 6e 73 69 67 6e 65 64 20 73 have unsigned s
4790: 68 6f 72 74 20 76 61 6c 75 65 22 3b 0a 2b 09 09 hort value";.+..
47a0: 7d 0a 2b 09 09 6c 69 6e 6b 50 74 72 2d 3e 6c 61 }.+..linkPtr->la
47b0: 73 74 56 61 6c 75 65 2e 70 75 73 5b 69 5d 20 3d stValue.pus[i] =
47c0: 20 28 75 6e 73 69 67 6e 65 64 20 73 68 6f 72 74 (unsigned short
47d0: 29 76 61 6c 75 65 49 6e 74 3b 0a 2b 09 20 20 20 )valueInt;.+.
47e0: 20 7d 0a 2b 09 20 20 20 20 6d 65 6d 63 70 79 28 }.+. memcpy(
47f0: 6c 69 6e 6b 50 74 72 2d 3e 61 64 64 72 2c 6c 69 linkPtr->addr,li
4800: 6e 6b 50 74 72 2d 3e 6c 61 73 74 56 61 6c 75 65 nkPtr->lastValue
4810: 2e 70 63 2c 6c 69 6e 6b 50 74 72 2d 3e 62 79 74 .pc,linkPtr->byt
4820: 65 73 29 3b 0a 2b 09 20 20 20 20 62 72 65 61 6b es);.+. break
4830: 3b 0a 2b 09 7d 0a 20 09 69 66 20 28 54 63 6c 5f ;.+.}. .if (Tcl_
4840: 47 65 74 49 6e 74 46 72 6f 6d 4f 62 6a 28 69 6e GetIntFromObj(in
4850: 74 65 72 70 2c 20 76 61 6c 75 65 4f 62 6a 2c 20 terp, valueObj,
4860: 26 76 61 6c 75 65 49 6e 74 29 20 21 3d 20 54 43 &valueInt) != TC
4870: 4c 5f 4f 4b 0a 20 09 09 7c 7c 20 76 61 6c 75 65 L_OK. ..|| value
4880: 49 6e 74 20 3c 20 30 20 7c 7c 20 76 61 6c 75 65 Int < 0 || value
4890: 49 6e 74 20 3e 20 55 53 48 52 54 5f 4d 41 58 29 Int > USHRT_MAX)
48a0: 20 7b 0a 20 09 20 20 20 20 54 63 6c 5f 4f 62 6a {. . Tcl_Obj
48b0: 53 65 74 56 61 72 32 28 69 6e 74 65 72 70 2c 20 SetVar2(interp,
48c0: 6c 69 6e 6b 50 74 72 2d 3e 76 61 72 4e 61 6d 65 linkPtr->varName
48d0: 2c 20 4e 55 4c 4c 2c 20 4f 62 6a 56 61 6c 75 65 , NULL, ObjValue
48e0: 28 6c 69 6e 6b 50 74 72 29 2c 0a 40 40 20 2d 34 (linkPtr),.@@ -4
48f0: 36 35 2c 36 20 2b 37 37 34 2c 32 33 20 40 40 20 65,6 +774,23 @@
4900: 4c 69 6e 6b 54 72 61 63 65 50 72 6f 63 28 0a 20 LinkTraceProc(.
4910: 09 62 72 65 61 6b 3b 0a 20 0a 20 20 20 20 20 63 .break;. . c
4920: 61 73 65 20 54 43 4c 5f 4c 49 4e 4b 5f 55 49 4e ase TCL_LINK_UIN
4930: 54 3a 0a 2b 09 69 66 20 28 6c 69 6e 6b 50 74 72 T:.+.if (linkPtr
4940: 2d 3e 66 6c 61 67 73 20 26 20 4c 49 4e 4b 5f 41 ->flags & LINK_A
4950: 4c 4c 4f 43 5f 4c 41 53 54 29 20 7b 0a 2b 09 20 LLOC_LAST) {.+.
4960: 20 20 20 69 66 20 28 54 63 6c 5f 4c 69 73 74 4f if (Tcl_ListO
4970: 62 6a 47 65 74 45 6c 65 6d 65 6e 74 73 28 69 6e bjGetElements(in
4980: 74 65 72 70 2c 76 61 6c 75 65 4f 62 6a 2c 26 6f terp,valueObj,&o
4990: 62 6a 63 2c 26 6f 62 6a 76 29 3d 3d 54 43 4c 5f bjc,&objv)==TCL_
49a0: 45 52 52 4f 52 0a 2b 09 09 7c 7c 20 6f 62 6a 63 ERROR.+..|| objc
49b0: 20 21 3d 20 6c 69 6e 6b 50 74 72 2d 3e 62 79 74 != linkPtr->byt
49c0: 65 73 2f 73 69 7a 65 6f 66 28 75 6e 73 69 67 6e es/sizeof(unsign
49d0: 65 64 20 69 6e 74 29 29 20 7b 0a 2b 09 09 72 65 ed int)) {.+..re
49e0: 74 75 72 6e 20 22 77 72 6f 6e 67 20 64 69 6d 65 turn "wrong dime
49f0: 6e 73 69 6f 6e 22 3b 0a 2b 09 20 20 20 20 7d 0a nsion";.+. }.
4a00: 2b 09 20 20 20 20 66 6f 72 20 28 69 3d 30 3b 20 +. for (i=0;
4a10: 69 20 3c 20 6f 62 6a 63 3b 20 69 2b 2b 29 20 7b i < objc; i++) {
4a20: 0a 2b 09 09 69 66 20 28 54 63 6c 5f 47 65 74 57 .+..if (Tcl_GetW
4a30: 69 64 65 49 6e 74 46 72 6f 6d 4f 62 6a 28 4e 55 ideIntFromObj(NU
4a40: 4c 4c 2c 6f 62 6a 76 5b 69 5d 2c 26 76 61 6c 75 LL,objv[i],&valu
4a50: 65 57 69 64 65 29 21 3d 20 54 43 4c 5f 4f 4b 0a eWide)!= TCL_OK.
4a60: 2b 09 09 09 7c 7c 20 76 61 6c 75 65 57 69 64 65 +...|| valueWide
4a70: 20 3c 20 30 20 7c 7c 20 76 61 6c 75 65 57 69 64 < 0 || valueWid
4a80: 65 20 3e 20 55 49 4e 54 5f 4d 41 58 29 20 7b 0a e > UINT_MAX) {.
4a90: 2b 09 20 20 20 20 20 20 20 20 54 63 6c 5f 4f 62 +. Tcl_Ob
4aa0: 6a 53 65 74 56 61 72 32 28 69 6e 74 65 72 70 2c jSetVar2(interp,
4ab0: 20 6c 69 6e 6b 50 74 72 2d 3e 76 61 72 4e 61 6d linkPtr->varNam
4ac0: 65 2c 20 4e 55 4c 4c 2c 20 4f 62 6a 56 61 6c 75 e, NULL, ObjValu
4ad0: 65 28 6c 69 6e 6b 50 74 72 29 2c 0a 2b 09 09 20 e(linkPtr),.+..
4ae0: 20 20 20 54 43 4c 5f 47 4c 4f 42 41 4c 5f 4f 4e TCL_GLOBAL_ON
4af0: 4c 59 29 3b 0a 2b 09 20 20 20 20 20 20 20 20 20 LY);.+.
4b00: 20 20 20 72 65 74 75 72 6e 20 22 76 61 72 69 61 return "varia
4b10: 62 6c 65 20 61 72 72 61 79 20 6d 75 73 74 20 68 ble array must h
4b20: 61 76 65 20 75 6e 73 69 67 6e 65 64 20 69 6e 74 ave unsigned int
4b30: 20 76 61 6c 75 65 22 3b 0a 2b 09 09 7d 0a 2b 09 value";.+..}.+.
4b40: 09 6c 69 6e 6b 50 74 72 2d 3e 6c 61 73 74 56 61 .linkPtr->lastVa
4b50: 6c 75 65 2e 70 75 69 5b 69 5d 20 3d 20 28 75 6e lue.pui[i] = (un
4b60: 73 69 67 6e 65 64 20 69 6e 74 29 76 61 6c 75 65 signed int)value
4b70: 57 69 64 65 3b 0a 2b 09 20 20 20 20 7d 0a 2b 09 Wide;.+. }.+.
4b80: 20 20 20 20 6d 65 6d 63 70 79 28 6c 69 6e 6b 50 memcpy(linkP
4b90: 74 72 2d 3e 61 64 64 72 2c 6c 69 6e 6b 50 74 72 tr->addr,linkPtr
4ba0: 2d 3e 6c 61 73 74 56 61 6c 75 65 2e 70 63 2c 6c ->lastValue.pc,l
4bb0: 69 6e 6b 50 74 72 2d 3e 62 79 74 65 73 29 3b 0a inkPtr->bytes);.
4bc0: 2b 09 20 20 20 20 62 72 65 61 6b 3b 0a 2b 09 7d +. break;.+.}
4bd0: 0a 20 09 69 66 20 28 54 63 6c 5f 47 65 74 57 69 . .if (Tcl_GetWi
4be0: 64 65 49 6e 74 46 72 6f 6d 4f 62 6a 28 69 6e 74 deIntFromObj(int
4bf0: 65 72 70 2c 20 76 61 6c 75 65 4f 62 6a 2c 20 26 erp, valueObj, &
4c00: 76 61 6c 75 65 57 69 64 65 29 20 21 3d 20 54 43 valueWide) != TC
4c10: 4c 5f 4f 4b 0a 20 09 09 7c 7c 20 76 61 6c 75 65 L_OK. ..|| value
4c20: 57 69 64 65 20 3c 20 30 20 7c 7c 20 76 61 6c 75 Wide < 0 || valu
4c30: 65 57 69 64 65 20 3e 20 55 49 4e 54 5f 4d 41 58 eWide > UINT_MAX
4c40: 29 20 7b 0a 20 09 20 20 20 20 54 63 6c 5f 4f 62 ) {. . Tcl_Ob
4c50: 6a 53 65 74 56 61 72 32 28 69 6e 74 65 72 70 2c jSetVar2(interp,
4c60: 20 6c 69 6e 6b 50 74 72 2d 3e 76 61 72 4e 61 6d linkPtr->varNam
4c70: 65 2c 20 4e 55 4c 4c 2c 20 4f 62 6a 56 61 6c 75 e, NULL, ObjValu
4c80: 65 28 6c 69 6e 6b 50 74 72 29 2c 0a 40 40 20 2d e(linkPtr),.@@ -
4c90: 34 37 36 2c 36 20 2b 38 30 32 2c 32 33 20 40 40 476,6 +802,23 @@
4ca0: 20 4c 69 6e 6b 54 72 61 63 65 50 72 6f 63 28 0a LinkTraceProc(.
4cb0: 20 09 62 72 65 61 6b 3b 0a 20 0a 20 20 20 20 20 .break;. .
4cc0: 63 61 73 65 20 54 43 4c 5f 4c 49 4e 4b 5f 4c 4f case TCL_LINK_LO
4cd0: 4e 47 3a 0a 2b 09 69 66 20 28 6c 69 6e 6b 50 74 NG:.+.if (linkPt
4ce0: 72 2d 3e 66 6c 61 67 73 20 26 20 4c 49 4e 4b 5f r->flags & LINK_
4cf0: 41 4c 4c 4f 43 5f 4c 41 53 54 29 20 7b 0a 2b 09 ALLOC_LAST) {.+.
4d00: 20 20 20 20 69 66 20 28 54 63 6c 5f 4c 69 73 74 if (Tcl_List
4d10: 4f 62 6a 47 65 74 45 6c 65 6d 65 6e 74 73 28 69 ObjGetElements(i
4d20: 6e 74 65 72 70 2c 76 61 6c 75 65 4f 62 6a 2c 26 nterp,valueObj,&
4d30: 6f 62 6a 63 2c 26 6f 62 6a 76 29 3d 3d 54 43 4c objc,&objv)==TCL
4d40: 5f 45 52 52 4f 52 0a 2b 09 09 7c 7c 20 6f 62 6a _ERROR.+..|| obj
4d50: 63 20 21 3d 20 6c 69 6e 6b 50 74 72 2d 3e 62 79 c != linkPtr->by
4d60: 74 65 73 2f 73 69 7a 65 6f 66 28 6c 6f 6e 67 29 tes/sizeof(long)
4d70: 29 20 7b 0a 2b 09 09 72 65 74 75 72 6e 20 22 77 ) {.+..return "w
4d80: 72 6f 6e 67 20 64 69 6d 65 6e 73 69 6f 6e 22 3b rong dimension";
4d90: 0a 2b 09 20 20 20 20 7d 0a 2b 09 20 20 20 20 66 .+. }.+. f
4da0: 6f 72 20 28 69 3d 30 3b 20 69 20 3c 20 6f 62 6a or (i=0; i < obj
4db0: 63 3b 20 69 2b 2b 29 20 7b 0a 2b 09 09 69 66 20 c; i++) {.+..if
4dc0: 28 54 63 6c 5f 47 65 74 57 69 64 65 49 6e 74 46 (Tcl_GetWideIntF
4dd0: 72 6f 6d 4f 62 6a 28 4e 55 4c 4c 2c 6f 62 6a 76 romObj(NULL,objv
4de0: 5b 69 5d 2c 26 76 61 6c 75 65 57 69 64 65 29 21 [i],&valueWide)!
4df0: 3d 20 54 43 4c 5f 4f 4b 0a 2b 09 09 09 7c 7c 20 = TCL_OK.+...||
4e00: 76 61 6c 75 65 57 69 64 65 20 3c 20 4c 4f 4e 47 valueWide < LONG
4e10: 5f 4d 49 4e 20 7c 7c 20 76 61 6c 75 65 57 69 64 _MIN || valueWid
4e20: 65 20 3e 20 4c 4f 4e 47 5f 4d 41 58 29 20 7b 0a e > LONG_MAX) {.
4e30: 2b 09 20 20 20 20 20 20 20 20 54 63 6c 5f 4f 62 +. Tcl_Ob
4e40: 6a 53 65 74 56 61 72 32 28 69 6e 74 65 72 70 2c jSetVar2(interp,
4e50: 20 6c 69 6e 6b 50 74 72 2d 3e 76 61 72 4e 61 6d linkPtr->varNam
4e60: 65 2c 20 4e 55 4c 4c 2c 20 4f 62 6a 56 61 6c 75 e, NULL, ObjValu
4e70: 65 28 6c 69 6e 6b 50 74 72 29 2c 0a 2b 09 09 20 e(linkPtr),.+..
4e80: 20 20 20 54 43 4c 5f 47 4c 4f 42 41 4c 5f 4f 4e TCL_GLOBAL_ON
4e90: 4c 59 29 3b 0a 2b 09 20 20 20 20 20 20 20 20 20 LY);.+.
4ea0: 20 20 20 72 65 74 75 72 6e 20 22 76 61 72 69 61 return "varia
4eb0: 62 6c 65 20 61 72 72 61 79 20 6d 75 73 74 20 68 ble array must h
4ec0: 61 76 65 20 6c 6f 6e 67 20 76 61 6c 75 65 22 3b ave long value";
4ed0: 0a 2b 09 09 7d 0a 2b 09 09 6c 69 6e 6b 50 74 72 .+..}.+..linkPtr
4ee0: 2d 3e 6c 61 73 74 56 61 6c 75 65 2e 70 6c 5b 69 ->lastValue.pl[i
4ef0: 5d 20 3d 20 28 6c 6f 6e 67 29 76 61 6c 75 65 57 ] = (long)valueW
4f00: 69 64 65 3b 0a 2b 09 20 20 20 20 7d 0a 2b 09 20 ide;.+. }.+.
4f10: 20 20 20 6d 65 6d 63 70 79 28 6c 69 6e 6b 50 74 memcpy(linkPt
4f20: 72 2d 3e 61 64 64 72 2c 6c 69 6e 6b 50 74 72 2d r->addr,linkPtr-
4f30: 3e 6c 61 73 74 56 61 6c 75 65 2e 70 63 2c 6c 69 >lastValue.pc,li
4f40: 6e 6b 50 74 72 2d 3e 62 79 74 65 73 29 3b 0a 2b nkPtr->bytes);.+
4f50: 09 20 20 20 20 62 72 65 61 6b 3b 0a 2b 09 7d 0a . break;.+.}.
4f60: 20 09 69 66 20 28 54 63 6c 5f 47 65 74 57 69 64 .if (Tcl_GetWid
4f70: 65 49 6e 74 46 72 6f 6d 4f 62 6a 28 69 6e 74 65 eIntFromObj(inte
4f80: 72 70 2c 20 76 61 6c 75 65 4f 62 6a 2c 20 26 76 rp, valueObj, &v
4f90: 61 6c 75 65 57 69 64 65 29 20 21 3d 20 54 43 4c alueWide) != TCL
4fa0: 5f 4f 4b 0a 20 09 09 7c 7c 20 76 61 6c 75 65 57 _OK. ..|| valueW
4fb0: 69 64 65 20 3c 20 4c 4f 4e 47 5f 4d 49 4e 20 7c ide < LONG_MIN |
4fc0: 7c 20 76 61 6c 75 65 57 69 64 65 20 3e 20 4c 4f | valueWide > LO
4fd0: 4e 47 5f 4d 41 58 29 20 7b 0a 20 09 20 20 20 20 NG_MAX) {. .
4fe0: 54 63 6c 5f 4f 62 6a 53 65 74 56 61 72 32 28 69 Tcl_ObjSetVar2(i
4ff0: 6e 74 65 72 70 2c 20 6c 69 6e 6b 50 74 72 2d 3e nterp, linkPtr->
5000: 76 61 72 4e 61 6d 65 2c 20 4e 55 4c 4c 2c 20 4f varName, NULL, O
5010: 62 6a 56 61 6c 75 65 28 6c 69 6e 6b 50 74 72 29 bjValue(linkPtr)
5020: 2c 0a 40 40 20 2d 34 38 37 2c 36 20 2b 38 33 30 ,.@@ -487,6 +830
5030: 2c 32 33 20 40 40 20 4c 69 6e 6b 54 72 61 63 65 ,23 @@ LinkTrace
5040: 50 72 6f 63 28 0a 20 09 62 72 65 61 6b 3b 0a 20 Proc(. .break;.
5050: 0a 20 20 20 20 20 63 61 73 65 20 54 43 4c 5f 4c . case TCL_L
5060: 49 4e 4b 5f 55 4c 4f 4e 47 3a 0a 2b 09 69 66 20 INK_ULONG:.+.if
5070: 28 6c 69 6e 6b 50 74 72 2d 3e 66 6c 61 67 73 20 (linkPtr->flags
5080: 26 20 4c 49 4e 4b 5f 41 4c 4c 4f 43 5f 4c 41 53 & LINK_ALLOC_LAS
5090: 54 29 20 7b 0a 2b 09 20 20 20 20 69 66 20 28 54 T) {.+. if (T
50a0: 63 6c 5f 4c 69 73 74 4f 62 6a 47 65 74 45 6c 65 cl_ListObjGetEle
50b0: 6d 65 6e 74 73 28 69 6e 74 65 72 70 2c 76 61 6c ments(interp,val
50c0: 75 65 4f 62 6a 2c 26 6f 62 6a 63 2c 26 6f 62 6a ueObj,&objc,&obj
50d0: 76 29 3d 3d 54 43 4c 5f 45 52 52 4f 52 0a 2b 09 v)==TCL_ERROR.+.
50e0: 09 7c 7c 20 6f 62 6a 63 20 21 3d 20 6c 69 6e 6b .|| objc != link
50f0: 50 74 72 2d 3e 62 79 74 65 73 2f 73 69 7a 65 6f Ptr->bytes/sizeo
5100: 66 28 75 6e 73 69 67 6e 65 64 20 6c 6f 6e 67 29 f(unsigned long)
5110: 29 20 7b 0a 2b 09 09 72 65 74 75 72 6e 20 22 77 ) {.+..return "w
5120: 72 6f 6e 67 20 64 69 6d 65 6e 73 69 6f 6e 22 3b rong dimension";
5130: 0a 2b 09 20 20 20 20 7d 0a 2b 09 20 20 20 20 66 .+. }.+. f
5140: 6f 72 20 28 69 3d 30 3b 20 69 20 3c 20 6f 62 6a or (i=0; i < obj
5150: 63 3b 20 69 2b 2b 29 20 7b 0a 2b 09 09 69 66 20 c; i++) {.+..if
5160: 28 54 63 6c 5f 47 65 74 57 69 64 65 49 6e 74 46 (Tcl_GetWideIntF
5170: 72 6f 6d 4f 62 6a 28 4e 55 4c 4c 2c 6f 62 6a 76 romObj(NULL,objv
5180: 5b 69 5d 2c 26 76 61 6c 75 65 57 69 64 65 29 21 [i],&valueWide)!
5190: 3d 20 54 43 4c 5f 4f 4b 0a 2b 09 09 09 7c 7c 20 = TCL_OK.+...||
51a0: 76 61 6c 75 65 57 69 64 65 20 3c 20 30 20 7c 7c valueWide < 0 ||
51b0: 20 76 61 6c 75 65 57 69 64 65 20 3e 20 55 4c 4f valueWide > ULO
51c0: 4e 47 5f 4d 41 58 29 20 7b 0a 2b 09 20 20 20 20 NG_MAX) {.+.
51d0: 20 20 20 20 54 63 6c 5f 4f 62 6a 53 65 74 56 61 Tcl_ObjSetVa
51e0: 72 32 28 69 6e 74 65 72 70 2c 20 6c 69 6e 6b 50 r2(interp, linkP
51f0: 74 72 2d 3e 76 61 72 4e 61 6d 65 2c 20 4e 55 4c tr->varName, NUL
5200: 4c 2c 20 4f 62 6a 56 61 6c 75 65 28 6c 69 6e 6b L, ObjValue(link
5210: 50 74 72 29 2c 0a 2b 09 09 20 20 20 20 54 43 4c Ptr),.+.. TCL
5220: 5f 47 4c 4f 42 41 4c 5f 4f 4e 4c 59 29 3b 0a 2b _GLOBAL_ONLY);.+
5230: 09 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 . ret
5240: 75 72 6e 20 22 76 61 72 69 61 62 6c 65 20 61 72 urn "variable ar
5250: 72 61 79 20 6d 75 73 74 20 68 61 76 65 20 75 6e ray must have un
5260: 73 69 67 6e 65 64 20 6c 6f 6e 67 20 76 61 6c 75 signed long valu
5270: 65 22 3b 0a 2b 09 09 7d 0a 2b 09 09 6c 69 6e 6b e";.+..}.+..link
5280: 50 74 72 2d 3e 6c 61 73 74 56 61 6c 75 65 2e 70 Ptr->lastValue.p
5290: 75 6c 5b 69 5d 20 3d 20 28 75 6e 73 69 67 6e 65 ul[i] = (unsigne
52a0: 64 20 6c 6f 6e 67 29 76 61 6c 75 65 57 69 64 65 d long)valueWide
52b0: 3b 0a 2b 09 20 20 20 20 7d 0a 2b 09 20 20 20 20 ;.+. }.+.
52c0: 6d 65 6d 63 70 79 28 6c 69 6e 6b 50 74 72 2d 3e memcpy(linkPtr->
52d0: 61 64 64 72 2c 6c 69 6e 6b 50 74 72 2d 3e 6c 61 addr,linkPtr->la
52e0: 73 74 56 61 6c 75 65 2e 70 63 2c 6c 69 6e 6b 50 stValue.pc,linkP
52f0: 74 72 2d 3e 62 79 74 65 73 29 3b 0a 2b 09 20 20 tr->bytes);.+.
5300: 20 20 62 72 65 61 6b 3b 0a 2b 09 7d 0a 20 09 69 break;.+.}. .i
5310: 66 20 28 54 63 6c 5f 47 65 74 57 69 64 65 49 6e f (Tcl_GetWideIn
5320: 74 46 72 6f 6d 4f 62 6a 28 69 6e 74 65 72 70 2c tFromObj(interp,
5330: 20 76 61 6c 75 65 4f 62 6a 2c 20 26 76 61 6c 75 valueObj, &valu
5340: 65 57 69 64 65 29 20 21 3d 20 54 43 4c 5f 4f 4b eWide) != TCL_OK
5350: 0a 20 09 09 7c 7c 20 76 61 6c 75 65 57 69 64 65 . ..|| valueWide
5360: 20 3c 20 30 20 7c 7c 20 28 54 63 6c 5f 57 69 64 < 0 || (Tcl_Wid
5370: 65 55 49 6e 74 29 20 76 61 6c 75 65 57 69 64 65 eUInt) valueWide
5380: 20 3e 20 55 4c 4f 4e 47 5f 4d 41 58 29 20 7b 0a > ULONG_MAX) {.
5390: 20 09 20 20 20 20 54 63 6c 5f 4f 62 6a 53 65 74 . Tcl_ObjSet
53a0: 56 61 72 32 28 69 6e 74 65 72 70 2c 20 6c 69 6e Var2(interp, lin
53b0: 6b 50 74 72 2d 3e 76 61 72 4e 61 6d 65 2c 20 4e kPtr->varName, N
53c0: 55 4c 4c 2c 20 4f 62 6a 56 61 6c 75 65 28 6c 69 ULL, ObjValue(li
53d0: 6e 6b 50 74 72 29 2c 0a 40 40 20 2d 35 30 31 2c nkPtr),.@@ -501,
53e0: 37 20 2b 38 36 31 2c 32 35 20 40 40 20 4c 69 6e 7 +861,25 @@ Lin
53f0: 6b 54 72 61 63 65 50 72 6f 63 28 0a 20 09 2f 2a kTraceProc(. ./*
5400: 0a 20 09 20 2a 20 46 49 58 4d 45 3a 20 72 65 70 . . * FIXME: rep
5410: 72 65 73 65 6e 74 20 61 73 20 61 20 62 69 67 6e resent as a bign
5420: 75 6d 2e 0a 20 09 20 2a 2f 0a 2d 09 69 66 20 28 um.. . */.-.if (
5430: 54 63 6c 5f 47 65 74 57 69 64 65 49 6e 74 46 72 Tcl_GetWideIntFr
5440: 6f 6d 4f 62 6a 28 69 6e 74 65 72 70 2c 20 76 61 omObj(interp, va
5450: 6c 75 65 4f 62 6a 2c 20 26 76 61 6c 75 65 57 69 lueObj, &valueWi
5460: 64 65 29 20 21 3d 20 54 43 4c 5f 4f 4b 29 20 7b de) != TCL_OK) {
5470: 0a 2b 09 69 66 20 28 6c 69 6e 6b 50 74 72 2d 3e .+.if (linkPtr->
5480: 66 6c 61 67 73 20 26 20 4c 49 4e 4b 5f 41 4c 4c flags & LINK_ALL
5490: 4f 43 5f 4c 41 53 54 29 20 7b 0a 2b 09 20 20 20 OC_LAST) {.+.
54a0: 20 69 66 20 28 54 63 6c 5f 4c 69 73 74 4f 62 6a if (Tcl_ListObj
54b0: 47 65 74 45 6c 65 6d 65 6e 74 73 28 69 6e 74 65 GetElements(inte
54c0: 72 70 2c 76 61 6c 75 65 4f 62 6a 2c 26 6f 62 6a rp,valueObj,&obj
54d0: 63 2c 26 6f 62 6a 76 29 3d 3d 54 43 4c 5f 45 52 c,&objv)==TCL_ER
54e0: 52 4f 52 0a 2b 09 09 7c 7c 20 6f 62 6a 63 20 21 ROR.+..|| objc !
54f0: 3d 20 6c 69 6e 6b 50 74 72 2d 3e 62 79 74 65 73 = linkPtr->bytes
5500: 2f 73 69 7a 65 6f 66 28 54 63 6c 5f 57 69 64 65 /sizeof(Tcl_Wide
5510: 55 49 6e 74 29 29 20 7b 0a 2b 09 09 72 65 74 75 UInt)) {.+..retu
5520: 72 6e 20 22 77 72 6f 6e 67 20 64 69 6d 65 6e 73 rn "wrong dimens
5530: 69 6f 6e 22 3b 0a 2b 09 20 20 20 20 7d 0a 2b 09 ion";.+. }.+.
5540: 20 20 20 20 66 6f 72 20 28 69 3d 30 3b 20 69 20 for (i=0; i
5550: 3c 20 6f 62 6a 63 3b 20 69 2b 2b 29 20 7b 0a 2b < objc; i++) {.+
5560: 09 09 69 66 20 28 54 63 6c 5f 47 65 74 57 69 64 ..if (Tcl_GetWid
5570: 65 49 6e 74 46 72 6f 6d 4f 62 6a 28 4e 55 4c 4c eIntFromObj(NULL
5580: 2c 6f 62 6a 76 5b 69 5d 2c 26 76 61 6c 75 65 57 ,objv[i],&valueW
5590: 69 64 65 29 21 3d 20 54 43 4c 5f 4f 4b 0a 2b 09 ide)!= TCL_OK.+.
55a0: 09 09 7c 7c 20 76 61 6c 75 65 57 69 64 65 20 3c ..|| valueWide <
55b0: 20 30 29 20 7b 0a 2b 09 20 20 20 20 20 20 20 20 0) {.+.
55c0: 54 63 6c 5f 4f 62 6a 53 65 74 56 61 72 32 28 69 Tcl_ObjSetVar2(i
55d0: 6e 74 65 72 70 2c 20 6c 69 6e 6b 50 74 72 2d 3e nterp, linkPtr->
55e0: 76 61 72 4e 61 6d 65 2c 20 4e 55 4c 4c 2c 20 4f varName, NULL, O
55f0: 62 6a 56 61 6c 75 65 28 6c 69 6e 6b 50 74 72 29 bjValue(linkPtr)
5600: 2c 0a 2b 09 09 20 20 20 20 54 43 4c 5f 47 4c 4f ,.+.. TCL_GLO
5610: 42 41 4c 5f 4f 4e 4c 59 29 3b 0a 2b 09 20 20 20 BAL_ONLY);.+.
5620: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 return
5630: 22 76 61 72 69 61 62 6c 65 20 61 72 72 61 79 20 "variable array
5640: 6d 75 73 74 20 68 61 76 65 20 75 6e 73 69 67 6e must have unsign
5650: 65 64 20 77 69 64 65 20 69 6e 74 20 76 61 6c 75 ed wide int valu
5660: 65 22 3b 0a 2b 09 09 7d 0a 2b 09 09 6c 69 6e 6b e";.+..}.+..link
5670: 50 74 72 2d 3e 6c 61 73 74 56 61 6c 75 65 2e 70 Ptr->lastValue.p
5680: 75 77 5b 69 5d 20 3d 20 28 54 63 6c 5f 57 69 64 uw[i] = (Tcl_Wid
5690: 65 55 49 6e 74 29 76 61 6c 75 65 57 69 64 65 3b eUInt)valueWide;
56a0: 0a 2b 09 20 20 20 20 7d 0a 2b 09 20 20 20 20 6d .+. }.+. m
56b0: 65 6d 63 70 79 28 6c 69 6e 6b 50 74 72 2d 3e 61 emcpy(linkPtr->a
56c0: 64 64 72 2c 6c 69 6e 6b 50 74 72 2d 3e 6c 61 73 ddr,linkPtr->las
56d0: 74 56 61 6c 75 65 2e 70 63 2c 6c 69 6e 6b 50 74 tValue.pc,linkPt
56e0: 72 2d 3e 62 79 74 65 73 29 3b 0a 2b 09 20 20 20 r->bytes);.+.
56f0: 20 62 72 65 61 6b 3b 0a 2b 09 7d 0a 2b 09 69 66 break;.+.}.+.if
5700: 20 28 54 63 6c 5f 47 65 74 57 69 64 65 49 6e 74 (Tcl_GetWideInt
5710: 46 72 6f 6d 4f 62 6a 28 69 6e 74 65 72 70 2c 20 FromObj(interp,
5720: 76 61 6c 75 65 4f 62 6a 2c 20 26 76 61 6c 75 65 valueObj, &value
5730: 57 69 64 65 29 20 21 3d 20 54 43 4c 5f 4f 4b 0a Wide) != TCL_OK.
5740: 2b 09 09 7c 7c 20 76 61 6c 75 65 57 69 64 65 20 +..|| valueWide
5750: 3c 20 30 29 20 7b 0a 20 09 20 20 20 20 54 63 6c < 0) {. . Tcl
5760: 5f 4f 62 6a 53 65 74 56 61 72 32 28 69 6e 74 65 _ObjSetVar2(inte
5770: 72 70 2c 20 6c 69 6e 6b 50 74 72 2d 3e 76 61 72 rp, linkPtr->var
5780: 4e 61 6d 65 2c 20 4e 55 4c 4c 2c 20 4f 62 6a 56 Name, NULL, ObjV
5790: 61 6c 75 65 28 6c 69 6e 6b 50 74 72 29 2c 0a 20 alue(linkPtr),.
57a0: 09 09 20 20 20 20 54 43 4c 5f 47 4c 4f 42 41 4c .. TCL_GLOBAL
57b0: 5f 4f 4e 4c 59 29 3b 0a 20 09 20 20 20 20 72 65 _ONLY);. . re
57c0: 74 75 72 6e 20 22 76 61 72 69 61 62 6c 65 20 6d turn "variable m
57d0: 75 73 74 20 68 61 76 65 20 75 6e 73 69 67 6e 65 ust have unsigne
57e0: 64 20 77 69 64 65 20 69 6e 74 20 76 61 6c 75 65 d wide int value
57f0: 22 3b 0a 40 40 20 2d 35 31 31 2c 36 20 2b 38 38 ";.@@ -511,6 +88
5800: 39 2c 32 33 20 40 40 20 4c 69 6e 6b 54 72 61 63 9,23 @@ LinkTrac
5810: 65 50 72 6f 63 28 0a 20 09 62 72 65 61 6b 3b 0a eProc(. .break;.
5820: 20 0a 20 20 20 20 20 63 61 73 65 20 54 43 4c 5f . case TCL_
5830: 4c 49 4e 4b 5f 46 4c 4f 41 54 3a 0a 2b 09 69 66 LINK_FLOAT:.+.if
5840: 20 28 6c 69 6e 6b 50 74 72 2d 3e 66 6c 61 67 73 (linkPtr->flags
5850: 20 26 20 4c 49 4e 4b 5f 41 4c 4c 4f 43 5f 4c 41 & LINK_ALLOC_LA
5860: 53 54 29 20 7b 0a 2b 09 20 20 20 20 69 66 20 28 ST) {.+. if (
5870: 54 63 6c 5f 4c 69 73 74 4f 62 6a 47 65 74 45 6c Tcl_ListObjGetEl
5880: 65 6d 65 6e 74 73 28 69 6e 74 65 72 70 2c 76 61 ements(interp,va
5890: 6c 75 65 4f 62 6a 2c 26 6f 62 6a 63 2c 26 6f 62 lueObj,&objc,&ob
58a0: 6a 76 29 3d 3d 54 43 4c 5f 45 52 52 4f 52 0a 2b jv)==TCL_ERROR.+
58b0: 09 09 7c 7c 20 6f 62 6a 63 20 21 3d 20 6c 69 6e ..|| objc != lin
58c0: 6b 50 74 72 2d 3e 62 79 74 65 73 2f 73 69 7a 65 kPtr->bytes/size
58d0: 6f 66 28 66 6c 6f 61 74 29 29 20 7b 0a 2b 09 09 of(float)) {.+..
58e0: 72 65 74 75 72 6e 20 22 77 72 6f 6e 67 20 64 69 return "wrong di
58f0: 6d 65 6e 73 69 6f 6e 22 3b 0a 2b 09 20 20 20 20 mension";.+.
5900: 7d 0a 2b 09 20 20 20 20 66 6f 72 20 28 69 3d 30 }.+. for (i=0
5910: 3b 20 69 20 3c 20 6f 62 6a 63 3b 20 69 2b 2b 29 ; i < objc; i++)
5920: 20 7b 0a 2b 09 09 69 66 20 28 54 63 6c 5f 47 65 {.+..if (Tcl_Ge
5930: 74 44 6f 75 62 6c 65 46 72 6f 6d 4f 62 6a 28 69 tDoubleFromObj(i
5940: 6e 74 65 72 70 2c 6f 62 6a 76 5b 69 5d 2c 26 76 nterp,objv[i],&v
5950: 61 6c 75 65 44 6f 75 62 6c 65 29 21 3d 20 54 43 alueDouble)!= TC
5960: 4c 5f 4f 4b 0a 2b 09 09 09 7c 7c 20 76 61 6c 75 L_OK.+...|| valu
5970: 65 44 6f 75 62 6c 65 20 3c 20 46 4c 54 5f 4d 49 eDouble < FLT_MI
5980: 4e 20 7c 7c 20 76 61 6c 75 65 44 6f 75 62 6c 65 N || valueDouble
5990: 20 3e 20 46 4c 54 5f 4d 41 58 29 20 7b 0a 2b 09 > FLT_MAX) {.+.
59a0: 20 20 20 20 20 20 20 20 54 63 6c 5f 4f 62 6a 53 Tcl_ObjS
59b0: 65 74 56 61 72 32 28 69 6e 74 65 72 70 2c 20 6c etVar2(interp, l
59c0: 69 6e 6b 50 74 72 2d 3e 76 61 72 4e 61 6d 65 2c inkPtr->varName,
59d0: 20 4e 55 4c 4c 2c 20 4f 62 6a 56 61 6c 75 65 28 NULL, ObjValue(
59e0: 6c 69 6e 6b 50 74 72 29 2c 0a 2b 09 09 20 20 20 linkPtr),.+..
59f0: 20 54 43 4c 5f 47 4c 4f 42 41 4c 5f 4f 4e 4c 59 TCL_GLOBAL_ONLY
5a00: 29 3b 0a 2b 09 20 20 20 20 20 20 20 20 20 20 20 );.+.
5a10: 20 72 65 74 75 72 6e 20 22 76 61 72 69 61 62 6c return "variabl
5a20: 65 20 61 72 72 61 79 20 6d 75 73 74 20 68 61 76 e array must hav
5a30: 65 20 66 6c 6f 61 74 20 76 61 6c 75 65 22 3b 0a e float value";.
5a40: 2b 09 09 7d 0a 2b 09 09 6c 69 6e 6b 50 74 72 2d +..}.+..linkPtr-
5a50: 3e 6c 61 73 74 56 61 6c 75 65 2e 70 66 5b 69 5d >lastValue.pf[i]
5a60: 20 3d 20 28 66 6c 6f 61 74 29 76 61 6c 75 65 44 = (float)valueD
5a70: 6f 75 62 6c 65 3b 0a 2b 09 20 20 20 20 7d 0a 2b ouble;.+. }.+
5a80: 09 20 20 20 20 6d 65 6d 63 70 79 28 6c 69 6e 6b . memcpy(link
5a90: 50 74 72 2d 3e 61 64 64 72 2c 6c 69 6e 6b 50 74 Ptr->addr,linkPt
5aa0: 72 2d 3e 6c 61 73 74 56 61 6c 75 65 2e 70 63 2c r->lastValue.pc,
5ab0: 6c 69 6e 6b 50 74 72 2d 3e 62 79 74 65 73 29 3b linkPtr->bytes);
5ac0: 0a 2b 09 20 20 20 20 62 72 65 61 6b 3b 0a 2b 09 .+. break;.+.
5ad0: 7d 0a 20 09 69 66 20 28 54 63 6c 5f 47 65 74 44 }. .if (Tcl_GetD
5ae0: 6f 75 62 6c 65 46 72 6f 6d 4f 62 6a 28 69 6e 74 oubleFromObj(int
5af0: 65 72 70 2c 20 76 61 6c 75 65 4f 62 6a 2c 20 26 erp, valueObj, &
5b00: 76 61 6c 75 65 44 6f 75 62 6c 65 29 20 21 3d 20 valueDouble) !=
5b10: 54 43 4c 5f 4f 4b 0a 20 09 09 7c 7c 20 76 61 6c TCL_OK. ..|| val
5b20: 75 65 44 6f 75 62 6c 65 20 3c 20 2d 46 4c 54 5f ueDouble < -FLT_
5b30: 4d 41 58 20 7c 7c 20 76 61 6c 75 65 44 6f 75 62 MAX || valueDoub
5b40: 6c 65 20 3e 20 46 4c 54 5f 4d 41 58 29 20 7b 0a le > FLT_MAX) {.
5b50: 20 09 20 20 20 20 54 63 6c 5f 4f 62 6a 53 65 74 . Tcl_ObjSet
5b60: 56 61 72 32 28 69 6e 74 65 72 70 2c 20 6c 69 6e Var2(interp, lin
5b70: 6b 50 74 72 2d 3e 76 61 72 4e 61 6d 65 2c 20 4e kPtr->varName, N
5b80: 55 4c 4c 2c 20 4f 62 6a 56 61 6c 75 65 28 6c 69 ULL, ObjValue(li
5b90: 6e 6b 50 74 72 29 2c 0a 40 40 20 2d 35 32 35 2c nkPtr),.@@ -525,
5ba0: 31 31 20 2b 39 32 30 2c 33 39 20 40 40 20 4c 69 11 +920,39 @@ Li
5bb0: 6e 6b 54 72 61 63 65 50 72 6f 63 28 0a 20 09 76 nkTraceProc(. .v
5bc0: 61 6c 75 65 20 3d 20 54 63 6c 5f 47 65 74 53 74 alue = Tcl_GetSt
5bd0: 72 69 6e 67 46 72 6f 6d 4f 62 6a 28 76 61 6c 75 ringFromObj(valu
5be0: 65 4f 62 6a 2c 20 26 76 61 6c 75 65 4c 65 6e 67 eObj, &valueLeng
5bf0: 74 68 29 3b 0a 20 09 76 61 6c 75 65 4c 65 6e 67 th);. .valueLeng
5c00: 74 68 2b 2b 3b 0a 20 09 70 70 20 3d 20 28 63 68 th++;. .pp = (ch
5c10: 61 72 20 2a 2a 29 20 6c 69 6e 6b 50 74 72 2d 3e ar **) linkPtr->
5c20: 61 64 64 72 3b 0a 2d 0a 20 09 2a 70 70 20 3d 20 addr;.-. .*pp =
5c30: 63 6b 72 65 61 6c 6c 6f 63 28 2a 70 70 2c 20 76 ckrealloc(*pp, v
5c40: 61 6c 75 65 4c 65 6e 67 74 68 29 3b 0a 20 09 6d alueLength);. .m
5c50: 65 6d 63 70 79 28 2a 70 70 2c 20 76 61 6c 75 65 emcpy(*pp, value
5c60: 2c 20 28 75 6e 73 69 67 6e 65 64 29 20 76 61 6c , (unsigned) val
5c70: 75 65 4c 65 6e 67 74 68 29 3b 0a 20 09 62 72 65 ueLength);. .bre
5c80: 61 6b 3b 0a 20 0a 2b 20 20 20 20 63 61 73 65 20 ak;. .+ case
5c90: 54 43 4c 5f 4c 49 4e 4b 5f 43 48 41 52 53 3a 0a TCL_LINK_CHARS:.
5ca0: 2b 09 76 61 6c 75 65 20 3d 20 28 63 68 61 72 20 +.value = (char
5cb0: 2a 29 54 63 6c 5f 47 65 74 53 74 72 69 6e 67 46 *)Tcl_GetStringF
5cc0: 72 6f 6d 4f 62 6a 28 76 61 6c 75 65 4f 62 6a 2c romObj(valueObj,
5cd0: 20 26 76 61 6c 75 65 4c 65 6e 67 74 68 29 3b 0a &valueLength);.
5ce0: 2b 09 76 61 6c 75 65 4c 65 6e 67 74 68 2b 2b 3b +.valueLength++;
5cf0: 2f 2a 20 69 6e 63 6c 75 64 65 20 65 6e 64 20 6f /* include end o
5d00: 66 20 73 74 72 69 6e 67 20 63 68 61 72 20 2a 2f f string char */
5d10: 0a 2b 09 69 66 20 28 76 61 6c 75 65 4c 65 6e 67 .+.if (valueLeng
5d20: 74 68 20 3e 20 6c 69 6e 6b 50 74 72 2d 3e 62 79 th > linkPtr->by
5d30: 74 65 73 29 20 7b 0a 2b 09 20 20 20 20 72 65 74 tes) {.+. ret
5d40: 75 72 6e 20 22 77 72 6f 6e 67 20 73 69 7a 65 20 urn "wrong size
5d50: 6f 66 20 63 68 61 72 2a 20 76 61 6c 75 65 22 3b of char* value";
5d60: 0a 2b 09 7d 0a 2b 09 69 66 20 28 6c 69 6e 6b 50 .+.}.+.if (linkP
5d70: 74 72 2d 3e 66 6c 61 67 73 20 26 20 4c 49 4e 4b tr->flags & LINK
5d80: 5f 41 4c 4c 4f 43 5f 4c 41 53 54 29 20 7b 0a 2b _ALLOC_LAST) {.+
5d90: 09 20 20 20 20 6d 65 6d 63 70 79 28 6c 69 6e 6b . memcpy(link
5da0: 50 74 72 2d 3e 6c 61 73 74 56 61 6c 75 65 2e 70 Ptr->lastValue.p
5db0: 63 2c 20 76 61 6c 75 65 2c 20 28 75 6e 73 69 67 c, value, (unsig
5dc0: 6e 65 64 29 20 76 61 6c 75 65 4c 65 6e 67 74 68 ned) valueLength
5dd0: 29 3b 0a 2b 09 20 20 20 20 6d 65 6d 63 70 79 28 );.+. memcpy(
5de0: 6c 69 6e 6b 50 74 72 2d 3e 61 64 64 72 2c 20 76 linkPtr->addr, v
5df0: 61 6c 75 65 2c 20 28 75 6e 73 69 67 6e 65 64 29 alue, (unsigned)
5e00: 20 76 61 6c 75 65 4c 65 6e 67 74 68 29 3b 0a 2b valueLength);.+
5e10: 09 7d 20 65 6c 73 65 20 7b 0a 2b 09 20 20 20 20 .} else {.+.
5e20: 6c 69 6e 6b 50 74 72 2d 3e 6c 61 73 74 56 61 6c linkPtr->lastVal
5e30: 75 65 2e 63 20 3d 20 27 5c 30 27 3b 0a 2b 09 20 ue.c = '\0';.+.
5e40: 20 20 20 4c 69 6e 6b 65 64 56 61 72 28 63 68 61 LinkedVar(cha
5e50: 72 29 20 3d 20 6c 69 6e 6b 50 74 72 2d 3e 6c 61 r) = linkPtr->la
5e60: 73 74 56 61 6c 75 65 2e 63 3b 0a 2b 09 7d 0a 2b stValue.c;.+.}.+
5e70: 09 62 72 65 61 6b 3b 0a 2b 0a 2b 20 20 20 20 63 .break;.+.+ c
5e80: 61 73 65 20 54 43 4c 5f 4c 49 4e 4b 5f 42 49 4e ase TCL_LINK_BIN
5e90: 41 52 59 3a 0a 2b 09 76 61 6c 75 65 20 3d 20 28 ARY:.+.value = (
5ea0: 63 68 61 72 20 2a 29 54 63 6c 5f 47 65 74 42 79 char *)Tcl_GetBy
5eb0: 74 65 41 72 72 61 79 46 72 6f 6d 4f 62 6a 28 76 teArrayFromObj(v
5ec0: 61 6c 75 65 4f 62 6a 2c 20 26 76 61 6c 75 65 4c alueObj, &valueL
5ed0: 65 6e 67 74 68 29 3b 0a 2b 09 69 66 20 28 76 61 ength);.+.if (va
5ee0: 6c 75 65 4c 65 6e 67 74 68 20 21 3d 20 6c 69 6e lueLength != lin
5ef0: 6b 50 74 72 2d 3e 62 79 74 65 73 29 20 7b 0a 2b kPtr->bytes) {.+
5f00: 09 20 20 20 20 72 65 74 75 72 6e 20 22 77 72 6f . return "wro
5f10: 6e 67 20 73 69 7a 65 20 6f 66 20 62 69 6e 61 72 ng size of binar
5f20: 79 20 76 61 6c 75 65 22 3b 0a 2b 09 7d 0a 2b 09 y value";.+.}.+.
5f30: 69 66 20 28 6c 69 6e 6b 50 74 72 2d 3e 66 6c 61 if (linkPtr->fla
5f40: 67 73 20 26 20 4c 49 4e 4b 5f 41 4c 4c 4f 43 5f gs & LINK_ALLOC_
5f50: 4c 41 53 54 29 20 7b 0a 2b 09 20 20 20 20 6d 65 LAST) {.+. me
5f60: 6d 63 70 79 28 6c 69 6e 6b 50 74 72 2d 3e 6c 61 mcpy(linkPtr->la
5f70: 73 74 56 61 6c 75 65 2e 70 63 2c 20 76 61 6c 75 stValue.pc, valu
5f80: 65 2c 20 28 75 6e 73 69 67 6e 65 64 29 20 76 61 e, (unsigned) va
5f90: 6c 75 65 4c 65 6e 67 74 68 29 3b 0a 2b 09 20 20 lueLength);.+.
5fa0: 20 20 6d 65 6d 63 70 79 28 6c 69 6e 6b 50 74 72 memcpy(linkPtr
5fb0: 2d 3e 61 64 64 72 2c 20 76 61 6c 75 65 2c 20 28 ->addr, value, (
5fc0: 75 6e 73 69 67 6e 65 64 29 20 76 61 6c 75 65 4c unsigned) valueL
5fd0: 65 6e 67 74 68 29 3b 0a 2b 09 7d 20 65 6c 73 65 ength);.+.} else
5fe0: 20 7b 0a 2b 09 20 20 20 20 6c 69 6e 6b 50 74 72 {.+. linkPtr
5ff0: 2d 3e 6c 61 73 74 56 61 6c 75 65 2e 75 63 20 3d ->lastValue.uc =
6000: 20 28 75 6e 73 69 67 6e 65 64 20 63 68 61 72 29 (unsigned char)
6010: 20 2a 76 61 6c 75 65 3b 0a 2b 09 20 20 20 20 4c *value;.+. L
6020: 69 6e 6b 65 64 56 61 72 28 75 6e 73 69 67 6e 65 inkedVar(unsigne
6030: 64 20 63 68 61 72 29 20 3d 20 6c 69 6e 6b 50 74 d char) = linkPt
6040: 72 2d 3e 6c 61 73 74 56 61 6c 75 65 2e 75 63 3b r->lastValue.uc;
6050: 0a 2b 09 7d 0a 2b 09 62 72 65 61 6b 3b 0a 2b 0a .+.}.+.break;.+.
6060: 20 20 20 20 20 64 65 66 61 75 6c 74 3a 0a 20 09 default:. .
6070: 72 65 74 75 72 6e 20 22 69 6e 74 65 72 6e 61 6c return "internal
6080: 20 65 72 72 6f 72 3a 20 62 61 64 20 6c 69 6e 6b error: bad link
6090: 65 64 20 76 61 72 69 61 62 6c 65 20 74 79 70 65 ed variable type
60a0: 22 3b 0a 20 20 20 20 20 7d 0a 40 40 20 2d 35 36 ";. }.@@ -56
60b0: 30 2c 34 39 20 2b 39 38 33 2c 31 36 39 20 40 40 0,49 +983,169 @@
60c0: 20 4f 62 6a 56 61 6c 75 65 28 0a 20 7b 0a 20 20 ObjValue(. {.
60d0: 20 20 20 63 68 61 72 20 2a 70 3b 0a 20 20 20 20 char *p;.
60e0: 20 54 63 6c 5f 4f 62 6a 20 2a 72 65 73 75 6c 74 Tcl_Obj *result
60f0: 4f 62 6a 3b 0a 2b 20 20 20 20 69 6e 74 20 6f 62 Obj;.+ int ob
6100: 6a 63 3b 0a 2b 20 20 20 20 73 74 61 74 69 63 20 jc;.+ static
6110: 54 63 6c 5f 4f 62 6a 20 2a 2a 6f 62 6a 76 20 3d Tcl_Obj **objv =
6120: 20 4e 55 4c 4c 3b 0a 2b 20 20 20 20 69 6e 74 20 NULL;.+ int
6130: 69 3b 0a 20 0a 20 20 20 20 20 73 77 69 74 63 68 i;. . switch
6140: 20 28 6c 69 6e 6b 50 74 72 2d 3e 74 79 70 65 29 (linkPtr->type)
6150: 20 7b 0a 20 20 20 20 20 63 61 73 65 20 54 43 4c {. case TCL
6160: 5f 4c 49 4e 4b 5f 49 4e 54 3a 0a 2b 09 69 66 20 _LINK_INT:.+.if
6170: 28 6c 69 6e 6b 50 74 72 2d 3e 66 6c 61 67 73 20 (linkPtr->flags
6180: 26 20 4c 49 4e 4b 5f 41 4c 4c 4f 43 5f 4c 41 53 & LINK_ALLOC_LAS
6190: 54 29 20 7b 0a 2b 09 20 20 20 20 6d 65 6d 63 70 T) {.+. memcp
61a0: 79 28 6c 69 6e 6b 50 74 72 2d 3e 6c 61 73 74 56 y(linkPtr->lastV
61b0: 61 6c 75 65 2e 70 63 2c 20 6c 69 6e 6b 50 74 72 alue.pc, linkPtr
61c0: 2d 3e 61 64 64 72 2c 20 6c 69 6e 6b 50 74 72 2d ->addr, linkPtr-
61d0: 3e 62 79 74 65 73 29 3b 0a 2b 09 20 20 20 20 6f >bytes);.+. o
61e0: 62 6a 63 20 3d 20 6c 69 6e 6b 50 74 72 2d 3e 62 bjc = linkPtr->b
61f0: 79 74 65 73 2f 73 69 7a 65 6f 66 28 69 6e 74 29 ytes/sizeof(int)
6200: 3b 0a 2b 09 20 20 20 20 6f 62 6a 76 20 3d 20 28 ;.+. objv = (
6210: 54 63 6c 5f 4f 62 6a 20 2a 2a 29 20 63 6b 72 65 Tcl_Obj **) ckre
6220: 61 6c 6c 6f 63 28 28 63 68 61 72 20 2a 29 6f 62 alloc((char *)ob
6230: 6a 76 2c 20 6f 62 6a 63 2a 73 69 7a 65 6f 66 28 jv, objc*sizeof(
6240: 54 63 6c 5f 4f 62 6a 2a 29 29 3b 0a 2b 09 20 20 Tcl_Obj*));.+.
6250: 20 20 66 6f 72 20 28 69 3d 30 3b 20 69 20 3c 20 for (i=0; i <
6260: 6f 62 6a 63 3b 20 69 2b 2b 29 20 7b 0a 2b 09 09 objc; i++) {.+..
6270: 6f 62 6a 76 5b 69 5d 20 3d 20 54 63 6c 5f 4e 65 objv[i] = Tcl_Ne
6280: 77 49 6e 74 4f 62 6a 28 6c 69 6e 6b 50 74 72 2d wIntObj(linkPtr-
6290: 3e 6c 61 73 74 56 61 6c 75 65 2e 70 69 5b 69 5d >lastValue.pi[i]
62a0: 29 3b 0a 2b 09 20 20 20 20 7d 0a 2b 09 20 20 20 );.+. }.+.
62b0: 20 72 65 74 75 72 6e 20 54 63 6c 5f 4e 65 77 4c return Tcl_NewL
62c0: 69 73 74 4f 62 6a 28 6f 62 6a 63 2c 6f 62 6a 76 istObj(objc,objv
62d0: 29 3b 0a 2b 09 7d 0a 20 09 6c 69 6e 6b 50 74 72 );.+.}. .linkPtr
62e0: 2d 3e 6c 61 73 74 56 61 6c 75 65 2e 69 20 3d 20 ->lastValue.i =
62f0: 4c 69 6e 6b 65 64 56 61 72 28 69 6e 74 29 3b 0a LinkedVar(int);.
6300: 20 09 72 65 74 75 72 6e 20 54 63 6c 5f 4e 65 77 .return Tcl_New
6310: 49 6e 74 4f 62 6a 28 6c 69 6e 6b 50 74 72 2d 3e IntObj(linkPtr->
6320: 6c 61 73 74 56 61 6c 75 65 2e 69 29 3b 0a 20 20 lastValue.i);.
6330: 20 20 20 63 61 73 65 20 54 43 4c 5f 4c 49 4e 4b case TCL_LINK
6340: 5f 57 49 44 45 5f 49 4e 54 3a 0a 2b 09 69 66 20 _WIDE_INT:.+.if
6350: 28 6c 69 6e 6b 50 74 72 2d 3e 66 6c 61 67 73 20 (linkPtr->flags
6360: 26 20 4c 49 4e 4b 5f 41 4c 4c 4f 43 5f 4c 41 53 & LINK_ALLOC_LAS
6370: 54 29 20 7b 0a 2b 09 20 20 20 20 6d 65 6d 63 70 T) {.+. memcp
6380: 79 28 6c 69 6e 6b 50 74 72 2d 3e 6c 61 73 74 56 y(linkPtr->lastV
6390: 61 6c 75 65 2e 70 63 2c 20 6c 69 6e 6b 50 74 72 alue.pc, linkPtr
63a0: 2d 3e 61 64 64 72 2c 20 6c 69 6e 6b 50 74 72 2d ->addr, linkPtr-
63b0: 3e 62 79 74 65 73 29 3b 0a 2b 09 20 20 20 20 6f >bytes);.+. o
63c0: 62 6a 63 20 3d 20 6c 69 6e 6b 50 74 72 2d 3e 62 bjc = linkPtr->b
63d0: 79 74 65 73 2f 73 69 7a 65 6f 66 28 54 63 6c 5f ytes/sizeof(Tcl_
63e0: 57 69 64 65 49 6e 74 29 3b 0a 2b 09 20 20 20 20 WideInt);.+.
63f0: 6f 62 6a 76 20 3d 20 28 54 63 6c 5f 4f 62 6a 20 objv = (Tcl_Obj
6400: 2a 2a 29 20 63 6b 72 65 61 6c 6c 6f 63 28 28 63 **) ckrealloc((c
6410: 68 61 72 20 2a 29 6f 62 6a 76 2c 20 6f 62 6a 63 har *)objv, objc
6420: 2a 73 69 7a 65 6f 66 28 54 63 6c 5f 4f 62 6a 2a *sizeof(Tcl_Obj*
6430: 29 29 3b 0a 2b 09 20 20 20 20 66 6f 72 20 28 69 ));.+. for (i
6440: 3d 30 3b 20 69 20 3c 20 6f 62 6a 63 3b 20 69 2b =0; i < objc; i+
6450: 2b 29 20 7b 0a 2b 09 09 6f 62 6a 76 5b 69 5d 20 +) {.+..objv[i]
6460: 3d 20 54 63 6c 5f 4e 65 77 57 69 64 65 49 6e 74 = Tcl_NewWideInt
6470: 4f 62 6a 28 6c 69 6e 6b 50 74 72 2d 3e 6c 61 73 Obj(linkPtr->las
6480: 74 56 61 6c 75 65 2e 70 77 5b 69 5d 29 3b 0a 2b tValue.pw[i]);.+
6490: 09 20 20 20 20 7d 0a 2b 09 20 20 20 20 72 65 74 . }.+. ret
64a0: 75 72 6e 20 54 63 6c 5f 4e 65 77 4c 69 73 74 4f urn Tcl_NewListO
64b0: 62 6a 28 6f 62 6a 63 2c 6f 62 6a 76 29 3b 0a 2b bj(objc,objv);.+
64c0: 09 7d 0a 20 09 6c 69 6e 6b 50 74 72 2d 3e 6c 61 .}. .linkPtr->la
64d0: 73 74 56 61 6c 75 65 2e 77 20 3d 20 4c 69 6e 6b stValue.w = Link
64e0: 65 64 56 61 72 28 54 63 6c 5f 57 69 64 65 49 6e edVar(Tcl_WideIn
64f0: 74 29 3b 0a 20 09 72 65 74 75 72 6e 20 54 63 6c t);. .return Tcl
6500: 5f 4e 65 77 57 69 64 65 49 6e 74 4f 62 6a 28 6c _NewWideIntObj(l
6510: 69 6e 6b 50 74 72 2d 3e 6c 61 73 74 56 61 6c 75 inkPtr->lastValu
6520: 65 2e 77 29 3b 0a 20 20 20 20 20 63 61 73 65 20 e.w);. case
6530: 54 43 4c 5f 4c 49 4e 4b 5f 44 4f 55 42 4c 45 3a TCL_LINK_DOUBLE:
6540: 0a 2b 09 69 66 20 28 6c 69 6e 6b 50 74 72 2d 3e .+.if (linkPtr->
6550: 66 6c 61 67 73 20 26 20 4c 49 4e 4b 5f 41 4c 4c flags & LINK_ALL
6560: 4f 43 5f 4c 41 53 54 29 20 7b 0a 2b 09 20 20 20 OC_LAST) {.+.
6570: 20 6d 65 6d 63 70 79 28 6c 69 6e 6b 50 74 72 2d memcpy(linkPtr-
6580: 3e 6c 61 73 74 56 61 6c 75 65 2e 70 63 2c 20 6c >lastValue.pc, l
6590: 69 6e 6b 50 74 72 2d 3e 61 64 64 72 2c 20 6c 69 inkPtr->addr, li
65a0: 6e 6b 50 74 72 2d 3e 62 79 74 65 73 29 3b 0a 2b nkPtr->bytes);.+
65b0: 09 20 20 20 20 6f 62 6a 63 20 3d 20 6c 69 6e 6b . objc = link
65c0: 50 74 72 2d 3e 62 79 74 65 73 2f 73 69 7a 65 6f Ptr->bytes/sizeo
65d0: 66 28 64 6f 75 62 6c 65 29 3b 0a 2b 09 20 20 20 f(double);.+.
65e0: 20 6f 62 6a 76 20 3d 20 28 54 63 6c 5f 4f 62 6a objv = (Tcl_Obj
65f0: 20 2a 2a 29 20 63 6b 72 65 61 6c 6c 6f 63 28 28 **) ckrealloc((
6600: 63 68 61 72 20 2a 29 6f 62 6a 76 2c 20 6f 62 6a char *)objv, obj
6610: 63 2a 73 69 7a 65 6f 66 28 54 63 6c 5f 4f 62 6a c*sizeof(Tcl_Obj
6620: 2a 29 29 3b 0a 2b 09 20 20 20 20 66 6f 72 20 28 *));.+. for (
6630: 69 3d 30 3b 20 69 20 3c 20 6f 62 6a 63 3b 20 69 i=0; i < objc; i
6640: 2b 2b 29 20 7b 0a 2b 09 09 6f 62 6a 76 5b 69 5d ++) {.+..objv[i]
6650: 20 3d 20 54 63 6c 5f 4e 65 77 44 6f 75 62 6c 65 = Tcl_NewDouble
6660: 4f 62 6a 28 6c 69 6e 6b 50 74 72 2d 3e 6c 61 73 Obj(linkPtr->las
6670: 74 56 61 6c 75 65 2e 70 64 5b 69 5d 29 3b 0a 2b tValue.pd[i]);.+
6680: 09 20 20 20 20 7d 0a 2b 09 20 20 20 20 72 65 74 . }.+. ret
6690: 75 72 6e 20 54 63 6c 5f 4e 65 77 4c 69 73 74 4f urn Tcl_NewListO
66a0: 62 6a 28 6f 62 6a 63 2c 6f 62 6a 76 29 3b 0a 2b bj(objc,objv);.+
66b0: 09 7d 0a 20 09 6c 69 6e 6b 50 74 72 2d 3e 6c 61 .}. .linkPtr->la
66c0: 73 74 56 61 6c 75 65 2e 64 20 3d 20 4c 69 6e 6b stValue.d = Link
66d0: 65 64 56 61 72 28 64 6f 75 62 6c 65 29 3b 0a 20 edVar(double);.
66e0: 09 72 65 74 75 72 6e 20 54 63 6c 5f 4e 65 77 44 .return Tcl_NewD
66f0: 6f 75 62 6c 65 4f 62 6a 28 6c 69 6e 6b 50 74 72 oubleObj(linkPtr
6700: 2d 3e 6c 61 73 74 56 61 6c 75 65 2e 64 29 3b 0a ->lastValue.d);.
6710: 20 20 20 20 20 63 61 73 65 20 54 43 4c 5f 4c 49 case TCL_LI
6720: 4e 4b 5f 42 4f 4f 4c 45 41 4e 3a 0a 2b 09 69 66 NK_BOOLEAN:.+.if
6730: 20 28 6c 69 6e 6b 50 74 72 2d 3e 66 6c 61 67 73 (linkPtr->flags
6740: 20 26 20 4c 49 4e 4b 5f 41 4c 4c 4f 43 5f 4c 41 & LINK_ALLOC_LA
6750: 53 54 29 20 7b 0a 2b 09 20 20 20 20 6d 65 6d 63 ST) {.+. memc
6760: 70 79 28 6c 69 6e 6b 50 74 72 2d 3e 6c 61 73 74 py(linkPtr->last
6770: 56 61 6c 75 65 2e 70 63 2c 20 6c 69 6e 6b 50 74 Value.pc, linkPt
6780: 72 2d 3e 61 64 64 72 2c 20 6c 69 6e 6b 50 74 72 r->addr, linkPtr
6790: 2d 3e 62 79 74 65 73 29 3b 0a 2b 09 20 20 20 20 ->bytes);.+.
67a0: 6f 62 6a 63 20 3d 20 6c 69 6e 6b 50 74 72 2d 3e objc = linkPtr->
67b0: 62 79 74 65 73 2f 73 69 7a 65 6f 66 28 69 6e 74 bytes/sizeof(int
67c0: 29 3b 0a 2b 09 20 20 20 20 6f 62 6a 76 20 3d 20 );.+. objv =
67d0: 28 54 63 6c 5f 4f 62 6a 20 2a 2a 29 20 63 6b 72 (Tcl_Obj **) ckr
67e0: 65 61 6c 6c 6f 63 28 28 63 68 61 72 20 2a 29 6f ealloc((char *)o
67f0: 62 6a 76 2c 20 6f 62 6a 63 2a 73 69 7a 65 6f 66 bjv, objc*sizeof
6800: 28 54 63 6c 5f 4f 62 6a 2a 29 29 3b 0a 2b 09 20 (Tcl_Obj*));.+.
6810: 20 20 20 66 6f 72 20 28 69 3d 30 3b 20 69 20 3c for (i=0; i <
6820: 20 6f 62 6a 63 3b 20 69 2b 2b 29 20 7b 0a 2b 09 objc; i++) {.+.
6830: 09 6f 62 6a 76 5b 69 5d 20 3d 20 54 63 6c 5f 4e .objv[i] = Tcl_N
6840: 65 77 42 6f 6f 6c 65 61 6e 4f 62 6a 28 6c 69 6e ewBooleanObj(lin
6850: 6b 50 74 72 2d 3e 6c 61 73 74 56 61 6c 75 65 2e kPtr->lastValue.
6860: 70 69 5b 69 5d 20 21 3d 20 30 29 3b 0a 2b 09 20 pi[i] != 0);.+.
6870: 20 20 20 7d 0a 2b 09 20 20 20 20 72 65 74 75 72 }.+. retur
6880: 6e 20 54 63 6c 5f 4e 65 77 4c 69 73 74 4f 62 6a n Tcl_NewListObj
6890: 28 6f 62 6a 63 2c 6f 62 6a 76 29 3b 0a 2b 09 7d (objc,objv);.+.}
68a0: 0a 20 09 6c 69 6e 6b 50 74 72 2d 3e 6c 61 73 74 . .linkPtr->last
68b0: 56 61 6c 75 65 2e 69 20 3d 20 4c 69 6e 6b 65 64 Value.i = Linked
68c0: 56 61 72 28 69 6e 74 29 3b 0a 20 09 72 65 74 75 Var(int);. .retu
68d0: 72 6e 20 54 63 6c 5f 4e 65 77 42 6f 6f 6c 65 61 rn Tcl_NewBoolea
68e0: 6e 4f 62 6a 28 6c 69 6e 6b 50 74 72 2d 3e 6c 61 nObj(linkPtr->la
68f0: 73 74 56 61 6c 75 65 2e 69 20 21 3d 20 30 29 3b stValue.i != 0);
6900: 0a 20 20 20 20 20 63 61 73 65 20 54 43 4c 5f 4c . case TCL_L
6910: 49 4e 4b 5f 43 48 41 52 3a 0a 2b 09 69 66 20 28 INK_CHAR:.+.if (
6920: 6c 69 6e 6b 50 74 72 2d 3e 66 6c 61 67 73 20 26 linkPtr->flags &
6930: 20 4c 49 4e 4b 5f 41 4c 4c 4f 43 5f 4c 41 53 54 LINK_ALLOC_LAST
6940: 29 20 7b 0a 2b 09 20 20 20 20 6d 65 6d 63 70 79 ) {.+. memcpy
6950: 28 6c 69 6e 6b 50 74 72 2d 3e 6c 61 73 74 56 61 (linkPtr->lastVa
6960: 6c 75 65 2e 70 63 2c 20 6c 69 6e 6b 50 74 72 2d lue.pc, linkPtr-
6970: 3e 61 64 64 72 2c 20 6c 69 6e 6b 50 74 72 2d 3e >addr, linkPtr->
6980: 62 79 74 65 73 29 3b 0a 2b 09 20 20 20 20 6f 62 bytes);.+. ob
6990: 6a 63 20 3d 20 6c 69 6e 6b 50 74 72 2d 3e 62 79 jc = linkPtr->by
69a0: 74 65 73 2f 73 69 7a 65 6f 66 28 63 68 61 72 29 tes/sizeof(char)
69b0: 3b 0a 2b 09 20 20 20 20 6f 62 6a 76 20 3d 20 28 ;.+. objv = (
69c0: 54 63 6c 5f 4f 62 6a 20 2a 2a 29 20 63 6b 72 65 Tcl_Obj **) ckre
69d0: 61 6c 6c 6f 63 28 28 63 68 61 72 20 2a 29 6f 62 alloc((char *)ob
69e0: 6a 76 2c 20 6f 62 6a 63 2a 73 69 7a 65 6f 66 28 jv, objc*sizeof(
69f0: 54 63 6c 5f 4f 62 6a 2a 29 29 3b 0a 2b 09 20 20 Tcl_Obj*));.+.
6a00: 20 20 66 6f 72 20 28 69 3d 30 3b 20 69 20 3c 20 for (i=0; i <
6a10: 6f 62 6a 63 3b 20 69 2b 2b 29 20 7b 0a 2b 09 09 objc; i++) {.+..
6a20: 6f 62 6a 76 5b 69 5d 20 3d 20 54 63 6c 5f 4e 65 objv[i] = Tcl_Ne
6a30: 77 49 6e 74 4f 62 6a 28 6c 69 6e 6b 50 74 72 2d wIntObj(linkPtr-
6a40: 3e 6c 61 73 74 56 61 6c 75 65 2e 70 63 5b 69 5d >lastValue.pc[i]
6a50: 29 3b 0a 2b 09 20 20 20 20 7d 0a 2b 09 20 20 20 );.+. }.+.
6a60: 20 72 65 74 75 72 6e 20 54 63 6c 5f 4e 65 77 4c return Tcl_NewL
6a70: 69 73 74 4f 62 6a 28 6f 62 6a 63 2c 6f 62 6a 76 istObj(objc,objv
6a80: 29 3b 0a 2b 09 7d 0a 20 09 6c 69 6e 6b 50 74 72 );.+.}. .linkPtr
6a90: 2d 3e 6c 61 73 74 56 61 6c 75 65 2e 63 20 3d 20 ->lastValue.c =
6aa0: 4c 69 6e 6b 65 64 56 61 72 28 63 68 61 72 29 3b LinkedVar(char);
6ab0: 0a 20 09 72 65 74 75 72 6e 20 54 63 6c 5f 4e 65 . .return Tcl_Ne
6ac0: 77 49 6e 74 4f 62 6a 28 6c 69 6e 6b 50 74 72 2d wIntObj(linkPtr-
6ad0: 3e 6c 61 73 74 56 61 6c 75 65 2e 63 29 3b 0a 20 >lastValue.c);.
6ae0: 20 20 20 20 63 61 73 65 20 54 43 4c 5f 4c 49 4e case TCL_LIN
6af0: 4b 5f 55 43 48 41 52 3a 0a 2b 09 69 66 20 28 6c K_UCHAR:.+.if (l
6b00: 69 6e 6b 50 74 72 2d 3e 66 6c 61 67 73 20 26 20 inkPtr->flags &
6b10: 4c 49 4e 4b 5f 41 4c 4c 4f 43 5f 4c 41 53 54 29 LINK_ALLOC_LAST)
6b20: 20 7b 0a 2b 09 20 20 20 20 6d 65 6d 63 70 79 28 {.+. memcpy(
6b30: 6c 69 6e 6b 50 74 72 2d 3e 6c 61 73 74 56 61 6c linkPtr->lastVal
6b40: 75 65 2e 70 63 2c 20 6c 69 6e 6b 50 74 72 2d 3e ue.pc, linkPtr->
6b50: 61 64 64 72 2c 20 6c 69 6e 6b 50 74 72 2d 3e 62 addr, linkPtr->b
6b60: 79 74 65 73 29 3b 0a 2b 09 20 20 20 20 6f 62 6a ytes);.+. obj
6b70: 63 20 3d 20 6c 69 6e 6b 50 74 72 2d 3e 62 79 74 c = linkPtr->byt
6b80: 65 73 2f 73 69 7a 65 6f 66 28 75 6e 73 69 67 6e es/sizeof(unsign
6b90: 65 64 20 63 68 61 72 29 3b 0a 2b 09 20 20 20 20 ed char);.+.
6ba0: 6f 62 6a 76 20 3d 20 28 54 63 6c 5f 4f 62 6a 20 objv = (Tcl_Obj
6bb0: 2a 2a 29 20 63 6b 72 65 61 6c 6c 6f 63 28 28 63 **) ckrealloc((c
6bc0: 68 61 72 20 2a 29 6f 62 6a 76 2c 20 6f 62 6a 63 har *)objv, objc
6bd0: 2a 73 69 7a 65 6f 66 28 54 63 6c 5f 4f 62 6a 2a *sizeof(Tcl_Obj*
6be0: 29 29 3b 0a 2b 09 20 20 20 20 66 6f 72 20 28 69 ));.+. for (i
6bf0: 3d 30 3b 20 69 20 3c 20 6f 62 6a 63 3b 20 69 2b =0; i < objc; i+
6c00: 2b 29 20 7b 0a 2b 09 09 6f 62 6a 76 5b 69 5d 20 +) {.+..objv[i]
6c10: 3d 20 54 63 6c 5f 4e 65 77 49 6e 74 4f 62 6a 28 = Tcl_NewIntObj(
6c20: 6c 69 6e 6b 50 74 72 2d 3e 6c 61 73 74 56 61 6c linkPtr->lastVal
6c30: 75 65 2e 70 75 63 5b 69 5d 29 3b 0a 2b 09 20 20 ue.puc[i]);.+.
6c40: 20 20 7d 0a 2b 09 20 20 20 20 72 65 74 75 72 6e }.+. return
6c50: 20 54 63 6c 5f 4e 65 77 4c 69 73 74 4f 62 6a 28 Tcl_NewListObj(
6c60: 6f 62 6a 63 2c 6f 62 6a 76 29 3b 0a 2b 09 7d 0a objc,objv);.+.}.
6c70: 20 09 6c 69 6e 6b 50 74 72 2d 3e 6c 61 73 74 56 .linkPtr->lastV
6c80: 61 6c 75 65 2e 75 63 20 3d 20 4c 69 6e 6b 65 64 alue.uc = Linked
6c90: 56 61 72 28 75 6e 73 69 67 6e 65 64 20 63 68 61 Var(unsigned cha
6ca0: 72 29 3b 0a 20 09 72 65 74 75 72 6e 20 54 63 6c r);. .return Tcl
6cb0: 5f 4e 65 77 49 6e 74 4f 62 6a 28 6c 69 6e 6b 50 _NewIntObj(linkP
6cc0: 74 72 2d 3e 6c 61 73 74 56 61 6c 75 65 2e 75 63 tr->lastValue.uc
6cd0: 29 3b 0a 20 20 20 20 20 63 61 73 65 20 54 43 4c );. case TCL
6ce0: 5f 4c 49 4e 4b 5f 53 48 4f 52 54 3a 0a 2b 09 69 _LINK_SHORT:.+.i
6cf0: 66 20 28 6c 69 6e 6b 50 74 72 2d 3e 66 6c 61 67 f (linkPtr->flag
6d00: 73 20 26 20 4c 49 4e 4b 5f 41 4c 4c 4f 43 5f 4c s & LINK_ALLOC_L
6d10: 41 53 54 29 20 7b 0a 2b 09 20 20 20 20 6d 65 6d AST) {.+. mem
6d20: 63 70 79 28 6c 69 6e 6b 50 74 72 2d 3e 6c 61 73 cpy(linkPtr->las
6d30: 74 56 61 6c 75 65 2e 70 63 2c 20 6c 69 6e 6b 50 tValue.pc, linkP
6d40: 74 72 2d 3e 61 64 64 72 2c 20 6c 69 6e 6b 50 74 tr->addr, linkPt
6d50: 72 2d 3e 62 79 74 65 73 29 3b 0a 2b 09 20 20 20 r->bytes);.+.
6d60: 20 6f 62 6a 63 20 3d 20 6c 69 6e 6b 50 74 72 2d objc = linkPtr-
6d70: 3e 62 79 74 65 73 2f 73 69 7a 65 6f 66 28 73 68 >bytes/sizeof(sh
6d80: 6f 72 74 29 3b 0a 2b 09 20 20 20 20 6f 62 6a 76 ort);.+. objv
6d90: 20 3d 20 28 54 63 6c 5f 4f 62 6a 20 2a 2a 29 20 = (Tcl_Obj **)
6da0: 63 6b 72 65 61 6c 6c 6f 63 28 28 63 68 61 72 20 ckrealloc((char
6db0: 2a 29 6f 62 6a 76 2c 20 6f 62 6a 63 2a 73 69 7a *)objv, objc*siz
6dc0: 65 6f 66 28 54 63 6c 5f 4f 62 6a 2a 29 29 3b 0a eof(Tcl_Obj*));.
6dd0: 2b 09 20 20 20 20 66 6f 72 20 28 69 3d 30 3b 20 +. for (i=0;
6de0: 69 20 3c 20 6f 62 6a 63 3b 20 69 2b 2b 29 20 7b i < objc; i++) {
6df0: 0a 2b 09 09 6f 62 6a 76 5b 69 5d 20 3d 20 54 63 .+..objv[i] = Tc
6e00: 6c 5f 4e 65 77 49 6e 74 4f 62 6a 28 6c 69 6e 6b l_NewIntObj(link
6e10: 50 74 72 2d 3e 6c 61 73 74 56 61 6c 75 65 2e 70 Ptr->lastValue.p
6e20: 73 5b 69 5d 29 3b 0a 2b 09 20 20 20 20 7d 0a 2b s[i]);.+. }.+
6e30: 09 20 20 20 20 72 65 74 75 72 6e 20 54 63 6c 5f . return Tcl_
6e40: 4e 65 77 4c 69 73 74 4f 62 6a 28 6f 62 6a 63 2c NewListObj(objc,
6e50: 6f 62 6a 76 29 3b 0a 2b 09 7d 0a 20 09 6c 69 6e objv);.+.}. .lin
6e60: 6b 50 74 72 2d 3e 6c 61 73 74 56 61 6c 75 65 2e kPtr->lastValue.
6e70: 73 20 3d 20 4c 69 6e 6b 65 64 56 61 72 28 73 68 s = LinkedVar(sh
6e80: 6f 72 74 29 3b 0a 20 09 72 65 74 75 72 6e 20 54 ort);. .return T
6e90: 63 6c 5f 4e 65 77 49 6e 74 4f 62 6a 28 6c 69 6e cl_NewIntObj(lin
6ea0: 6b 50 74 72 2d 3e 6c 61 73 74 56 61 6c 75 65 2e kPtr->lastValue.
6eb0: 73 29 3b 0a 20 20 20 20 20 63 61 73 65 20 54 43 s);. case TC
6ec0: 4c 5f 4c 49 4e 4b 5f 55 53 48 4f 52 54 3a 0a 2b L_LINK_USHORT:.+
6ed0: 09 69 66 20 28 6c 69 6e 6b 50 74 72 2d 3e 66 6c .if (linkPtr->fl
6ee0: 61 67 73 20 26 20 4c 49 4e 4b 5f 41 4c 4c 4f 43 ags & LINK_ALLOC
6ef0: 5f 4c 41 53 54 29 20 7b 0a 2b 09 20 20 20 20 6d _LAST) {.+. m
6f00: 65 6d 63 70 79 28 6c 69 6e 6b 50 74 72 2d 3e 6c emcpy(linkPtr->l
6f10: 61 73 74 56 61 6c 75 65 2e 70 63 2c 20 6c 69 6e astValue.pc, lin
6f20: 6b 50 74 72 2d 3e 61 64 64 72 2c 20 6c 69 6e 6b kPtr->addr, link
6f30: 50 74 72 2d 3e 62 79 74 65 73 29 3b 0a 2b 09 20 Ptr->bytes);.+.
6f40: 20 20 20 6f 62 6a 63 20 3d 20 6c 69 6e 6b 50 74 objc = linkPt
6f50: 72 2d 3e 62 79 74 65 73 2f 73 69 7a 65 6f 66 28 r->bytes/sizeof(
6f60: 75 6e 73 69 67 6e 65 64 20 73 68 6f 72 74 29 3b unsigned short);
6f70: 0a 2b 09 20 20 20 20 6f 62 6a 76 20 3d 20 28 54 .+. objv = (T
6f80: 63 6c 5f 4f 62 6a 20 2a 2a 29 20 63 6b 72 65 61 cl_Obj **) ckrea
6f90: 6c 6c 6f 63 28 28 63 68 61 72 20 2a 29 6f 62 6a lloc((char *)obj
6fa0: 76 2c 20 6f 62 6a 63 2a 73 69 7a 65 6f 66 28 54 v, objc*sizeof(T
6fb0: 63 6c 5f 4f 62 6a 2a 29 29 3b 0a 2b 09 20 20 20 cl_Obj*));.+.
6fc0: 20 66 6f 72 20 28 69 3d 30 3b 20 69 20 3c 20 6f for (i=0; i < o
6fd0: 62 6a 63 3b 20 69 2b 2b 29 20 7b 0a 2b 09 09 6f bjc; i++) {.+..o
6fe0: 62 6a 76 5b 69 5d 20 3d 20 54 63 6c 5f 4e 65 77 bjv[i] = Tcl_New
6ff0: 49 6e 74 4f 62 6a 28 6c 69 6e 6b 50 74 72 2d 3e IntObj(linkPtr->
7000: 6c 61 73 74 56 61 6c 75 65 2e 70 75 73 5b 69 5d lastValue.pus[i]
7010: 29 3b 0a 2b 09 20 20 20 20 7d 0a 2b 09 20 20 20 );.+. }.+.
7020: 20 72 65 74 75 72 6e 20 54 63 6c 5f 4e 65 77 4c return Tcl_NewL
7030: 69 73 74 4f 62 6a 28 6f 62 6a 63 2c 6f 62 6a 76 istObj(objc,objv
7040: 29 3b 0a 2b 09 7d 0a 20 09 6c 69 6e 6b 50 74 72 );.+.}. .linkPtr
7050: 2d 3e 6c 61 73 74 56 61 6c 75 65 2e 75 73 20 3d ->lastValue.us =
7060: 20 4c 69 6e 6b 65 64 56 61 72 28 75 6e 73 69 67 LinkedVar(unsig
7070: 6e 65 64 20 73 68 6f 72 74 29 3b 0a 20 09 72 65 ned short);. .re
7080: 74 75 72 6e 20 54 63 6c 5f 4e 65 77 49 6e 74 4f turn Tcl_NewIntO
7090: 62 6a 28 6c 69 6e 6b 50 74 72 2d 3e 6c 61 73 74 bj(linkPtr->last
70a0: 56 61 6c 75 65 2e 75 73 29 3b 0a 20 20 20 20 20 Value.us);.
70b0: 63 61 73 65 20 54 43 4c 5f 4c 49 4e 4b 5f 55 49 case TCL_LINK_UI
70c0: 4e 54 3a 0a 2b 09 69 66 20 28 6c 69 6e 6b 50 74 NT:.+.if (linkPt
70d0: 72 2d 3e 66 6c 61 67 73 20 26 20 4c 49 4e 4b 5f r->flags & LINK_
70e0: 41 4c 4c 4f 43 5f 4c 41 53 54 29 20 7b 0a 2b 09 ALLOC_LAST) {.+.
70f0: 20 20 20 20 6d 65 6d 63 70 79 28 6c 69 6e 6b 50 memcpy(linkP
7100: 74 72 2d 3e 6c 61 73 74 56 61 6c 75 65 2e 70 63 tr->lastValue.pc
7110: 2c 20 6c 69 6e 6b 50 74 72 2d 3e 61 64 64 72 2c , linkPtr->addr,
7120: 20 6c 69 6e 6b 50 74 72 2d 3e 62 79 74 65 73 29 linkPtr->bytes)
7130: 3b 0a 2b 09 20 20 20 20 6f 62 6a 63 20 3d 20 6c ;.+. objc = l
7140: 69 6e 6b 50 74 72 2d 3e 62 79 74 65 73 2f 73 69 inkPtr->bytes/si
7150: 7a 65 6f 66 28 75 6e 73 69 67 6e 65 64 20 69 6e zeof(unsigned in
7160: 74 29 3b 0a 2b 09 20 20 20 20 6f 62 6a 76 20 3d t);.+. objv =
7170: 20 28 54 63 6c 5f 4f 62 6a 20 2a 2a 29 20 63 6b (Tcl_Obj **) ck
7180: 72 65 61 6c 6c 6f 63 28 28 63 68 61 72 20 2a 29 realloc((char *)
7190: 6f 62 6a 76 2c 20 6f 62 6a 63 2a 73 69 7a 65 6f objv, objc*sizeo
71a0: 66 28 54 63 6c 5f 4f 62 6a 2a 29 29 3b 0a 2b 09 f(Tcl_Obj*));.+.
71b0: 20 20 20 20 66 6f 72 20 28 69 3d 30 3b 20 69 20 for (i=0; i
71c0: 3c 20 6f 62 6a 63 3b 20 69 2b 2b 29 20 7b 0a 2b < objc; i++) {.+
71d0: 09 09 6f 62 6a 76 5b 69 5d 20 3d 20 54 63 6c 5f ..objv[i] = Tcl_
71e0: 4e 65 77 57 69 64 65 49 6e 74 4f 62 6a 28 6c 69 NewWideIntObj(li
71f0: 6e 6b 50 74 72 2d 3e 6c 61 73 74 56 61 6c 75 65 nkPtr->lastValue
7200: 2e 70 75 69 5b 69 5d 29 3b 0a 2b 09 20 20 20 20 .pui[i]);.+.
7210: 7d 0a 2b 09 20 20 20 20 72 65 74 75 72 6e 20 54 }.+. return T
7220: 63 6c 5f 4e 65 77 4c 69 73 74 4f 62 6a 28 6f 62 cl_NewListObj(ob
7230: 6a 63 2c 6f 62 6a 76 29 3b 0a 2b 09 7d 0a 20 09 jc,objv);.+.}. .
7240: 6c 69 6e 6b 50 74 72 2d 3e 6c 61 73 74 56 61 6c linkPtr->lastVal
7250: 75 65 2e 75 69 20 3d 20 4c 69 6e 6b 65 64 56 61 ue.ui = LinkedVa
7260: 72 28 75 6e 73 69 67 6e 65 64 20 69 6e 74 29 3b r(unsigned int);
7270: 0a 20 09 72 65 74 75 72 6e 20 54 63 6c 5f 4e 65 . .return Tcl_Ne
7280: 77 57 69 64 65 49 6e 74 4f 62 6a 28 28 54 63 6c wWideIntObj((Tcl
7290: 5f 57 69 64 65 49 6e 74 29 20 6c 69 6e 6b 50 74 _WideInt) linkPt
72a0: 72 2d 3e 6c 61 73 74 56 61 6c 75 65 2e 75 69 29 r->lastValue.ui)
72b0: 3b 0a 20 20 20 20 20 63 61 73 65 20 54 43 4c 5f ;. case TCL_
72c0: 4c 49 4e 4b 5f 4c 4f 4e 47 3a 0a 2b 09 69 66 20 LINK_LONG:.+.if
72d0: 28 6c 69 6e 6b 50 74 72 2d 3e 66 6c 61 67 73 20 (linkPtr->flags
72e0: 26 20 4c 49 4e 4b 5f 41 4c 4c 4f 43 5f 4c 41 53 & LINK_ALLOC_LAS
72f0: 54 29 20 7b 0a 2b 09 20 20 20 20 6d 65 6d 63 70 T) {.+. memcp
7300: 79 28 6c 69 6e 6b 50 74 72 2d 3e 6c 61 73 74 56 y(linkPtr->lastV
7310: 61 6c 75 65 2e 70 63 2c 20 6c 69 6e 6b 50 74 72 alue.pc, linkPtr
7320: 2d 3e 61 64 64 72 2c 20 6c 69 6e 6b 50 74 72 2d ->addr, linkPtr-
7330: 3e 62 79 74 65 73 29 3b 0a 2b 09 20 20 20 20 6f >bytes);.+. o
7340: 62 6a 63 20 3d 20 6c 69 6e 6b 50 74 72 2d 3e 62 bjc = linkPtr->b
7350: 79 74 65 73 2f 73 69 7a 65 6f 66 28 6c 6f 6e 67 ytes/sizeof(long
7360: 29 3b 0a 2b 09 20 20 20 20 6f 62 6a 76 20 3d 20 );.+. objv =
7370: 28 54 63 6c 5f 4f 62 6a 20 2a 2a 29 20 63 6b 72 (Tcl_Obj **) ckr
7380: 65 61 6c 6c 6f 63 28 28 63 68 61 72 20 2a 29 6f ealloc((char *)o
7390: 62 6a 76 2c 20 6f 62 6a 63 2a 73 69 7a 65 6f 66 bjv, objc*sizeof
73a0: 28 54 63 6c 5f 4f 62 6a 2a 29 29 3b 0a 2b 09 20 (Tcl_Obj*));.+.
73b0: 20 20 20 66 6f 72 20 28 69 3d 30 3b 20 69 20 3c for (i=0; i <
73c0: 20 6f 62 6a 63 3b 20 69 2b 2b 29 20 7b 0a 2b 09 objc; i++) {.+.
73d0: 09 6f 62 6a 76 5b 69 5d 20 3d 20 54 63 6c 5f 4e .objv[i] = Tcl_N
73e0: 65 77 57 69 64 65 49 6e 74 4f 62 6a 28 6c 69 6e ewWideIntObj(lin
73f0: 6b 50 74 72 2d 3e 6c 61 73 74 56 61 6c 75 65 2e kPtr->lastValue.
7400: 70 6c 5b 69 5d 29 3b 0a 2b 09 20 20 20 20 7d 0a pl[i]);.+. }.
7410: 2b 09 20 20 20 20 72 65 74 75 72 6e 20 54 63 6c +. return Tcl
7420: 5f 4e 65 77 4c 69 73 74 4f 62 6a 28 6f 62 6a 63 _NewListObj(objc
7430: 2c 6f 62 6a 76 29 3b 0a 2b 09 7d 0a 20 09 6c 69 ,objv);.+.}. .li
7440: 6e 6b 50 74 72 2d 3e 6c 61 73 74 56 61 6c 75 65 nkPtr->lastValue
7450: 2e 6c 20 3d 20 4c 69 6e 6b 65 64 56 61 72 28 6c .l = LinkedVar(l
7460: 6f 6e 67 29 3b 0a 20 09 72 65 74 75 72 6e 20 54 ong);. .return T
7470: 63 6c 5f 4e 65 77 57 69 64 65 49 6e 74 4f 62 6a cl_NewWideIntObj
7480: 28 28 54 63 6c 5f 57 69 64 65 49 6e 74 29 20 6c ((Tcl_WideInt) l
7490: 69 6e 6b 50 74 72 2d 3e 6c 61 73 74 56 61 6c 75 inkPtr->lastValu
74a0: 65 2e 6c 29 3b 0a 20 20 20 20 20 63 61 73 65 20 e.l);. case
74b0: 54 43 4c 5f 4c 49 4e 4b 5f 55 4c 4f 4e 47 3a 0a TCL_LINK_ULONG:.
74c0: 2b 09 69 66 20 28 6c 69 6e 6b 50 74 72 2d 3e 66 +.if (linkPtr->f
74d0: 6c 61 67 73 20 26 20 4c 49 4e 4b 5f 41 4c 4c 4f lags & LINK_ALLO
74e0: 43 5f 4c 41 53 54 29 20 7b 0a 2b 09 20 20 20 20 C_LAST) {.+.
74f0: 6d 65 6d 63 70 79 28 6c 69 6e 6b 50 74 72 2d 3e memcpy(linkPtr->
7500: 6c 61 73 74 56 61 6c 75 65 2e 70 63 2c 20 6c 69 lastValue.pc, li
7510: 6e 6b 50 74 72 2d 3e 61 64 64 72 2c 20 6c 69 6e nkPtr->addr, lin
7520: 6b 50 74 72 2d 3e 62 79 74 65 73 29 3b 0a 2b 09 kPtr->bytes);.+.
7530: 20 20 20 20 6f 62 6a 63 20 3d 20 6c 69 6e 6b 50 objc = linkP
7540: 74 72 2d 3e 62 79 74 65 73 2f 73 69 7a 65 6f 66 tr->bytes/sizeof
7550: 28 75 6e 73 69 67 6e 65 64 20 6c 6f 6e 67 29 3b (unsigned long);
7560: 0a 2b 09 20 20 20 20 6f 62 6a 76 20 3d 20 28 54 .+. objv = (T
7570: 63 6c 5f 4f 62 6a 20 2a 2a 29 20 63 6b 72 65 61 cl_Obj **) ckrea
7580: 6c 6c 6f 63 28 28 63 68 61 72 20 2a 29 6f 62 6a lloc((char *)obj
7590: 76 2c 20 6f 62 6a 63 2a 73 69 7a 65 6f 66 28 54 v, objc*sizeof(T
75a0: 63 6c 5f 4f 62 6a 2a 29 29 3b 0a 2b 09 20 20 20 cl_Obj*));.+.
75b0: 20 66 6f 72 20 28 69 3d 30 3b 20 69 20 3c 20 6f for (i=0; i < o
75c0: 62 6a 63 3b 20 69 2b 2b 29 20 7b 0a 2b 09 09 6f bjc; i++) {.+..o
75d0: 62 6a 76 5b 69 5d 20 3d 20 54 63 6c 5f 4e 65 77 bjv[i] = Tcl_New
75e0: 57 69 64 65 49 6e 74 4f 62 6a 28 6c 69 6e 6b 50 WideIntObj(linkP
75f0: 74 72 2d 3e 6c 61 73 74 56 61 6c 75 65 2e 70 75 tr->lastValue.pu
7600: 6c 5b 69 5d 29 3b 0a 2b 09 20 20 20 20 7d 0a 2b l[i]);.+. }.+
7610: 09 20 20 20 20 72 65 74 75 72 6e 20 54 63 6c 5f . return Tcl_
7620: 4e 65 77 4c 69 73 74 4f 62 6a 28 6f 62 6a 63 2c NewListObj(objc,
7630: 6f 62 6a 76 29 3b 0a 2b 09 7d 0a 20 09 6c 69 6e objv);.+.}. .lin
7640: 6b 50 74 72 2d 3e 6c 61 73 74 56 61 6c 75 65 2e kPtr->lastValue.
7650: 75 6c 20 3d 20 4c 69 6e 6b 65 64 56 61 72 28 75 ul = LinkedVar(u
7660: 6e 73 69 67 6e 65 64 20 6c 6f 6e 67 29 3b 0a 20 nsigned long);.
7670: 09 72 65 74 75 72 6e 20 54 63 6c 5f 4e 65 77 57 .return Tcl_NewW
7680: 69 64 65 49 6e 74 4f 62 6a 28 28 54 63 6c 5f 57 ideIntObj((Tcl_W
7690: 69 64 65 49 6e 74 29 20 6c 69 6e 6b 50 74 72 2d ideInt) linkPtr-
76a0: 3e 6c 61 73 74 56 61 6c 75 65 2e 75 6c 29 3b 0a >lastValue.ul);.
76b0: 20 20 20 20 20 63 61 73 65 20 54 43 4c 5f 4c 49 case TCL_LI
76c0: 4e 4b 5f 46 4c 4f 41 54 3a 0a 2b 09 69 66 20 28 NK_FLOAT:.+.if (
76d0: 6c 69 6e 6b 50 74 72 2d 3e 66 6c 61 67 73 20 26 linkPtr->flags &
76e0: 20 4c 49 4e 4b 5f 41 4c 4c 4f 43 5f 4c 41 53 54 LINK_ALLOC_LAST
76f0: 29 20 7b 0a 2b 09 20 20 20 20 6d 65 6d 63 70 79 ) {.+. memcpy
7700: 28 6c 69 6e 6b 50 74 72 2d 3e 6c 61 73 74 56 61 (linkPtr->lastVa
7710: 6c 75 65 2e 70 63 2c 20 6c 69 6e 6b 50 74 72 2d lue.pc, linkPtr-
7720: 3e 61 64 64 72 2c 20 6c 69 6e 6b 50 74 72 2d 3e >addr, linkPtr->
7730: 62 79 74 65 73 29 3b 0a 2b 09 20 20 20 20 6f 62 bytes);.+. ob
7740: 6a 63 20 3d 20 6c 69 6e 6b 50 74 72 2d 3e 62 79 jc = linkPtr->by
7750: 74 65 73 2f 73 69 7a 65 6f 66 28 66 6c 6f 61 74 tes/sizeof(float
7760: 29 3b 0a 2b 09 20 20 20 20 6f 62 6a 76 20 3d 20 );.+. objv =
7770: 28 54 63 6c 5f 4f 62 6a 20 2a 2a 29 20 63 6b 72 (Tcl_Obj **) ckr
7780: 65 61 6c 6c 6f 63 28 28 63 68 61 72 20 2a 29 6f ealloc((char *)o
7790: 62 6a 76 2c 20 6f 62 6a 63 2a 73 69 7a 65 6f 66 bjv, objc*sizeof
77a0: 28 54 63 6c 5f 4f 62 6a 2a 29 29 3b 0a 2b 09 20 (Tcl_Obj*));.+.
77b0: 20 20 20 66 6f 72 20 28 69 3d 30 3b 20 69 20 3c for (i=0; i <
77c0: 20 6f 62 6a 63 3b 20 69 2b 2b 29 20 7b 0a 2b 09 objc; i++) {.+.
77d0: 09 6f 62 6a 76 5b 69 5d 20 3d 20 54 63 6c 5f 4e .objv[i] = Tcl_N
77e0: 65 77 44 6f 75 62 6c 65 4f 62 6a 28 6c 69 6e 6b ewDoubleObj(link
77f0: 50 74 72 2d 3e 6c 61 73 74 56 61 6c 75 65 2e 70 Ptr->lastValue.p
7800: 66 5b 69 5d 29 3b 0a 2b 09 20 20 20 20 7d 0a 2b f[i]);.+. }.+
7810: 09 20 20 20 20 72 65 74 75 72 6e 20 54 63 6c 5f . return Tcl_
7820: 4e 65 77 4c 69 73 74 4f 62 6a 28 6f 62 6a 63 2c NewListObj(objc,
7830: 6f 62 6a 76 29 3b 0a 2b 09 7d 0a 20 09 6c 69 6e objv);.+.}. .lin
7840: 6b 50 74 72 2d 3e 6c 61 73 74 56 61 6c 75 65 2e kPtr->lastValue.
7850: 66 20 3d 20 4c 69 6e 6b 65 64 56 61 72 28 66 6c f = LinkedVar(fl
7860: 6f 61 74 29 3b 0a 20 09 72 65 74 75 72 6e 20 54 oat);. .return T
7870: 63 6c 5f 4e 65 77 44 6f 75 62 6c 65 4f 62 6a 28 cl_NewDoubleObj(
7880: 6c 69 6e 6b 50 74 72 2d 3e 6c 61 73 74 56 61 6c linkPtr->lastVal
7890: 75 65 2e 66 29 3b 0a 20 20 20 20 20 63 61 73 65 ue.f);. case
78a0: 20 54 43 4c 5f 4c 49 4e 4b 5f 57 49 44 45 5f 55 TCL_LINK_WIDE_U
78b0: 49 4e 54 3a 0a 2d 09 6c 69 6e 6b 50 74 72 2d 3e INT:.-.linkPtr->
78c0: 6c 61 73 74 56 61 6c 75 65 2e 75 77 20 3d 20 4c lastValue.uw = L
78d0: 69 6e 6b 65 64 56 61 72 28 54 63 6c 5f 57 69 64 inkedVar(Tcl_Wid
78e0: 65 55 49 6e 74 29 3b 0a 20 09 2f 2a 0a 20 09 20 eUInt);. ./*. .
78f0: 2a 20 46 49 58 4d 45 3a 20 72 65 70 72 65 73 65 * FIXME: represe
7900: 6e 74 20 61 73 20 61 20 62 69 67 6e 75 6d 2e 0a nt as a bignum..
7910: 20 09 20 2a 2f 0a 2b 09 69 66 20 28 6c 69 6e 6b . */.+.if (link
7920: 50 74 72 2d 3e 66 6c 61 67 73 20 26 20 4c 49 4e Ptr->flags & LIN
7930: 4b 5f 41 4c 4c 4f 43 5f 4c 41 53 54 29 20 7b 0a K_ALLOC_LAST) {.
7940: 2b 09 20 20 20 20 6d 65 6d 63 70 79 28 6c 69 6e +. memcpy(lin
7950: 6b 50 74 72 2d 3e 6c 61 73 74 56 61 6c 75 65 2e kPtr->lastValue.
7960: 70 63 2c 20 6c 69 6e 6b 50 74 72 2d 3e 61 64 64 pc, linkPtr->add
7970: 72 2c 20 6c 69 6e 6b 50 74 72 2d 3e 62 79 74 65 r, linkPtr->byte
7980: 73 29 3b 0a 2b 09 20 20 20 20 6f 62 6a 63 20 3d s);.+. objc =
7990: 20 6c 69 6e 6b 50 74 72 2d 3e 62 79 74 65 73 2f linkPtr->bytes/
79a0: 73 69 7a 65 6f 66 28 54 63 6c 5f 57 69 64 65 55 sizeof(Tcl_WideU
79b0: 49 6e 74 29 3b 0a 2b 09 20 20 20 20 6f 62 6a 76 Int);.+. objv
79c0: 20 3d 20 28 54 63 6c 5f 4f 62 6a 20 2a 2a 29 20 = (Tcl_Obj **)
79d0: 63 6b 72 65 61 6c 6c 6f 63 28 28 63 68 61 72 20 ckrealloc((char
79e0: 2a 29 6f 62 6a 76 2c 20 6f 62 6a 63 2a 73 69 7a *)objv, objc*siz
79f0: 65 6f 66 28 54 63 6c 5f 4f 62 6a 2a 29 29 3b 0a eof(Tcl_Obj*));.
7a00: 2b 09 20 20 20 20 66 6f 72 20 28 69 3d 30 3b 20 +. for (i=0;
7a10: 69 20 3c 20 6f 62 6a 63 3b 20 69 2b 2b 29 20 7b i < objc; i++) {
7a20: 0a 2b 09 09 6f 62 6a 76 5b 69 5d 20 3d 20 54 63 .+..objv[i] = Tc
7a30: 6c 5f 4e 65 77 57 69 64 65 49 6e 74 4f 62 6a 28 l_NewWideIntObj(
7a40: 28 54 63 6c 5f 57 69 64 65 49 6e 74 29 20 6c 69 (Tcl_WideInt) li
7a50: 6e 6b 50 74 72 2d 3e 6c 61 73 74 56 61 6c 75 65 nkPtr->lastValue
7a60: 2e 70 75 77 5b 69 5d 29 3b 0a 2b 09 20 20 20 20 .puw[i]);.+.
7a70: 7d 0a 2b 09 20 20 20 20 72 65 74 75 72 6e 20 54 }.+. return T
7a80: 63 6c 5f 4e 65 77 4c 69 73 74 4f 62 6a 28 6f 62 cl_NewListObj(ob
7a90: 6a 63 2c 6f 62 6a 76 29 3b 0a 2b 09 7d 0a 2b 09 jc,objv);.+.}.+.
7aa0: 6c 69 6e 6b 50 74 72 2d 3e 6c 61 73 74 56 61 6c linkPtr->lastVal
7ab0: 75 65 2e 75 77 20 3d 20 4c 69 6e 6b 65 64 56 61 ue.uw = LinkedVa
7ac0: 72 28 54 63 6c 5f 57 69 64 65 55 49 6e 74 29 3b r(Tcl_WideUInt);
7ad0: 0a 20 09 72 65 74 75 72 6e 20 54 63 6c 5f 4e 65 . .return Tcl_Ne
7ae0: 77 57 69 64 65 49 6e 74 4f 62 6a 28 28 54 63 6c wWideIntObj((Tcl
7af0: 5f 57 69 64 65 49 6e 74 29 20 6c 69 6e 6b 50 74 _WideInt) linkPt
7b00: 72 2d 3e 6c 61 73 74 56 61 6c 75 65 2e 75 77 29 r->lastValue.uw)
7b10: 3b 0a 20 20 20 20 20 63 61 73 65 20 54 43 4c 5f ;. case TCL_
7b20: 4c 49 4e 4b 5f 53 54 52 49 4e 47 3a 0a 20 09 70 LINK_STRING:. .p
7b30: 20 3d 20 4c 69 6e 6b 65 64 56 61 72 28 63 68 61 = LinkedVar(cha
7b40: 72 20 2a 29 3b 0a 40 40 20 2d 36 31 32 2c 36 20 r *);.@@ -612,6
7b50: 2b 31 31 35 35 2c 32 33 20 40 40 20 4f 62 6a 56 +1155,23 @@ ObjV
7b60: 61 6c 75 65 28 0a 20 09 7d 0a 20 09 72 65 74 75 alue(. .}. .retu
7b70: 72 6e 20 54 63 6c 5f 4e 65 77 53 74 72 69 6e 67 rn Tcl_NewString
7b80: 4f 62 6a 28 70 2c 20 2d 31 29 3b 0a 20 0a 2b 20 Obj(p, -1);. .+
7b90: 20 20 20 63 61 73 65 20 54 43 4c 5f 4c 49 4e 4b case TCL_LINK
7ba0: 5f 43 48 41 52 53 3a 0a 2b 09 69 66 20 28 6c 69 _CHARS:.+.if (li
7bb0: 6e 6b 50 74 72 2d 3e 66 6c 61 67 73 20 26 20 4c nkPtr->flags & L
7bc0: 49 4e 4b 5f 41 4c 4c 4f 43 5f 4c 41 53 54 29 20 INK_ALLOC_LAST)
7bd0: 7b 0a 2b 09 20 20 20 20 6d 65 6d 63 70 79 28 6c {.+. memcpy(l
7be0: 69 6e 6b 50 74 72 2d 3e 6c 61 73 74 56 61 6c 75 inkPtr->lastValu
7bf0: 65 2e 70 63 2c 20 6c 69 6e 6b 50 74 72 2d 3e 61 e.pc, linkPtr->a
7c00: 64 64 72 2c 20 6c 69 6e 6b 50 74 72 2d 3e 62 79 ddr, linkPtr->by
7c10: 74 65 73 29 3b 0a 2b 09 20 20 20 20 6c 69 6e 6b tes);.+. link
7c20: 50 74 72 2d 3e 6c 61 73 74 56 61 6c 75 65 2e 70 Ptr->lastValue.p
7c30: 63 5b 6c 69 6e 6b 50 74 72 2d 3e 62 79 74 65 73 c[linkPtr->bytes
7c40: 2d 31 5d 20 3d 20 27 5c 30 27 3b 2f 2a 20 74 61 -1] = '\0';/* ta
7c50: 6b 65 20 63 61 72 65 20 6f 66 20 70 72 6f 70 65 ke care of prope
7c60: 72 20 73 74 72 69 6e 67 20 65 6e 64 20 2a 2f 0a r string end */.
7c70: 2b 09 20 20 20 20 72 65 74 75 72 6e 20 54 63 6c +. return Tcl
7c80: 5f 4e 65 77 53 74 72 69 6e 67 4f 62 6a 28 6c 69 _NewStringObj(li
7c90: 6e 6b 50 74 72 2d 3e 6c 61 73 74 56 61 6c 75 65 nkPtr->lastValue
7ca0: 2e 70 63 2c 6c 69 6e 6b 50 74 72 2d 3e 62 79 74 .pc,linkPtr->byt
7cb0: 65 73 29 3b 0a 2b 09 7d 0a 2b 09 6c 69 6e 6b 50 es);.+.}.+.linkP
7cc0: 74 72 2d 3e 6c 61 73 74 56 61 6c 75 65 2e 63 20 tr->lastValue.c
7cd0: 3d 20 27 5c 30 27 3b 0a 2b 09 72 65 74 75 72 6e = '\0';.+.return
7ce0: 20 54 63 6c 5f 4e 65 77 53 74 72 69 6e 67 4f 62 Tcl_NewStringOb
7cf0: 6a 28 26 6c 69 6e 6b 50 74 72 2d 3e 6c 61 73 74 j(&linkPtr->last
7d00: 56 61 6c 75 65 2e 63 2c 31 29 3b 0a 2b 0a 2b 20 Value.c,1);.+.+
7d10: 20 20 20 63 61 73 65 20 54 43 4c 5f 4c 49 4e 4b case TCL_LINK
7d20: 5f 42 49 4e 41 52 59 3a 0a 2b 09 69 66 20 28 6c _BINARY:.+.if (l
7d30: 69 6e 6b 50 74 72 2d 3e 66 6c 61 67 73 20 26 20 inkPtr->flags &
7d40: 4c 49 4e 4b 5f 41 4c 4c 4f 43 5f 4c 41 53 54 29 LINK_ALLOC_LAST)
7d50: 20 7b 0a 2b 09 20 20 20 20 6d 65 6d 63 70 79 28 {.+. memcpy(
7d60: 6c 69 6e 6b 50 74 72 2d 3e 6c 61 73 74 56 61 6c linkPtr->lastVal
7d70: 75 65 2e 70 63 2c 20 6c 69 6e 6b 50 74 72 2d 3e ue.pc, linkPtr->
7d80: 61 64 64 72 2c 20 6c 69 6e 6b 50 74 72 2d 3e 62 addr, linkPtr->b
7d90: 79 74 65 73 29 3b 0a 2b 09 20 20 20 20 72 65 74 ytes);.+. ret
7da0: 75 72 6e 20 54 63 6c 5f 4e 65 77 42 79 74 65 41 urn Tcl_NewByteA
7db0: 72 72 61 79 4f 62 6a 28 28 75 6e 73 69 67 6e 65 rrayObj((unsigne
7dc0: 64 20 63 68 61 72 20 2a 29 6c 69 6e 6b 50 74 72 d char *)linkPtr
7dd0: 2d 3e 61 64 64 72 2c 6c 69 6e 6b 50 74 72 2d 3e ->addr,linkPtr->
7de0: 62 79 74 65 73 29 3b 0a 2b 09 7d 0a 2b 09 6c 69 bytes);.+.}.+.li
7df0: 6e 6b 50 74 72 2d 3e 6c 61 73 74 56 61 6c 75 65 nkPtr->lastValue
7e00: 2e 75 63 20 3d 20 4c 69 6e 6b 65 64 56 61 72 28 .uc = LinkedVar(
7e10: 75 6e 73 69 67 6e 65 64 20 63 68 61 72 29 3b 0a unsigned char);.
7e20: 2b 09 72 65 74 75 72 6e 20 54 63 6c 5f 4e 65 77 +.return Tcl_New
7e30: 42 79 74 65 41 72 72 61 79 4f 62 6a 28 26 6c 69 ByteArrayObj(&li
7e40: 6e 6b 50 74 72 2d 3e 6c 61 73 74 56 61 6c 75 65 nkPtr->lastValue
7e50: 2e 75 63 2c 31 29 3b 0a 2b 0a 20 20 20 20 20 2f .uc,1);.+. /
7e60: 2a 0a 20 20 20 20 20 20 2a 20 54 68 69 73 20 63 *. * This c
7e70: 6f 64 65 20 6f 6e 6c 79 20 67 65 74 73 20 65 78 ode only gets ex
7e80: 65 63 75 74 65 64 20 69 66 20 74 68 65 20 6c 69 ecuted if the li
7e90: 6e 6b 20 74 79 70 65 20 69 73 20 75 6e 6b 6e 6f nk type is unkno
7ea0: 77 6e 20 28 73 68 6f 75 6c 64 6e 27 74 0a 20 20 wn (shouldn't.
7eb0: 20 20 20 20 2a 20 65 76 65 72 20 68 61 70 70 65 * ever happe
7ec0: 6e 29 2e 0a 40 40 20 2d 36 32 34 2c 36 20 2b 31 n)..@@ -624,6 +1
7ed0: 31 38 34 2c 33 31 20 40 40 20 4f 62 6a 56 61 6c 184,31 @@ ObjVal
7ee0: 75 65 28 0a 20 7d 0a 20 0c 0a 20 2f 2a 0a 2b 20 ue(. }. .. /*.+
7ef0: 2a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d *---------------
7f00: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
7f10: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
7f20: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
7f30: 2d 2d 2d 2d 2d 2d 2d 0a 2b 20 2a 0a 2b 20 2a 20 -------.+ *.+ *
7f40: 4c 69 6e 6b 46 72 65 65 20 2d 2d 0a 2b 20 2a 0a LinkFree --.+ *.
7f50: 2b 20 2a 09 46 72 65 65 27 73 20 61 6c 6c 6f 63 + *.Free's alloc
7f60: 61 74 65 64 20 73 70 61 63 65 20 6f 66 20 67 69 ated space of gi
7f70: 76 65 6e 20 6c 69 6e 6b 20 61 6e 64 20 6c 69 6e ven link and lin
7f80: 6b 20 73 74 72 75 63 74 75 72 65 2e 0a 2b 20 2a k structure..+ *
7f90: 0a 2b 20 2a 20 52 65 73 75 6c 74 73 3a 0a 2b 20 .+ * Results:.+
7fa0: 2a 09 4e 6f 6e 65 2e 0a 2b 20 2a 0a 2b 20 2a 20 *.None..+ *.+ *
7fb0: 53 69 64 65 20 65 66 66 65 63 74 73 3a 0a 2b 20 Side effects:.+
7fc0: 2a 09 4e 6f 6e 65 2e 0a 2b 20 2a 0a 2b 20 2a 2d *.None..+ *.+ *-
7fd0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
7fe0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
7ff0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
8000: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
8010: 2d 2d 2d 2d 2d 0a 2b 20 2a 2f 0a 2b 0a 2b 73 74 -----.+ */.+.+st
8020: 61 74 69 63 20 76 6f 69 64 0a 2b 4c 69 6e 6b 46 atic void.+LinkF
8030: 72 65 65 28 0a 2b 20 20 20 20 4c 69 6e 6b 20 2a ree(.+ Link *
8040: 6c 69 6e 6b 50 74 72 29 09 09 2f 2a 20 53 74 72 linkPtr)../* Str
8050: 75 63 74 75 72 65 20 64 65 73 63 72 69 62 69 6e ucture describin
8060: 67 20 6c 69 6e 6b 65 64 20 76 61 72 69 61 62 6c g linked variabl
8070: 65 2e 20 2a 2f 0a 2b 7b 0a 2b 20 20 20 20 69 66 e. */.+{.+ if
8080: 20 28 6c 69 6e 6b 50 74 72 2d 3e 66 6c 61 67 73 (linkPtr->flags
8090: 20 26 20 4c 49 4e 4b 5f 41 4c 4c 4f 43 5f 41 44 & LINK_ALLOC_AD
80a0: 44 52 29 20 63 6b 66 72 65 65 28 6c 69 6e 6b 50 DR) ckfree(linkP
80b0: 74 72 2d 3e 61 64 64 72 29 3b 0a 2b 20 20 20 20 tr->addr);.+
80c0: 69 66 20 28 6c 69 6e 6b 50 74 72 2d 3e 66 6c 61 if (linkPtr->fla
80d0: 67 73 20 26 20 4c 49 4e 4b 5f 41 4c 4c 4f 43 5f gs & LINK_ALLOC_
80e0: 4c 41 53 54 29 20 63 6b 66 72 65 65 28 6c 69 6e LAST) ckfree(lin
80f0: 6b 50 74 72 2d 3e 6c 61 73 74 56 61 6c 75 65 2e kPtr->lastValue.
8100: 70 63 29 3b 0a 2b 20 20 20 20 63 6b 66 72 65 65 pc);.+ ckfree
8110: 28 28 63 68 61 72 20 2a 29 20 6c 69 6e 6b 50 74 ((char *) linkPt
8120: 72 29 3b 0a 2b 7d 0a 2b 0c 0a 2b 2f 2a 0a 20 20 r);.+}.+..+/*.
8130: 2a 20 4c 6f 63 61 6c 20 56 61 72 69 61 62 6c 65 * Local Variable
8140: 73 3a 0a 20 20 2a 20 6d 6f 64 65 3a 20 63 0a 20 s:. * mode: c.
8150: 20 2a 20 63 2d 62 61 73 69 63 2d 6f 66 66 73 65 * c-basic-offse
8160: 74 3a 20 34 0a 64 69 66 66 20 2d 4e 75 70 72 20 t: 4.diff -Nupr
8170: 74 63 6c 2d 38 2e 35 2f 67 65 6e 65 72 69 63 2f tcl-8.5/generic/
8180: 74 63 6c 53 74 75 62 49 6e 69 74 2e 63 20 74 69 tclStubInit.c ti
8190: 70 33 31 32 2f 67 65 6e 65 72 69 63 2f 74 63 6c p312/generic/tcl
81a0: 53 74 75 62 49 6e 69 74 2e 63 0a 2d 2d 2d 20 74 StubInit.c.--- t
81b0: 63 6c 2d 38 2e 35 2f 67 65 6e 65 72 69 63 2f 74 cl-8.5/generic/t
81c0: 63 6c 53 74 75 62 49 6e 69 74 2e 63 09 32 30 30 clStubInit.c.200
81d0: 38 2d 30 31 2d 32 33 20 31 38 3a 33 31 3a 34 32 8-01-23 18:31:42
81e0: 2e 30 30 30 30 30 30 30 30 30 20 2b 30 31 30 30 .000000000 +0100
81f0: 0a 2b 2b 2b 20 74 69 70 33 31 32 2f 67 65 6e 65 .+++ tip312/gene
8200: 72 69 63 2f 74 63 6c 53 74 75 62 49 6e 69 74 2e ric/tclStubInit.
8210: 63 09 32 30 30 38 2d 30 36 2d 31 33 20 31 31 3a c.2008-06-13 11:
8220: 32 37 3a 32 33 2e 30 30 30 30 30 30 30 30 30 20 27:23.000000000
8230: 2b 30 32 30 30 0a 40 40 20 2d 31 31 32 38 2c 36 +0200.@@ -1128,6
8240: 20 2b 31 31 32 38 2c 37 20 40 40 20 54 63 6c 53 +1128,7 @@ TclS
8250: 74 75 62 73 20 74 63 6c 53 74 75 62 73 20 3d 20 tubs tclStubs =
8260: 7b 0a 20 20 20 20 20 54 63 6c 5f 41 70 70 65 6e {. Tcl_Appen
8270: 64 46 6f 72 6d 61 74 54 6f 4f 62 6a 2c 20 2f 2a dFormatToObj, /*
8280: 20 35 37 37 20 2a 2f 0a 20 20 20 20 20 54 63 6c 577 */. Tcl
8290: 5f 4f 62 6a 50 72 69 6e 74 66 2c 20 2f 2a 20 35 _ObjPrintf, /* 5
82a0: 37 38 20 2a 2f 0a 20 20 20 20 20 54 63 6c 5f 41 78 */. Tcl_A
82b0: 70 70 65 6e 64 50 72 69 6e 74 66 54 6f 4f 62 6a ppendPrintfToObj
82c0: 2c 20 2f 2a 20 35 37 39 20 2a 2f 0a 2b 20 20 20 , /* 579 */.+
82d0: 20 54 63 6c 5f 4c 69 6e 6b 41 72 72 61 79 2c 20 Tcl_LinkArray,
82e0: 2f 2a 20 35 38 30 20 2a 2f 0a 20 7d 3b 0a 20 0a /* 580 */. };. .
82f0: 20 2f 2a 20 21 45 4e 44 21 3a 20 44 6f 20 6e 6f /* !END!: Do no
8300: 74 20 65 64 69 74 20 61 62 6f 76 65 20 74 68 69 t edit above thi
8310: 73 20 6c 69 6e 65 2e 20 2a 2f 0a 64 69 66 66 20 s line. */.diff
8320: 2d 4e 75 70 72 20 74 63 6c 2d 38 2e 35 2f 67 65 -Nupr tcl-8.5/ge
8330: 6e 65 72 69 63 2f 74 63 6c 54 65 73 74 2e 63 20 neric/tclTest.c
8340: 74 69 70 33 31 32 2f 67 65 6e 65 72 69 63 2f 74 tip312/generic/t
8350: 63 6c 54 65 73 74 2e 63 0a 2d 2d 2d 20 74 63 6c clTest.c.--- tcl
8360: 2d 38 2e 35 2f 67 65 6e 65 72 69 63 2f 74 63 6c -8.5/generic/tcl
8370: 54 65 73 74 2e 63 09 32 30 30 38 2d 30 33 2d 31 Test.c.2008-03-1
8380: 34 20 31 37 3a 33 32 3a 35 32 2e 30 30 30 30 30 4 17:32:52.00000
8390: 30 30 30 30 20 2b 30 31 30 30 0a 2b 2b 2b 20 74 0000 +0100.+++ t
83a0: 69 70 33 31 32 2f 67 65 6e 65 72 69 63 2f 74 63 ip312/generic/tc
83b0: 6c 54 65 73 74 2e 63 09 32 30 30 38 2d 30 36 2d lTest.c.2008-06-
83c0: 31 33 20 31 31 3a 30 31 3a 35 39 2e 30 30 30 30 13 11:01:59.0000
83d0: 30 30 30 30 30 20 2b 30 32 30 30 0a 40 40 20 2d 00000 +0200.@@ -
83e0: 33 30 31 2c 36 20 2b 33 30 31 2c 39 20 40 40 20 301,6 +301,9 @@
83f0: 73 74 61 74 69 63 20 69 6e 74 09 09 54 65 73 74 static int..Test
8400: 69 6e 74 65 72 70 64 65 6c 65 74 65 43 6d 64 28 interpdeleteCmd(
8410: 43 6c 69 65 6e 74 44 61 0a 20 09 09 09 20 20 20 ClientDa. ...
8420: 20 54 63 6c 5f 49 6e 74 65 72 70 20 2a 69 6e 74 Tcl_Interp *int
8430: 65 72 70 2c 20 69 6e 74 20 61 72 67 63 2c 20 63 erp, int argc, c
8440: 6f 6e 73 74 20 63 68 61 72 20 2a 2a 61 72 67 76 onst char **argv
8450: 29 3b 0a 20 73 74 61 74 69 63 20 69 6e 74 09 09 );. static int..
8460: 54 65 73 74 6c 69 6e 6b 43 6d 64 28 43 6c 69 65 TestlinkCmd(Clie
8470: 6e 74 44 61 74 61 20 64 75 6d 6d 79 2c 0a 20 09 ntData dummy,. .
8480: 09 09 20 20 20 20 54 63 6c 5f 49 6e 74 65 72 70 .. Tcl_Interp
8490: 20 2a 69 6e 74 65 72 70 2c 20 69 6e 74 20 61 72 *interp, int ar
84a0: 67 63 2c 20 63 6f 6e 73 74 20 63 68 61 72 20 2a gc, const char *
84b0: 2a 61 72 67 76 29 3b 0a 2b 73 74 61 74 69 63 20 *argv);.+static
84c0: 69 6e 74 09 09 54 65 73 74 6c 69 6e 6b 61 72 72 int..Testlinkarr
84d0: 61 79 43 6d 64 28 43 6c 69 65 6e 74 44 61 74 61 ayCmd(ClientData
84e0: 20 64 75 6d 6d 79 2c 0a 2b 20 20 20 20 20 20 20 dummy,.+
84f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
8500: 20 20 20 20 20 54 63 6c 5f 49 6e 74 65 72 70 20 Tcl_Interp
8510: 2a 69 6e 74 65 72 70 2c 20 69 6e 74 20 6f 62 6a *interp, int obj
8520: 63 2c 0a 2b 20 20 20 20 20 20 20 20 20 20 20 20 c,.+
8530: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
8540: 54 63 6c 5f 4f 62 6a 20 2a 63 6f 6e 73 74 20 6f Tcl_Obj *const o
8550: 62 6a 76 5b 5d 29 3b 0a 20 73 74 61 74 69 63 20 bjv[]);. static
8560: 69 6e 74 09 09 54 65 73 74 6c 6f 63 61 6c 65 43 int..TestlocaleC
8570: 6d 64 28 43 6c 69 65 6e 74 44 61 74 61 20 64 75 md(ClientData du
8580: 6d 6d 79 2c 0a 20 09 09 09 20 20 20 20 54 63 6c mmy,. ... Tcl
8590: 5f 49 6e 74 65 72 70 20 2a 69 6e 74 65 72 70 2c _Interp *interp,
85a0: 20 69 6e 74 20 6f 62 6a 63 2c 0a 20 09 09 09 20 int objc,. ...
85b0: 20 20 20 54 63 6c 5f 4f 62 6a 20 2a 63 6f 6e 73 Tcl_Obj *cons
85c0: 74 20 6f 62 6a 76 5b 5d 29 3b 0a 40 40 20 2d 36 t objv[]);.@@ -6
85d0: 34 37 2c 36 20 2b 36 35 30 2c 38 20 40 40 20 54 47,6 +650,8 @@ T
85e0: 63 6c 74 65 73 74 5f 49 6e 69 74 28 0a 20 20 20 cltest_Init(.
85f0: 20 20 54 63 6c 5f 43 72 65 61 74 65 43 6f 6d 6d Tcl_CreateComm
8600: 61 6e 64 28 69 6e 74 65 72 70 2c 20 22 74 65 73 and(interp, "tes
8610: 74 69 6e 74 65 72 70 64 65 6c 65 74 65 22 2c 20 tinterpdelete",
8620: 54 65 73 74 69 6e 74 65 72 70 64 65 6c 65 74 65 Testinterpdelete
8630: 43 6d 64 2c 0a 20 09 20 20 20 20 28 43 6c 69 65 Cmd,. . (Clie
8640: 6e 74 44 61 74 61 29 20 30 2c 20 4e 55 4c 4c 29 ntData) 0, NULL)
8650: 3b 0a 20 20 20 20 20 54 63 6c 5f 43 72 65 61 74 ;. Tcl_Creat
8660: 65 43 6f 6d 6d 61 6e 64 28 69 6e 74 65 72 70 2c eCommand(interp,
8670: 20 22 74 65 73 74 6c 69 6e 6b 22 2c 20 54 65 73 "testlink", Tes
8680: 74 6c 69 6e 6b 43 6d 64 2c 20 28 43 6c 69 65 6e tlinkCmd, (Clien
8690: 74 44 61 74 61 29 20 30 2c 20 4e 55 4c 4c 29 3b tData) 0, NULL);
86a0: 0a 2b 20 20 20 20 54 63 6c 5f 43 72 65 61 74 65 .+ Tcl_Create
86b0: 4f 62 6a 43 6f 6d 6d 61 6e 64 28 69 6e 74 65 72 ObjCommand(inter
86c0: 70 2c 20 22 74 65 73 74 6c 69 6e 6b 61 72 72 61 p, "testlinkarra
86d0: 79 22 2c 20 54 65 73 74 6c 69 6e 6b 61 72 72 61 y", Testlinkarra
86e0: 79 43 6d 64 2c 0a 2b 20 20 20 20 20 20 20 20 20 yCmd,.+
86f0: 20 20 20 28 43 6c 69 65 6e 74 44 61 74 61 29 20 (ClientData)
8700: 30 2c 20 4e 55 4c 4c 29 3b 0a 20 20 20 20 20 54 0, NULL);. T
8710: 63 6c 5f 43 72 65 61 74 65 4f 62 6a 43 6f 6d 6d cl_CreateObjComm
8720: 61 6e 64 28 69 6e 74 65 72 70 2c 20 22 74 65 73 and(interp, "tes
8730: 74 6c 6f 63 61 6c 65 22 2c 20 54 65 73 74 6c 6f tlocale", Testlo
8740: 63 61 6c 65 43 6d 64 2c 20 28 43 6c 69 65 6e 74 caleCmd, (Client
8750: 44 61 74 61 29 20 30 2c 0a 20 09 20 20 20 20 4e Data) 0,. . N
8760: 55 4c 4c 29 3b 0a 20 20 20 20 20 54 63 6c 5f 43 ULL);. Tcl_C
8770: 72 65 61 74 65 43 6f 6d 6d 61 6e 64 28 69 6e 74 reateCommand(int
8780: 65 72 70 2c 20 22 74 65 73 74 70 61 6e 69 63 22 erp, "testpanic"
8790: 2c 20 54 65 73 74 70 61 6e 69 63 43 6d 64 2c 20 , TestpanicCmd,
87a0: 28 43 6c 69 65 6e 74 44 61 74 61 29 20 30 2c 20 (ClientData) 0,
87b0: 4e 55 4c 4c 29 3b 0a 40 40 20 2d 33 30 38 34 2c NULL);.@@ -3084,
87c0: 36 20 2b 33 30 38 39 2c 31 31 38 20 40 40 20 54 6 +3089,118 @@ T
87d0: 65 73 74 6c 69 6e 6b 43 6d 64 28 0a 20 2f 2a 0a estlinkCmd(. /*.
87e0: 20 20 2a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d *-------------
87f0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
8800: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
8810: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
8820: 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 20 20 2a 0a 2b 20 ---------. *.+
8830: 2a 20 54 65 73 74 6c 69 6e 6b 61 72 72 61 79 43 * TestlinkarrayC
8840: 6d 64 20 2d 2d 0a 2b 20 2a 0a 2b 20 2a 20 20 20 md --.+ *.+ *
8850: 20 20 20 54 68 69 73 20 66 75 6e 63 74 69 6f 6e This function
8860: 20 69 73 20 69 6e 76 6f 6b 65 64 20 74 6f 20 70 is invoked to p
8870: 72 6f 63 65 73 73 20 74 68 65 20 22 74 65 73 74 rocess the "test
8880: 6c 69 6e 6b 61 72 72 61 79 22 20 54 63 6c 20 63 linkarray" Tcl c
8890: 6f 6d 6d 61 6e 64 2e 0a 2b 20 2a 20 20 20 20 20 ommand..+ *
88a0: 20 49 74 20 69 73 20 75 73 65 64 20 74 6f 20 74 It is used to t
88b0: 65 73 74 20 74 68 65 20 27 54 63 6c 5f 4c 69 6e est the 'Tcl_Lin
88c0: 6b 41 72 72 61 79 27 20 66 75 6e 63 74 69 6f 6e kArray' function
88d0: 2e 0a 2b 20 2a 0a 2b 20 2a 20 52 65 73 75 6c 74 ..+ *.+ * Result
88e0: 73 3a 0a 2b 20 2a 20 20 20 20 20 20 41 20 73 74 s:.+ * A st
88f0: 61 6e 64 61 72 64 20 54 63 6c 20 72 65 73 75 6c andard Tcl resul
8900: 74 2e 0a 2b 20 2a 0a 2b 20 2a 20 53 69 64 65 20 t..+ *.+ * Side
8910: 65 66 66 65 63 74 73 3a 0a 2b 20 2a 09 43 72 65 effects:.+ *.Cre
8920: 61 74 65 73 2c 20 64 65 6c 65 74 65 73 2c 20 61 ates, deletes, a
8930: 6e 64 20 69 6e 76 6f 6b 65 73 20 76 61 72 69 61 nd invokes varia
8940: 62 6c 65 20 6c 69 6e 6b 73 2e 0a 2b 20 2a 0a 2b ble links..+ *.+
8950: 20 2a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d *--------------
8960: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
8970: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
8980: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
8990: 2d 2d 2d 2d 2d 2d 2d 2d 0a 2b 20 2a 2f 0a 2b 0a --------.+ */.+.
89a0: 2b 73 74 61 74 69 63 20 69 6e 74 0a 2b 54 65 73 +static int.+Tes
89b0: 74 6c 69 6e 6b 61 72 72 61 79 43 6d 64 28 0a 2b tlinkarrayCmd(.+
89c0: 20 20 20 20 43 6c 69 65 6e 74 44 61 74 61 20 64 ClientData d
89d0: 75 6d 6d 79 2c 20 20 20 20 20 20 20 20 20 20 20 ummy,
89e0: 2f 2a 20 4e 6f 74 20 75 73 65 64 2e 20 2a 2f 0a /* Not used. */.
89f0: 2b 20 20 20 20 54 63 6c 5f 49 6e 74 65 72 70 20 + Tcl_Interp
8a00: 2a 69 6e 74 65 72 70 2c 20 20 20 20 20 20 20 20 *interp,
8a10: 20 2f 2a 20 43 75 72 72 65 6e 74 20 69 6e 74 65 /* Current inte
8a20: 72 70 72 65 74 65 72 2e 20 2a 2f 0a 2b 20 20 20 rpreter. */.+
8a30: 20 69 6e 74 20 6f 62 6a 63 2c 20 20 20 20 20 20 int objc,
8a40: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 /*
8a50: 4e 75 6d 62 65 72 20 6f 66 20 61 72 67 75 6d 65 Number of argume
8a60: 6e 74 73 2e 20 2a 2f 0a 2b 20 20 20 20 54 63 6c nts. */.+ Tcl
8a70: 5f 4f 62 6a 20 2a 63 6f 6e 73 74 20 6f 62 6a 76 _Obj *const objv
8a80: 5b 5d 29 20 20 20 20 20 20 2f 2a 20 41 72 67 75 []) /* Argu
8a90: 6d 65 6e 74 20 6f 62 6a 65 63 74 73 2e 20 2a 2f ment objects. */
8aa0: 0a 2b 7b 0a 2b 20 20 20 20 73 74 61 74 69 63 20 .+{.+ static
8ab0: 63 6f 6e 73 74 20 63 68 61 72 20 2a 4c 69 6e 6b const char *Link
8ac0: 4f 70 74 69 6f 6e 5b 5d 20 3d 20 7b 0a 2b 20 20 Option[] = {.+
8ad0: 20 20 22 75 70 64 61 74 65 22 2c 20 22 72 65 6d "update", "rem
8ae0: 6f 76 65 22 2c 20 22 63 72 65 61 74 65 22 2c 20 ove", "create",
8af0: 4e 55 4c 4c 0a 2b 20 20 20 20 7d 3b 0a 2b 20 20 NULL.+ };.+
8b00: 20 20 65 6e 75 6d 20 4c 69 6e 6b 4f 70 74 69 6f enum LinkOptio
8b10: 6e 20 7b 20 4c 49 4e 4b 5f 55 50 44 41 54 45 2c n { LINK_UPDATE,
8b20: 20 4c 49 4e 4b 5f 52 45 4d 4f 56 45 2c 20 4c 49 LINK_REMOVE, LI
8b30: 4e 4b 5f 43 52 45 41 54 45 20 7d 3b 0a 2b 20 20 NK_CREATE };.+
8b40: 20 20 73 74 61 74 69 63 20 63 6f 6e 73 74 20 63 static const c
8b50: 68 61 72 20 2a 4c 69 6e 6b 54 79 70 65 5b 5d 20 har *LinkType[]
8b60: 3d 20 7b 0a 2b 20 20 20 20 22 63 68 61 72 22 2c = {.+ "char",
8b70: 20 22 75 63 68 61 72 22 2c 20 22 73 68 6f 72 74 "uchar", "short
8b80: 22 2c 20 22 75 73 68 6f 72 74 22 2c 20 22 69 6e ", "ushort", "in
8b90: 74 22 2c 20 22 75 69 6e 74 22 2c 20 22 6c 6f 6e t", "uint", "lon
8ba0: 67 22 2c 20 22 75 6c 6f 6e 67 22 2c 0a 2b 20 20 g", "ulong",.+
8bb0: 20 20 22 77 69 64 65 22 2c 20 22 75 77 69 64 65 "wide", "uwide
8bc0: 22 2c 20 22 66 6c 6f 61 74 22 2c 20 22 64 6f 75 ", "float", "dou
8bd0: 62 6c 65 22 2c 20 22 73 74 72 69 6e 67 22 2c 20 ble", "string",
8be0: 22 63 68 61 72 2a 22 2c 20 22 62 69 6e 61 72 79 "char*", "binary
8bf0: 22 2c 20 4e 55 4c 4c 0a 2b 20 20 20 20 7d 3b 0a ", NULL.+ };.
8c00: 2b 20 20 20 20 2f 2a 20 61 6c 6c 20 76 61 6c 75 + /* all valu
8c10: 65 73 20 61 66 74 65 72 20 54 43 4c 5f 4c 49 4e es after TCL_LIN
8c20: 4b 5f 43 48 41 52 53 5f 41 52 52 41 59 20 61 72 K_CHARS_ARRAY ar
8c30: 65 20 75 73 65 64 20 61 73 20 61 72 72 61 79 73 e used as arrays
8c40: 20 28 73 65 65 20 62 65 6c 6f 77 29 20 2a 2f 0a (see below) */.
8c50: 2b 20 20 20 20 73 74 61 74 69 63 20 69 6e 74 20 + static int
8c60: 4c 69 6e 6b 54 79 70 65 73 5b 5d 20 3d 20 7b 20 LinkTypes[] = {
8c70: 54 43 4c 5f 4c 49 4e 4b 5f 43 48 41 52 2c 20 54 TCL_LINK_CHAR, T
8c80: 43 4c 5f 4c 49 4e 4b 5f 55 43 48 41 52 2c 0a 2b CL_LINK_UCHAR,.+
8c90: 20 20 20 20 54 43 4c 5f 4c 49 4e 4b 5f 53 48 4f TCL_LINK_SHO
8ca0: 52 54 2c 20 54 43 4c 5f 4c 49 4e 4b 5f 55 53 48 RT, TCL_LINK_USH
8cb0: 4f 52 54 2c 20 54 43 4c 5f 4c 49 4e 4b 5f 49 4e ORT, TCL_LINK_IN
8cc0: 54 2c 20 54 43 4c 5f 4c 49 4e 4b 5f 55 49 4e 54 T, TCL_LINK_UINT
8cd0: 2c 0a 2b 20 20 20 20 54 43 4c 5f 4c 49 4e 4b 5f ,.+ TCL_LINK_
8ce0: 4c 4f 4e 47 2c 20 54 43 4c 5f 4c 49 4e 4b 5f 55 LONG, TCL_LINK_U
8cf0: 4c 4f 4e 47 2c 20 54 43 4c 5f 4c 49 4e 4b 5f 57 LONG, TCL_LINK_W
8d00: 49 44 45 5f 49 4e 54 2c 20 54 43 4c 5f 4c 49 4e IDE_INT, TCL_LIN
8d10: 4b 5f 57 49 44 45 5f 55 49 4e 54 2c 0a 2b 20 20 K_WIDE_UINT,.+
8d20: 20 20 54 43 4c 5f 4c 49 4e 4b 5f 46 4c 4f 41 54 TCL_LINK_FLOAT
8d30: 2c 20 54 43 4c 5f 4c 49 4e 4b 5f 44 4f 55 42 4c , TCL_LINK_DOUBL
8d40: 45 2c 20 54 43 4c 5f 4c 49 4e 4b 5f 53 54 52 49 E, TCL_LINK_STRI
8d50: 4e 47 2c 20 54 43 4c 5f 4c 49 4e 4b 5f 43 48 41 NG, TCL_LINK_CHA
8d60: 52 53 2c 20 54 43 4c 5f 4c 49 4e 4b 5f 42 49 4e RS, TCL_LINK_BIN
8d70: 41 52 59 0a 2b 20 20 20 20 7d 3b 0a 2b 20 20 20 ARY.+ };.+
8d80: 20 69 6e 74 20 6f 70 74 69 6f 6e 49 6e 64 65 78 int optionIndex
8d90: 3b 0a 2b 20 20 20 20 69 6e 74 20 74 79 70 65 49 ;.+ int typeI
8da0: 6e 64 65 78 3b 0a 2b 20 20 20 20 69 6e 74 20 72 ndex;.+ int r
8db0: 65 61 64 6f 6e 6c 79 3b 0a 2b 20 20 20 20 69 6e eadonly;.+ in
8dc0: 74 20 69 3b 0a 2b 20 20 20 20 63 68 61 72 20 2a t i;.+ char *
8dd0: 6e 61 6d 65 3b 0a 2b 20 20 20 20 69 6e 74 20 61 name;.+ int a
8de0: 64 64 72 3b 0a 2b 20 20 20 20 69 6e 74 20 73 69 ddr;.+ int si
8df0: 7a 65 3b 0a 2b 20 20 20 20 63 68 61 72 20 2a 61 ze;.+ char *a
8e00: 72 67 3b 0a 2b 20 20 20 20 69 6e 74 20 6c 65 6e rg;.+ int len
8e10: 67 74 68 3b 0a 2b 0a 2b 20 20 20 20 69 66 20 28 gth;.+.+ if (
8e20: 6f 62 6a 63 20 3c 20 32 29 20 7b 0a 2b 09 54 63 objc < 2) {.+.Tc
8e30: 6c 5f 57 72 6f 6e 67 4e 75 6d 41 72 67 73 28 69 l_WrongNumArgs(i
8e40: 6e 74 65 72 70 2c 20 31 2c 20 6f 62 6a 76 2c 20 nterp, 1, objv,
8e50: 22 6f 70 74 69 6f 6e 20 61 72 67 73 22 29 3b 0a "option args");.
8e60: 2b 09 72 65 74 75 72 6e 20 54 43 4c 5f 45 52 52 +.return TCL_ERR
8e70: 4f 52 3b 0a 2b 20 20 20 20 7d 0a 2b 20 20 20 20 OR;.+ }.+
8e80: 69 66 20 28 54 63 6c 5f 47 65 74 49 6e 64 65 78 if (Tcl_GetIndex
8e90: 46 72 6f 6d 4f 62 6a 28 69 6e 74 65 72 70 2c 20 FromObj(interp,
8ea0: 6f 62 6a 76 5b 31 5d 2c 20 4c 69 6e 6b 4f 70 74 objv[1], LinkOpt
8eb0: 69 6f 6e 2c 20 22 6f 70 74 69 6f 6e 22 2c 20 30 ion, "option", 0
8ec0: 2c 0a 2b 09 26 6f 70 74 69 6f 6e 49 6e 64 65 78 ,.+.&optionIndex
8ed0: 29 20 21 3d 20 54 43 4c 5f 4f 4b 29 20 7b 0a 2b ) != TCL_OK) {.+
8ee0: 09 72 65 74 75 72 6e 20 54 43 4c 5f 45 52 52 4f .return TCL_ERRO
8ef0: 52 3b 0a 2b 20 20 20 20 7d 0a 2b 20 20 20 20 73 R;.+ }.+ s
8f00: 77 69 74 63 68 20 28 28 65 6e 75 6d 20 4c 69 6e witch ((enum Lin
8f10: 6b 4f 70 74 69 6f 6e 29 20 6f 70 74 69 6f 6e 49 kOption) optionI
8f20: 6e 64 65 78 29 20 7b 0a 2b 20 20 20 20 63 61 73 ndex) {.+ cas
8f30: 65 20 4c 49 4e 4b 5f 55 50 44 41 54 45 3a 0a 2b e LINK_UPDATE:.+
8f40: 09 66 6f 72 20 28 69 3d 32 3b 69 3c 6f 62 6a 63 .for (i=2;i<objc
8f50: 3b 69 2b 2b 29 20 7b 0a 2b 09 20 20 20 20 54 63 ;i++) {.+. Tc
8f60: 6c 5f 55 70 64 61 74 65 4c 69 6e 6b 65 64 56 61 l_UpdateLinkedVa
8f70: 72 28 69 6e 74 65 72 70 2c 20 54 63 6c 5f 47 65 r(interp, Tcl_Ge
8f80: 74 53 74 72 69 6e 67 28 6f 62 6a 76 5b 69 5d 29 tString(objv[i])
8f90: 29 3b 0a 2b 09 7d 0a 2b 09 72 65 74 75 72 6e 20 );.+.}.+.return
8fa0: 54 43 4c 5f 4f 4b 3b 0a 2b 20 20 20 20 63 61 73 TCL_OK;.+ cas
8fb0: 65 20 4c 49 4e 4b 5f 52 45 4d 4f 56 45 3a 0a 2b e LINK_REMOVE:.+
8fc0: 09 66 6f 72 20 28 69 3d 32 3b 69 3c 6f 62 6a 63 .for (i=2;i<objc
8fd0: 3b 69 2b 2b 29 20 7b 0a 2b 09 20 20 20 20 54 63 ;i++) {.+. Tc
8fe0: 6c 5f 55 6e 6c 69 6e 6b 56 61 72 28 69 6e 74 65 l_UnlinkVar(inte
8ff0: 72 70 2c 20 54 63 6c 5f 47 65 74 53 74 72 69 6e rp, Tcl_GetStrin
9000: 67 28 6f 62 6a 76 5b 69 5d 29 29 3b 0a 2b 09 7d g(objv[i]));.+.}
9010: 0a 2b 09 72 65 74 75 72 6e 20 54 43 4c 5f 4f 4b .+.return TCL_OK
9020: 3b 0a 2b 20 20 20 20 63 61 73 65 20 4c 49 4e 4b ;.+ case LINK
9030: 5f 43 52 45 41 54 45 3a 0a 2b 09 69 66 20 28 6f _CREATE:.+.if (o
9040: 62 6a 63 20 3c 20 34 29 20 7b 0a 2b 09 20 20 20 bjc < 4) {.+.
9050: 20 67 6f 74 6f 20 77 72 6f 6e 67 41 72 67 73 3b goto wrongArgs;
9060: 0a 2b 09 7d 0a 2b 09 72 65 61 64 6f 6e 6c 79 20 .+.}.+.readonly
9070: 3d 20 30 3b 0a 2b 09 69 20 3d 20 32 3b 0a 2b 09 = 0;.+.i = 2;.+.
9080: 2f 2a 20 74 65 73 74 20 6f 6e 20 73 77 69 74 63 /* test on switc
9090: 68 20 2d 72 2e 2e 2e 20 2a 2f 0a 2b 09 61 72 67 h -r... */.+.arg
90a0: 20 3d 20 54 63 6c 5f 47 65 74 53 74 72 69 6e 67 = Tcl_GetString
90b0: 46 72 6f 6d 4f 62 6a 28 6f 62 6a 76 5b 69 5d 2c FromObj(objv[i],
90c0: 26 6c 65 6e 67 74 68 29 3b 0a 2b 09 69 66 20 28 &length);.+.if (
90d0: 6c 65 6e 67 74 68 20 3c 20 32 29 20 7b 0a 2b 09 length < 2) {.+.
90e0: 20 20 20 20 67 6f 74 6f 20 77 72 6f 6e 67 41 72 goto wrongAr
90f0: 67 73 3b 0a 2b 09 7d 0a 2b 09 69 66 20 28 61 72 gs;.+.}.+.if (ar
9100: 67 5b 30 5d 20 3d 3d 20 27 2d 27 29 20 7b 0a 2b g[0] == '-') {.+
9110: 09 20 20 20 20 69 66 20 28 61 72 67 5b 31 5d 20 . if (arg[1]
9120: 21 3d 20 27 72 27 29 20 7b 0a 2b 09 20 20 20 20 != 'r') {.+.
9130: 20 20 20 20 67 6f 74 6f 20 77 72 6f 6e 67 41 72 goto wrongAr
9140: 67 73 3b 0a 2b 09 20 20 20 20 7d 0a 2b 09 20 20 gs;.+. }.+.
9150: 20 20 72 65 61 64 6f 6e 6c 79 20 3d 20 54 43 4c readonly = TCL
9160: 5f 4c 49 4e 4b 5f 52 45 41 44 5f 4f 4e 4c 59 3b _LINK_READ_ONLY;
9170: 0a 2b 09 20 20 20 20 69 2b 2b 3b 0a 2b 09 7d 0a .+. i++;.+.}.
9180: 2b 09 69 66 20 28 54 63 6c 5f 47 65 74 49 6e 64 +.if (Tcl_GetInd
9190: 65 78 46 72 6f 6d 4f 62 6a 28 69 6e 74 65 72 70 exFromObj(interp
91a0: 2c 20 6f 62 6a 76 5b 69 2b 2b 5d 2c 20 4c 69 6e , objv[i++], Lin
91b0: 6b 54 79 70 65 2c 20 22 74 79 70 65 22 2c 20 30 kType, "type", 0
91c0: 2c 0a 2b 09 20 20 20 20 26 74 79 70 65 49 6e 64 ,.+. &typeInd
91d0: 65 78 29 20 21 3d 20 54 43 4c 5f 4f 4b 29 20 7b ex) != TCL_OK) {
91e0: 0a 2b 09 20 20 20 20 72 65 74 75 72 6e 20 54 43 .+. return TC
91f0: 4c 5f 45 52 52 4f 52 3b 0a 2b 09 7d 0a 2b 09 69 L_ERROR;.+.}.+.i
9200: 66 20 28 54 63 6c 5f 47 65 74 49 6e 74 46 72 6f f (Tcl_GetIntFro
9210: 6d 4f 62 6a 28 69 6e 74 65 72 70 2c 20 6f 62 6a mObj(interp, obj
9220: 76 5b 69 2b 2b 5d 2c 20 26 73 69 7a 65 29 20 3d v[i++], &size) =
9230: 3d 20 54 43 4c 5f 45 52 52 4f 52 29 20 7b 0a 2b = TCL_ERROR) {.+
9240: 09 20 20 20 20 54 63 6c 5f 53 65 74 52 65 73 75 . Tcl_SetResu
9250: 6c 74 28 69 6e 74 65 72 70 2c 20 22 77 72 6f 6e lt(interp, "wron
9260: 67 20 73 69 7a 65 20 76 61 6c 75 65 22 2c 20 4e g size value", N
9270: 55 4c 4c 29 3b 0a 2b 09 20 20 20 20 72 65 74 75 ULL);.+. retu
9280: 72 6e 20 54 43 4c 5f 45 52 52 4f 52 3b 0a 2b 09 rn TCL_ERROR;.+.
9290: 7d 0a 2b 09 6e 61 6d 65 20 3d 20 54 63 6c 5f 47 }.+.name = Tcl_G
92a0: 65 74 53 74 72 69 6e 67 28 6f 62 6a 76 5b 69 2b etString(objv[i+
92b0: 2b 5d 29 3b 0a 2b 09 2f 2a 20 69 66 20 6e 6f 20 +]);.+./* if no
92c0: 61 64 64 72 65 73 73 20 69 73 20 67 69 76 65 6e address is given
92d0: 20 72 65 71 75 65 73 74 20 6f 6e 65 20 69 6e 20 request one in
92e0: 74 68 65 20 75 6e 64 65 72 6c 79 69 6e 67 20 66 the underlying f
92f0: 75 6e 63 74 69 6f 6e 20 2a 2f 0a 2b 09 69 66 20 unction */.+.if
9300: 28 69 20 3c 6f 62 6a 63 29 20 7b 0a 2b 09 20 20 (i <objc) {.+.
9310: 20 20 69 66 20 28 54 63 6c 5f 47 65 74 49 6e 74 if (Tcl_GetInt
9320: 46 72 6f 6d 4f 62 6a 28 69 6e 74 65 72 70 2c 20 FromObj(interp,
9330: 6f 62 6a 76 5b 69 5d 2c 20 26 61 64 64 72 29 20 objv[i], &addr)
9340: 3d 3d 20 54 43 4c 5f 45 52 52 4f 52 29 20 7b 0a == TCL_ERROR) {.
9350: 2b 09 20 20 20 20 20 20 20 20 54 63 6c 5f 53 65 +. Tcl_Se
9360: 74 52 65 73 75 6c 74 28 69 6e 74 65 72 70 2c 20 tResult(interp,
9370: 22 77 72 6f 6e 67 20 61 64 64 72 65 73 73 20 76 "wrong address v
9380: 61 6c 75 65 22 2c 20 4e 55 4c 4c 29 3b 0a 2b 09 alue", NULL);.+.
9390: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 54 return T
93a0: 43 4c 5f 45 52 52 4f 52 3b 0a 2b 09 20 20 20 20 CL_ERROR;.+.
93b0: 7d 0a 2b 09 7d 20 65 6c 73 65 20 7b 0a 2b 09 20 }.+.} else {.+.
93c0: 20 20 20 61 64 64 72 20 3d 20 30 3b 0a 2b 09 7d addr = 0;.+.}
93d0: 0a 2b 09 72 65 74 75 72 6e 20 54 63 6c 5f 4c 69 .+.return Tcl_Li
93e0: 6e 6b 41 72 72 61 79 28 69 6e 74 65 72 70 2c 6e nkArray(interp,n
93f0: 61 6d 65 2c 28 63 68 61 72 20 2a 29 61 64 64 72 ame,(char *)addr
9400: 2c 4c 69 6e 6b 54 79 70 65 73 5b 74 79 70 65 49 ,LinkTypes[typeI
9410: 6e 64 65 78 5d 20 7c 20 72 65 61 64 6f 6e 6c 79 ndex] | readonly
9420: 2c 73 69 7a 65 29 3b 0a 2b 20 20 20 20 7d 0a 2b ,size);.+ }.+
9430: 20 20 20 20 72 65 74 75 72 6e 20 54 43 4c 5f 4f return TCL_O
9440: 4b 3b 0a 2b 0a 2b 20 20 77 72 6f 6e 67 41 72 67 K;.+.+ wrongArg
9450: 73 3a 0a 2b 20 20 20 20 54 63 6c 5f 57 72 6f 6e s:.+ Tcl_Wron
9460: 67 4e 75 6d 41 72 67 73 28 69 6e 74 65 72 70 2c gNumArgs(interp,
9470: 20 32 2c 20 6f 62 6a 76 2c 20 22 3f 2d 72 65 61 2, objv, "?-rea
9480: 64 6f 6e 6c 79 3f 20 74 79 70 65 20 73 69 7a 65 donly? type size
9490: 20 6e 61 6d 65 20 3f 61 64 64 72 65 73 73 3f 22 name ?address?"
94a0: 29 3b 0a 2b 20 20 20 20 72 65 74 75 72 6e 20 54 );.+ return T
94b0: 43 4c 5f 45 52 52 4f 52 3b 0a 2b 7d 0a 2b 0c 0a CL_ERROR;.+}.+..
94c0: 2b 2f 2a 0a 2b 20 2a 2d 2d 2d 2d 2d 2d 2d 2d 2d +/*.+ *---------
94d0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
94e0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
94f0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
9500: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 2b 20 -------------.+
9510: 2a 0a 20 20 2a 20 54 65 73 74 6c 6f 63 61 6c 65 *. * Testlocale
9520: 43 6d 64 20 2d 2d 0a 20 20 2a 0a 20 20 2a 09 54 Cmd --. *. *.T
9530: 68 69 73 20 70 72 6f 63 65 64 75 72 65 20 69 6d his procedure im
9540: 70 6c 65 6d 65 6e 74 73 20 74 68 65 20 22 74 65 plements the "te
9550: 73 74 6c 6f 63 61 6c 65 22 20 63 6f 6d 6d 61 6e stlocale" comman
9560: 64 2e 20 20 49 74 20 69 73 20 75 73 65 64 0a 64 d. It is used.d
9570: 69 66 66 20 2d 4e 75 70 72 20 74 63 6c 2d 38 2e iff -Nupr tcl-8.
9580: 35 2f 74 65 73 74 73 2f 6c 69 6e 6b 2e 74 65 73 5/tests/link.tes
9590: 74 20 74 69 70 33 31 32 2f 74 65 73 74 73 2f 6c t tip312/tests/l
95a0: 69 6e 6b 2e 74 65 73 74 0a 2d 2d 2d 20 74 63 6c ink.test.--- tcl
95b0: 2d 38 2e 35 2f 74 65 73 74 73 2f 6c 69 6e 6b 2e -8.5/tests/link.
95c0: 74 65 73 74 09 32 30 30 37 2d 31 32 2d 31 33 20 test.2007-12-13
95d0: 31 36 3a 32 36 3a 30 36 2e 30 30 30 30 30 30 30 16:26:06.0000000
95e0: 30 30 20 2b 30 31 30 30 0a 2b 2b 2b 20 74 69 70 00 +0100.+++ tip
95f0: 33 31 32 2f 74 65 73 74 73 2f 6c 69 6e 6b 2e 74 312/tests/link.t
9600: 65 73 74 09 32 30 30 38 2d 30 36 2d 31 33 20 31 est.2008-06-13 1
9610: 31 3a 33 32 3a 34 39 2e 30 30 30 30 30 30 30 30 1:32:49.00000000
9620: 30 20 2b 30 32 30 30 0a 40 40 20 2d 31 39 2c 36 0 +0200.@@ -19,6
9630: 20 2b 31 39 2c 37 20 40 40 20 69 66 20 7b 5b 6c +19,7 @@ if {[l
9640: 73 65 61 72 63 68 20 5b 6e 61 6d 65 73 70 61 63 search [namespac
9650: 65 20 63 68 69 6c 64 72 65 6e 5d 20 3a 3a 74 63 e children] ::tc
9660: 6c 74 0a 20 7d 0a 20 0a 20 74 65 73 74 43 6f 6e lt. }. . testCon
9670: 73 74 72 61 69 6e 74 20 74 65 73 74 6c 69 6e 6b straint testlink
9680: 20 5b 6c 6c 65 6e 67 74 68 20 5b 69 6e 66 6f 20 [llength [info
9690: 63 6f 6d 6d 61 6e 64 73 20 74 65 73 74 6c 69 6e commands testlin
96a0: 6b 5d 5d 0a 2b 74 65 73 74 43 6f 6e 73 74 72 61 k]].+testConstra
96b0: 69 6e 74 20 74 65 73 74 6c 69 6e 6b 61 72 72 61 int testlinkarra
96c0: 79 20 5b 6c 6c 65 6e 67 74 68 20 5b 69 6e 66 6f y [llength [info
96d0: 20 63 6f 6d 6d 61 6e 64 73 20 74 65 73 74 6c 69 commands testli
96e0: 6e 6b 61 72 72 61 79 5d 5d 0a 20 0a 20 66 6f 72 nkarray]]. . for
96f0: 65 61 63 68 20 69 20 7b 69 6e 74 20 72 65 61 6c each i {int real
9700: 20 62 6f 6f 6c 20 73 74 72 69 6e 67 7d 20 7b 0a bool string} {.
9710: 20 20 20 20 20 63 61 74 63 68 20 7b 75 6e 73 65 catch {unse
9720: 74 20 24 69 7d 0a 40 40 20 2d 37 39 2c 37 20 2b t $i}.@@ -79,7 +
9730: 38 30 2c 37 20 40 40 20 74 65 73 74 20 6c 69 6e 80,7 @@ test lin
9740: 6b 2d 32 2e 35 20 7b 77 72 69 74 69 6e 67 20 62 k-2.5 {writing b
9750: 61 64 20 76 61 6c 75 65 73 20 69 6e 74 6f 20 76 ad values into v
9760: 0a 20 20 20 20 20 74 65 73 74 6c 69 6e 6b 20 73 . testlink s
9770: 65 74 20 34 33 20 31 2e 32 33 20 34 20 2d 20 35 et 43 1.23 4 - 5
9780: 36 37 38 35 36 37 38 20 36 34 20 32 35 30 20 33 6785678 64 250 3
9790: 30 30 30 30 20 36 30 30 30 30 20 30 78 62 65 65 0000 60000 0xbee
97a0: 66 62 61 62 65 20 31 32 33 32 31 20 33 32 31 32 fbabe 12321 3212
97b0: 33 20 33 2e 32 35 20 31 32 33 31 32 33 31 32 33 3 3.25 123123123
97c0: 34 0a 20 20 20 20 20 74 65 73 74 6c 69 6e 6b 20 4. testlink
97d0: 63 72 65 61 74 65 20 31 20 31 20 31 20 31 20 31 create 1 1 1 1 1
97e0: 20 31 20 31 20 31 20 31 20 31 20 31 20 31 20 31 1 1 1 1 1 1 1 1
97f0: 20 31 0a 20 20 20 20 20 6c 69 73 74 20 5b 63 61 1. list [ca
9800: 74 63 68 20 7b 73 65 74 20 77 69 64 65 20 67 6f tch {set wide go
9810: 72 70 7d 20 6d 73 67 5d 20 24 6d 73 67 20 24 62 rp} msg] $msg $b
9820: 6f 6f 6c 0a 2d 7d 20 7b 31 20 7b 63 61 6e 27 74 ool.-} {1 {can't
9830: 20 73 65 74 20 22 77 69 64 65 22 3a 20 76 61 72 set "wide": var
9840: 69 61 62 6c 65 20 6d 75 73 74 20 68 61 76 65 20 iable must have
9850: 69 6e 74 65 67 65 72 20 76 61 6c 75 65 7d 20 31 integer value} 1
9860: 7d 0a 2b 7d 20 7b 31 20 7b 63 61 6e 27 74 20 73 }.+} {1 {can't s
9870: 65 74 20 22 77 69 64 65 22 3a 20 76 61 72 69 61 et "wide": varia
9880: 62 6c 65 20 6d 75 73 74 20 68 61 76 65 20 77 69 ble must have wi
9890: 64 65 20 69 6e 74 65 67 65 72 20 76 61 6c 75 65 de integer value
98a0: 7d 20 31 7d 0a 20 0a 20 74 65 73 74 20 6c 69 6e } 1}. . test lin
98b0: 6b 2d 33 2e 31 20 7b 72 65 61 64 2d 6f 6e 6c 79 k-3.1 {read-only
98c0: 20 76 61 72 69 61 62 6c 65 73 7d 20 7b 74 65 73 variables} {tes
98d0: 74 6c 69 6e 6b 7d 20 7b 0a 20 20 20 20 20 74 65 tlink} {. te
98e0: 73 74 6c 69 6e 6b 20 64 65 6c 65 74 65 0a 40 40 stlink delete.@@
98f0: 20 2d 32 33 34 2c 37 20 2b 32 33 35 2c 37 20 40 -234,7 +235,7 @
9900: 40 20 74 65 73 74 20 6c 69 6e 6b 2d 37 2e 37 20 @ test link-7.7
9910: 7b 61 63 63 65 73 73 20 74 6f 20 6c 69 6e 6b 65 {access to linke
9920: 64 20 76 61 72 69 61 62 6c 65 0a 20 20 20 20 20 d variable.
9930: 74 65 73 74 6c 69 6e 6b 20 63 72 65 61 74 65 20 testlink create
9940: 31 20 31 20 31 20 31 20 31 20 31 20 31 20 31 20 1 1 1 1 1 1 1 1
9950: 31 20 31 20 31 20 31 20 31 20 31 0a 20 20 20 20 1 1 1 1 1 1.
9960: 20 74 65 73 74 6c 69 6e 6b 20 73 65 74 20 2d 34 testlink set -4
9970: 20 31 36 2e 33 20 31 20 7b 7d 20 37 37 38 38 39 16.3 1 {} 77889
9980: 39 20 7b 7d 20 7b 7d 20 7b 7d 20 7b 7d 20 7b 7d 9 {} {} {} {} {}
9990: 20 7b 7d 20 7b 7d 20 7b 7d 20 7b 7d 0a 20 20 20 {} {} {} {}.
99a0: 20 20 6c 69 73 74 20 5b 63 61 74 63 68 20 78 20 list [catch x
99b0: 6d 73 67 5d 20 24 6d 73 67 20 24 77 69 64 65 0a msg] $msg $wide.
99c0: 2d 7d 20 7b 31 20 7b 63 61 6e 27 74 20 73 65 74 -} {1 {can't set
99d0: 20 22 79 22 3a 20 76 61 72 69 61 62 6c 65 20 6d "y": variable m
99e0: 75 73 74 20 68 61 76 65 20 69 6e 74 65 67 65 72 ust have integer
99f0: 20 76 61 6c 75 65 7d 20 37 37 38 38 39 39 7d 0a value} 778899}.
9a00: 2b 7d 20 7b 31 20 7b 63 61 6e 27 74 20 73 65 74 +} {1 {can't set
9a10: 20 22 79 22 3a 20 76 61 72 69 61 62 6c 65 20 6d "y": variable m
9a20: 75 73 74 20 68 61 76 65 20 77 69 64 65 20 69 6e ust have wide in
9a30: 74 65 67 65 72 20 76 61 6c 75 65 7d 20 37 37 38 teger value} 778
9a40: 38 39 39 7d 0a 20 0a 20 74 65 73 74 20 6c 69 6e 899}. . test lin
9a50: 6b 2d 38 2e 31 20 7b 54 63 6c 5f 55 70 64 61 74 k-8.1 {Tcl_Updat
9a60: 65 4c 69 6e 6b 65 64 56 61 72 20 70 72 6f 63 65 eLinkedVar proce
9a70: 64 75 72 65 7d 20 7b 74 65 73 74 6c 69 6e 6b 7d dure} {testlink}
9a80: 20 7b 0a 20 20 20 20 20 70 72 6f 63 20 78 20 61 {. proc x a
9a90: 72 67 73 20 7b 0a 40 40 20 2d 32 36 39 2c 36 20 rgs {.@@ -269,6
9aa0: 2b 32 37 30 2c 32 39 36 20 40 40 20 74 65 73 74 +270,296 @@ test
9ab0: 20 6c 69 6e 6b 2d 38 2e 33 20 7b 54 63 6c 5f 55 link-8.3 {Tcl_U
9ac0: 70 64 61 74 65 4c 69 6e 6b 65 64 56 61 72 20 70 pdateLinkedVar p
9ad0: 72 6f 63 65 0a 20 09 74 65 73 74 6c 69 6e 6b 20 roce. .testlink
9ae0: 75 70 64 61 74 65 20 34 37 20 7b 7d 20 7b 7d 20 update 47 {} {}
9af0: 7b 7d 20 7b 7d 20 7b 7d 20 7b 7d 20 7b 7d 20 7b {} {} {} {} {} {
9b00: 7d 20 7b 7d 20 7b 7d 20 7b 7d 20 7b 7d 20 7b 7d } {} {} {} {} {}
9b10: 0a 20 20 20 20 20 7d 20 6d 73 67 5d 20 24 6d 73 . } msg] $ms
9b20: 67 20 24 69 6e 74 0a 20 7d 20 7b 30 20 7b 7d 20 g $int. } {0 {}
9b30: 34 37 7d 0a 2b 74 65 73 74 20 6c 69 6e 6b 2d 39 47}.+test link-9
9b40: 2e 31 20 7b 6c 69 6e 6b 61 72 72 61 79 20 75 73 .1 {linkarray us
9b50: 61 67 65 20 6d 65 73 73 61 67 65 73 7d 20 7b 0a age messages} {.
9b60: 2b 20 20 73 65 74 20 6d 79 6c 69 73 74 20 5b 6c + set mylist [l
9b70: 69 73 74 5d 0a 2b 20 20 63 61 74 63 68 20 7b 74 ist].+ catch {t
9b80: 65 73 74 6c 69 6e 6b 61 72 72 61 79 7d 20 6d 79 estlinkarray} my
9b90: 28 6d 73 67 29 3b 20 6c 61 70 70 65 6e 64 20 6d (msg); lappend m
9ba0: 79 6c 69 73 74 20 24 6d 79 28 6d 73 67 29 3b 75 ylist $my(msg);u
9bb0: 6e 73 65 74 20 6d 79 28 6d 73 67 29 0a 2b 20 20 nset my(msg).+
9bc0: 63 61 74 63 68 20 7b 74 65 73 74 6c 69 6e 6b 61 catch {testlinka
9bd0: 72 72 61 79 20 78 7d 20 6d 79 28 6d 73 67 29 3b rray x} my(msg);
9be0: 20 6c 61 70 70 65 6e 64 20 6d 79 6c 69 73 74 20 lappend mylist
9bf0: 24 6d 79 28 6d 73 67 29 3b 75 6e 73 65 74 20 6d $my(msg);unset m
9c00: 79 28 6d 73 67 29 0a 2b 20 20 63 61 74 63 68 20 y(msg).+ catch
9c10: 7b 74 65 73 74 6c 69 6e 6b 61 72 72 61 79 20 75 {testlinkarray u
9c20: 70 64 61 74 65 7d 20 6d 79 28 6d 73 67 29 3b 20 pdate} my(msg);
9c30: 6c 61 70 70 65 6e 64 20 6d 79 6c 69 73 74 20 24 lappend mylist $
9c40: 6d 79 28 6d 73 67 29 3b 75 6e 73 65 74 20 6d 79 my(msg);unset my
9c50: 28 6d 73 67 29 0a 2b 20 20 63 61 74 63 68 20 7b (msg).+ catch {
9c60: 74 65 73 74 6c 69 6e 6b 61 72 72 61 79 20 72 65 testlinkarray re
9c70: 6d 6f 76 65 7d 20 6d 79 28 6d 73 67 29 3b 20 6c move} my(msg); l
9c80: 61 70 70 65 6e 64 20 6d 79 6c 69 73 74 20 24 6d append mylist $m
9c90: 79 28 6d 73 67 29 3b 75 6e 73 65 74 20 6d 79 28 y(msg);unset my(
9ca0: 6d 73 67 29 0a 2b 20 20 63 61 74 63 68 20 7b 74 msg).+ catch {t
9cb0: 65 73 74 6c 69 6e 6b 61 72 72 61 79 20 63 72 65 estlinkarray cre
9cc0: 61 74 65 7d 20 6d 79 28 6d 73 67 29 3b 20 6c 61 ate} my(msg); la
9cd0: 70 70 65 6e 64 20 6d 79 6c 69 73 74 20 24 6d 79 ppend mylist $my
9ce0: 28 6d 73 67 29 3b 75 6e 73 65 74 20 6d 79 28 6d (msg);unset my(m
9cf0: 73 67 29 0a 2b 20 20 63 61 74 63 68 20 7b 74 65 sg).+ catch {te
9d00: 73 74 6c 69 6e 6b 61 72 72 61 79 20 63 72 65 61 stlinkarray crea
9d10: 74 65 20 78 78 20 31 20 6d 79 7d 20 6d 79 28 6d te xx 1 my} my(m
9d20: 73 67 29 3b 20 6c 61 70 70 65 6e 64 20 6d 79 6c sg); lappend myl
9d30: 69 73 74 20 24 6d 79 28 6d 73 67 29 3b 75 6e 73 ist $my(msg);uns
9d40: 65 74 20 6d 79 28 6d 73 67 29 0a 2b 20 20 63 61 et my(msg).+ ca
9d50: 74 63 68 20 7b 74 65 73 74 6c 69 6e 6b 61 72 72 tch {testlinkarr
9d60: 61 79 20 63 72 65 61 74 65 20 63 68 61 72 2a 20 ay create char*
9d70: 30 20 6d 79 7d 20 6d 79 28 6d 73 67 29 3b 20 6c 0 my} my(msg); l
9d80: 61 70 70 65 6e 64 20 6d 79 6c 69 73 74 20 24 6d append mylist $m
9d90: 79 28 6d 73 67 29 3b 75 6e 73 65 74 20 6d 79 28 y(msg);unset my(
9da0: 6d 73 67 29 0a 2b 20 20 6a 6f 69 6e 20 24 6d 79 msg).+ join $my
9db0: 6c 69 73 74 20 22 5c 6e 22 0a 2b 7d 20 7b 77 72 list "\n".+} {wr
9dc0: 6f 6e 67 20 23 20 61 72 67 73 3a 20 73 68 6f 75 ong # args: shou
9dd0: 6c 64 20 62 65 20 22 74 65 73 74 6c 69 6e 6b 61 ld be "testlinka
9de0: 72 72 61 79 20 6f 70 74 69 6f 6e 20 61 72 67 73 rray option args
9df0: 22 0a 2b 62 61 64 20 6f 70 74 69 6f 6e 20 22 78 ".+bad option "x
9e00: 22 3a 20 6d 75 73 74 20 62 65 20 75 70 64 61 74 ": must be updat
9e10: 65 2c 20 72 65 6d 6f 76 65 2c 20 6f 72 20 63 72 e, remove, or cr
9e20: 65 61 74 65 0a 2b 0a 2b 0a 2b 77 72 6f 6e 67 20 eate.+.+.+wrong
9e30: 23 20 61 72 67 73 3a 20 73 68 6f 75 6c 64 20 62 # args: should b
9e40: 65 20 22 74 65 73 74 6c 69 6e 6b 61 72 72 61 79 e "testlinkarray
9e50: 20 63 72 65 61 74 65 20 3f 2d 72 65 61 64 6f 6e create ?-readon
9e60: 6c 79 3f 20 74 79 70 65 20 73 69 7a 65 20 6e 61 ly? type size na
9e70: 6d 65 20 3f 61 64 64 72 65 73 73 3f 22 0a 2b 62 me ?address?".+b
9e80: 61 64 20 74 79 70 65 20 22 78 78 22 3a 20 6d 75 ad type "xx": mu
9e90: 73 74 20 62 65 20 63 68 61 72 2c 20 75 63 68 61 st be char, ucha
9ea0: 72 2c 20 73 68 6f 72 74 2c 20 75 73 68 6f 72 74 r, short, ushort
9eb0: 2c 20 69 6e 74 2c 20 75 69 6e 74 2c 20 6c 6f 6e , int, uint, lon
9ec0: 67 2c 20 75 6c 6f 6e 67 2c 20 77 69 64 65 2c 20 g, ulong, wide,
9ed0: 75 77 69 64 65 2c 20 66 6c 6f 61 74 2c 20 64 6f uwide, float, do
9ee0: 75 62 6c 65 2c 20 73 74 72 69 6e 67 2c 20 63 68 uble, string, ch
9ef0: 61 72 2a 2c 20 6f 72 20 62 69 6e 61 72 79 0a 2b ar*, or binary.+
9f00: 77 72 6f 6e 67 20 61 72 72 61 79 20 73 69 7a 65 wrong array size
9f10: 20 67 69 76 65 6e 7d 0a 2b 74 65 73 74 20 6c 69 given}.+test li
9f20: 6e 6b 2d 31 30 2e 31 20 7b 6c 69 6e 6b 61 72 72 nk-10.1 {linkarr
9f30: 61 79 20 63 68 61 72 2a 7d 20 7b 0a 2b 20 20 73 ay char*} {.+ s
9f40: 65 74 20 6d 79 6c 69 73 74 20 5b 6c 69 73 74 5d et mylist [list]
9f50: 0a 2b 20 20 74 65 73 74 6c 69 6e 6b 61 72 72 61 .+ testlinkarra
9f60: 79 20 63 72 65 61 74 65 20 63 68 61 72 2a 20 31 y create char* 1
9f70: 20 3a 3a 6d 79 28 76 61 72 29 0a 2b 20 20 6c 61 ::my(var).+ la
9f80: 70 70 65 6e 64 20 6d 79 6c 69 73 74 20 5b 73 65 ppend mylist [se
9f90: 74 20 3a 3a 6d 79 28 76 61 72 29 20 22 22 5d 0a t ::my(var) ""].
9fa0: 2b 20 20 63 61 74 63 68 20 7b 73 65 74 20 3a 3a + catch {set ::
9fb0: 6d 79 28 76 61 72 29 20 78 7d 20 6d 79 28 6d 73 my(var) x} my(ms
9fc0: 67 29 3b 20 6c 61 70 70 65 6e 64 20 6d 79 6c 69 g); lappend myli
9fd0: 73 74 20 24 6d 79 28 6d 73 67 29 3b 75 6e 73 65 st $my(msg);unse
9fe0: 74 20 6d 79 28 6d 73 67 29 0a 2b 20 20 74 65 73 t my(msg).+ tes
9ff0: 74 6c 69 6e 6b 61 72 72 61 79 20 72 65 6d 6f 76 tlinkarray remov
a000: 65 20 3a 3a 6d 79 28 76 61 72 29 0a 2b 20 20 74 e ::my(var).+ t
a010: 65 73 74 6c 69 6e 6b 61 72 72 61 79 20 63 72 65 estlinkarray cre
a020: 61 74 65 20 63 68 61 72 2a 20 34 20 3a 3a 6d 79 ate char* 4 ::my
a030: 28 76 61 72 29 0a 2b 20 20 73 65 74 20 3a 3a 6d (var).+ set ::m
a040: 79 28 76 61 72 29 20 78 0a 2b 20 20 63 61 74 63 y(var) x.+ catc
a050: 68 20 7b 73 65 74 20 3a 3a 6d 79 28 76 61 72 29 h {set ::my(var)
a060: 20 78 79 7a 7a 7d 20 6d 79 28 6d 73 67 29 3b 20 xyzz} my(msg);
a070: 6c 61 70 70 65 6e 64 20 6d 79 6c 69 73 74 20 24 lappend mylist $
a080: 6d 79 28 6d 73 67 29 3b 75 6e 73 65 74 20 6d 79 my(msg);unset my
a090: 28 6d 73 67 29 0a 2b 20 20 74 65 73 74 6c 69 6e (msg).+ testlin
a0a0: 6b 61 72 72 61 79 20 72 65 6d 6f 76 65 20 3a 3a karray remove ::
a0b0: 6d 79 28 76 61 72 29 0a 2b 20 20 74 65 73 74 6c my(var).+ testl
a0c0: 69 6e 6b 61 72 72 61 79 20 63 72 65 61 74 65 20 inkarray create
a0d0: 2d 72 20 63 68 61 72 2a 20 34 20 3a 3a 6d 79 28 -r char* 4 ::my(
a0e0: 76 61 72 29 0a 2b 20 20 63 61 74 63 68 20 7b 73 var).+ catch {s
a0f0: 65 74 20 3a 3a 6d 79 28 76 61 72 29 20 78 7d 20 et ::my(var) x}
a100: 6d 79 28 6d 73 67 29 3b 20 6c 61 70 70 65 6e 64 my(msg); lappend
a110: 20 6d 79 6c 69 73 74 20 24 6d 79 28 6d 73 67 29 mylist $my(msg)
a120: 3b 75 6e 73 65 74 20 6d 79 28 6d 73 67 29 0a 2b ;unset my(msg).+
a130: 20 20 74 65 73 74 6c 69 6e 6b 61 72 72 61 79 20 testlinkarray
a140: 72 65 6d 6f 76 65 20 3a 3a 6d 79 28 76 61 72 29 remove ::my(var)
a150: 3b 20 75 6e 73 65 74 20 6d 79 3b 20 6a 6f 69 6e ; unset my; join
a160: 20 24 6d 79 6c 69 73 74 20 22 5c 6e 22 0a 2b 7d $mylist "\n".+}
a170: 20 7b 0a 2b 63 61 6e 27 74 20 73 65 74 20 22 3a {.+can't set ":
a180: 3a 6d 79 28 76 61 72 29 22 3a 20 77 72 6f 6e 67 :my(var)": wrong
a190: 20 73 69 7a 65 20 6f 66 20 63 68 61 72 2a 20 76 size of char* v
a1a0: 61 6c 75 65 0a 2b 63 61 6e 27 74 20 73 65 74 20 alue.+can't set
a1b0: 22 3a 3a 6d 79 28 76 61 72 29 22 3a 20 77 72 6f "::my(var)": wro
a1c0: 6e 67 20 73 69 7a 65 20 6f 66 20 63 68 61 72 2a ng size of char*
a1d0: 20 76 61 6c 75 65 0a 2b 63 61 6e 27 74 20 73 65 value.+can't se
a1e0: 74 20 22 3a 3a 6d 79 28 76 61 72 29 22 3a 20 6c t "::my(var)": l
a1f0: 69 6e 6b 65 64 20 76 61 72 69 61 62 6c 65 20 69 inked variable i
a200: 73 20 72 65 61 64 2d 6f 6e 6c 79 7d 0a 2b 74 65 s read-only}.+te
a210: 73 74 20 6c 69 6e 6b 2d 31 31 2e 31 20 7b 6c 69 st link-11.1 {li
a220: 6e 6b 61 72 72 61 79 20 63 68 61 72 7d 20 7b 0a nkarray char} {.
a230: 2b 20 20 73 65 74 20 6d 79 6c 69 73 74 20 5b 6c + set mylist [l
a240: 69 73 74 5d 0a 2b 20 20 74 65 73 74 6c 69 6e 6b ist].+ testlink
a250: 61 72 72 61 79 20 63 72 65 61 74 65 20 63 68 61 array create cha
a260: 72 20 31 20 3a 3a 6d 79 28 76 61 72 29 0a 2b 20 r 1 ::my(var).+
a270: 20 63 61 74 63 68 20 7b 73 65 74 20 3a 3a 6d 79 catch {set ::my
a280: 28 76 61 72 29 20 78 7d 20 6d 79 28 6d 73 67 29 (var) x} my(msg)
a290: 3b 20 6c 61 70 70 65 6e 64 20 6d 79 6c 69 73 74 ; lappend mylist
a2a0: 20 24 6d 79 28 6d 73 67 29 3b 75 6e 73 65 74 20 $my(msg);unset
a2b0: 6d 79 28 6d 73 67 29 0a 2b 20 20 6c 61 70 70 65 my(msg).+ lappe
a2c0: 6e 64 20 6d 79 6c 69 73 74 20 5b 73 65 74 20 3a nd mylist [set :
a2d0: 3a 6d 79 28 76 61 72 29 20 31 32 30 5d 0a 2b 20 :my(var) 120].+
a2e0: 20 63 61 74 63 68 20 7b 73 65 74 20 3a 3a 6d 79 catch {set ::my
a2f0: 28 76 61 72 29 20 31 32 33 34 7d 20 6d 79 28 6d (var) 1234} my(m
a300: 73 67 29 3b 20 6c 61 70 70 65 6e 64 20 6d 79 6c sg); lappend myl
a310: 69 73 74 20 24 6d 79 28 6d 73 67 29 3b 75 6e 73 ist $my(msg);uns
a320: 65 74 20 6d 79 28 6d 73 67 29 0a 2b 20 20 74 65 et my(msg).+ te
a330: 73 74 6c 69 6e 6b 61 72 72 61 79 20 72 65 6d 6f stlinkarray remo
a340: 76 65 20 3a 3a 6d 79 28 76 61 72 29 0a 2b 20 20 ve ::my(var).+
a350: 74 65 73 74 6c 69 6e 6b 61 72 72 61 79 20 63 72 testlinkarray cr
a360: 65 61 74 65 20 63 68 61 72 20 34 20 3a 3a 6d 79 eate char 4 ::my
a370: 28 76 61 72 29 0a 2b 20 20 63 61 74 63 68 20 7b (var).+ catch {
a380: 73 65 74 20 3a 3a 6d 79 28 76 61 72 29 20 7b 31 set ::my(var) {1
a390: 20 32 20 33 7d 7d 20 6d 79 28 6d 73 67 29 3b 20 2 3}} my(msg);
a3a0: 6c 61 70 70 65 6e 64 20 6d 79 6c 69 73 74 20 24 lappend mylist $
a3b0: 6d 79 28 6d 73 67 29 3b 75 6e 73 65 74 20 6d 79 my(msg);unset my
a3c0: 28 6d 73 67 29 0a 2b 20 20 73 65 74 20 3a 3a 6d (msg).+ set ::m
a3d0: 79 28 76 61 72 29 20 7b 31 20 32 20 33 20 34 7d y(var) {1 2 3 4}
a3e0: 0a 2b 20 20 6c 61 70 70 65 6e 64 20 6d 79 6c 69 .+ lappend myli
a3f0: 73 74 20 24 6d 79 28 76 61 72 29 0a 2b 20 20 74 st $my(var).+ t
a400: 65 73 74 6c 69 6e 6b 61 72 72 61 79 20 72 65 6d estlinkarray rem
a410: 6f 76 65 20 3a 3a 6d 79 28 76 61 72 29 0a 2b 20 ove ::my(var).+
a420: 20 74 65 73 74 6c 69 6e 6b 61 72 72 61 79 20 63 testlinkarray c
a430: 72 65 61 74 65 20 2d 72 20 63 68 61 72 20 32 20 reate -r char 2
a440: 3a 3a 6d 79 28 76 61 72 29 0a 2b 20 20 63 61 74 ::my(var).+ cat
a450: 63 68 20 7b 73 65 74 20 3a 3a 6d 79 28 76 61 72 ch {set ::my(var
a460: 29 20 7b 31 20 32 7d 7d 20 6d 79 28 6d 73 67 29 ) {1 2}} my(msg)
a470: 3b 20 6c 61 70 70 65 6e 64 20 6d 79 6c 69 73 74 ; lappend mylist
a480: 20 24 6d 79 28 6d 73 67 29 3b 75 6e 73 65 74 20 $my(msg);unset
a490: 6d 79 28 6d 73 67 29 0a 2b 20 20 74 65 73 74 6c my(msg).+ testl
a4a0: 69 6e 6b 61 72 72 61 79 20 72 65 6d 6f 76 65 20 inkarray remove
a4b0: 3a 3a 6d 79 28 76 61 72 29 3b 20 75 6e 73 65 74 ::my(var); unset
a4c0: 20 6d 79 3b 20 6a 6f 69 6e 20 24 6d 79 6c 69 73 my; join $mylis
a4d0: 74 20 22 5c 6e 22 0a 2b 7d 20 7b 63 61 6e 27 74 t "\n".+} {can't
a4e0: 20 73 65 74 20 22 3a 3a 6d 79 28 76 61 72 29 22 set "::my(var)"
a4f0: 3a 20 76 61 72 69 61 62 6c 65 20 6d 75 73 74 20 : variable must
a500: 68 61 76 65 20 63 68 61 72 20 76 61 6c 75 65 0a have char value.
a510: 2b 31 32 30 0a 2b 63 61 6e 27 74 20 73 65 74 20 +120.+can't set
a520: 22 3a 3a 6d 79 28 76 61 72 29 22 3a 20 76 61 72 "::my(var)": var
a530: 69 61 62 6c 65 20 6d 75 73 74 20 68 61 76 65 20 iable must have
a540: 63 68 61 72 20 76 61 6c 75 65 0a 2b 63 61 6e 27 char value.+can'
a550: 74 20 73 65 74 20 22 3a 3a 6d 79 28 76 61 72 29 t set "::my(var)
a560: 22 3a 20 77 72 6f 6e 67 20 64 69 6d 65 6e 73 69 ": wrong dimensi
a570: 6f 6e 0a 2b 31 20 32 20 33 20 34 0a 2b 63 61 6e on.+1 2 3 4.+can
a580: 27 74 20 73 65 74 20 22 3a 3a 6d 79 28 76 61 72 't set "::my(var
a590: 29 22 3a 20 6c 69 6e 6b 65 64 20 76 61 72 69 61 )": linked varia
a5a0: 62 6c 65 20 69 73 20 72 65 61 64 2d 6f 6e 6c 79 ble is read-only
a5b0: 7d 0a 2b 74 65 73 74 20 6c 69 6e 6b 2d 31 32 2e }.+test link-12.
a5c0: 31 20 7b 6c 69 6e 6b 61 72 72 61 79 20 75 6e 73 1 {linkarray uns
a5d0: 69 67 6e 65 64 20 63 68 61 72 7d 20 7b 0a 2b 20 igned char} {.+
a5e0: 20 73 65 74 20 6d 79 6c 69 73 74 20 5b 6c 69 73 set mylist [lis
a5f0: 74 5d 0a 2b 20 20 74 65 73 74 6c 69 6e 6b 61 72 t].+ testlinkar
a600: 72 61 79 20 63 72 65 61 74 65 20 75 63 68 61 72 ray create uchar
a610: 20 31 20 3a 3a 6d 79 28 76 61 72 29 0a 2b 20 20 1 ::my(var).+
a620: 63 61 74 63 68 20 7b 73 65 74 20 3a 3a 6d 79 28 catch {set ::my(
a630: 76 61 72 29 20 78 7d 20 6d 79 28 6d 73 67 29 3b var) x} my(msg);
a640: 20 6c 61 70 70 65 6e 64 20 6d 79 6c 69 73 74 20 lappend mylist
a650: 24 6d 79 28 6d 73 67 29 3b 75 6e 73 65 74 20 6d $my(msg);unset m
a660: 79 28 6d 73 67 29 0a 2b 20 20 6c 61 70 70 65 6e y(msg).+ lappen
a670: 64 20 6d 79 6c 69 73 74 20 5b 73 65 74 20 3a 3a d mylist [set ::
a680: 6d 79 28 76 61 72 29 20 31 32 30 5d 0a 2b 20 20 my(var) 120].+
a690: 63 61 74 63 68 20 7b 73 65 74 20 3a 3a 6d 79 28 catch {set ::my(
a6a0: 76 61 72 29 20 31 32 33 34 7d 20 6d 79 28 6d 73 var) 1234} my(ms
a6b0: 67 29 3b 20 6c 61 70 70 65 6e 64 20 6d 79 6c 69 g); lappend myli
a6c0: 73 74 20 24 6d 79 28 6d 73 67 29 3b 75 6e 73 65 st $my(msg);unse
a6d0: 74 20 6d 79 28 6d 73 67 29 0a 2b 20 20 63 61 74 t my(msg).+ cat
a6e0: 63 68 20 7b 73 65 74 20 3a 3a 6d 79 28 76 61 72 ch {set ::my(var
a6f0: 29 20 2d 31 7d 20 6d 79 28 6d 73 67 29 3b 20 6c ) -1} my(msg); l
a700: 61 70 70 65 6e 64 20 6d 79 6c 69 73 74 20 24 6d append mylist $m
a710: 79 28 6d 73 67 29 3b 75 6e 73 65 74 20 6d 79 28 y(msg);unset my(
a720: 6d 73 67 29 0a 2b 20 20 74 65 73 74 6c 69 6e 6b msg).+ testlink
a730: 61 72 72 61 79 20 72 65 6d 6f 76 65 20 3a 3a 6d array remove ::m
a740: 79 28 76 61 72 29 0a 2b 20 20 74 65 73 74 6c 69 y(var).+ testli
a750: 6e 6b 61 72 72 61 79 20 63 72 65 61 74 65 20 75 nkarray create u
a760: 63 68 61 72 20 34 20 3a 3a 6d 79 28 76 61 72 29 char 4 ::my(var)
a770: 0a 2b 20 20 63 61 74 63 68 20 7b 73 65 74 20 3a .+ catch {set :
a780: 3a 6d 79 28 76 61 72 29 20 7b 31 20 32 20 33 7d :my(var) {1 2 3}
a790: 7d 20 6d 79 28 6d 73 67 29 3b 20 6c 61 70 70 65 } my(msg); lappe
a7a0: 6e 64 20 6d 79 6c 69 73 74 20 24 6d 79 28 6d 73 nd mylist $my(ms
a7b0: 67 29 3b 75 6e 73 65 74 20 6d 79 28 6d 73 67 29 g);unset my(msg)
a7c0: 0a 2b 20 20 73 65 74 20 3a 3a 6d 79 28 76 61 72 .+ set ::my(var
a7d0: 29 20 7b 31 20 32 20 33 20 34 7d 0a 2b 20 20 6c ) {1 2 3 4}.+ l
a7e0: 61 70 70 65 6e 64 20 6d 79 6c 69 73 74 20 24 6d append mylist $m
a7f0: 79 28 76 61 72 29 0a 2b 20 20 74 65 73 74 6c 69 y(var).+ testli
a800: 6e 6b 61 72 72 61 79 20 72 65 6d 6f 76 65 20 3a nkarray remove :
a810: 3a 6d 79 28 76 61 72 29 0a 2b 20 20 74 65 73 74 :my(var).+ test
a820: 6c 69 6e 6b 61 72 72 61 79 20 63 72 65 61 74 65 linkarray create
a830: 20 2d 72 20 75 63 68 61 72 20 32 20 3a 3a 6d 79 -r uchar 2 ::my
a840: 28 76 61 72 29 0a 2b 20 20 63 61 74 63 68 20 7b (var).+ catch {
a850: 73 65 74 20 3a 3a 6d 79 28 76 61 72 29 20 7b 31 set ::my(var) {1
a860: 20 32 7d 7d 20 6d 79 28 6d 73 67 29 3b 20 6c 61 2}} my(msg); la
a870: 70 70 65 6e 64 20 6d 79 6c 69 73 74 20 24 6d 79 ppend mylist $my
a880: 28 6d 73 67 29 3b 75 6e 73 65 74 20 6d 79 28 6d (msg);unset my(m
a890: 73 67 29 0a 2b 20 20 74 65 73 74 6c 69 6e 6b 61 sg).+ testlinka
a8a0: 72 72 61 79 20 72 65 6d 6f 76 65 20 3a 3a 6d 79 rray remove ::my
a8b0: 28 76 61 72 29 3b 20 75 6e 73 65 74 20 6d 79 3b (var); unset my;
a8c0: 20 6a 6f 69 6e 20 24 6d 79 6c 69 73 74 20 22 5c join $mylist "\
a8d0: 6e 22 0a 2b 7d 20 7b 63 61 6e 27 74 20 73 65 74 n".+} {can't set
a8e0: 20 22 3a 3a 6d 79 28 76 61 72 29 22 3a 20 76 61 "::my(var)": va
a8f0: 72 69 61 62 6c 65 20 6d 75 73 74 20 68 61 76 65 riable must have
a900: 20 75 6e 73 69 67 6e 65 64 20 63 68 61 72 20 76 unsigned char v
a910: 61 6c 75 65 0a 2b 31 32 30 0a 2b 63 61 6e 27 74 alue.+120.+can't
a920: 20 73 65 74 20 22 3a 3a 6d 79 28 76 61 72 29 22 set "::my(var)"
a930: 3a 20 76 61 72 69 61 62 6c 65 20 6d 75 73 74 20 : variable must
a940: 68 61 76 65 20 75 6e 73 69 67 6e 65 64 20 63 68 have unsigned ch
a950: 61 72 20 76 61 6c 75 65 0a 2b 63 61 6e 27 74 20 ar value.+can't
a960: 73 65 74 20 22 3a 3a 6d 79 28 76 61 72 29 22 3a set "::my(var)":
a970: 20 76 61 72 69 61 62 6c 65 20 6d 75 73 74 20 68 variable must h
a980: 61 76 65 20 75 6e 73 69 67 6e 65 64 20 63 68 61 ave unsigned cha
a990: 72 20 76 61 6c 75 65 0a 2b 63 61 6e 27 74 20 73 r value.+can't s
a9a0: 65 74 20 22 3a 3a 6d 79 28 76 61 72 29 22 3a 20 et "::my(var)":
a9b0: 77 72 6f 6e 67 20 64 69 6d 65 6e 73 69 6f 6e 0a wrong dimension.
a9c0: 2b 31 20 32 20 33 20 34 0a 2b 63 61 6e 27 74 20 +1 2 3 4.+can't
a9d0: 73 65 74 20 22 3a 3a 6d 79 28 76 61 72 29 22 3a set "::my(var)":
a9e0: 20 6c 69 6e 6b 65 64 20 76 61 72 69 61 62 6c 65 linked variable
a9f0: 20 69 73 20 72 65 61 64 2d 6f 6e 6c 79 7d 0a 2b is read-only}.+
aa00: 74 65 73 74 20 6c 69 6e 6b 2d 31 33 2e 31 20 7b test link-13.1 {
aa10: 6c 69 6e 6b 61 72 72 61 79 20 73 68 6f 72 74 7d linkarray short}
aa20: 20 7b 0a 2b 20 20 73 65 74 20 6d 79 6c 69 73 74 {.+ set mylist
aa30: 20 5b 6c 69 73 74 5d 0a 2b 20 20 74 65 73 74 6c [list].+ testl
aa40: 69 6e 6b 61 72 72 61 79 20 63 72 65 61 74 65 20 inkarray create
aa50: 73 68 6f 72 74 20 31 20 3a 3a 6d 79 28 76 61 72 short 1 ::my(var
aa60: 29 0a 2b 20 20 63 61 74 63 68 20 7b 73 65 74 20 ).+ catch {set
aa70: 3a 3a 6d 79 28 76 61 72 29 20 78 7d 20 6d 79 28 ::my(var) x} my(
aa80: 6d 73 67 29 3b 20 6c 61 70 70 65 6e 64 20 6d 79 msg); lappend my
aa90: 6c 69 73 74 20 24 6d 79 28 6d 73 67 29 3b 75 6e list $my(msg);un
aaa0: 73 65 74 20 6d 79 28 6d 73 67 29 0a 2b 20 20 6c set my(msg).+ l
aab0: 61 70 70 65 6e 64 20 6d 79 6c 69 73 74 20 5b 73 append mylist [s
aac0: 65 74 20 3a 3a 6d 79 28 76 61 72 29 20 31 32 30 et ::my(var) 120
aad0: 5d 0a 2b 20 20 63 61 74 63 68 20 7b 73 65 74 20 ].+ catch {set
aae0: 3a 3a 6d 79 28 76 61 72 29 20 31 32 33 34 35 36 ::my(var) 123456
aaf0: 7d 20 6d 79 28 6d 73 67 29 3b 20 6c 61 70 70 65 } my(msg); lappe
ab00: 6e 64 20 6d 79 6c 69 73 74 20 24 6d 79 28 6d 73 nd mylist $my(ms
ab10: 67 29 3b 75 6e 73 65 74 20 6d 79 28 6d 73 67 29 g);unset my(msg)
ab20: 0a 2b 20 20 74 65 73 74 6c 69 6e 6b 61 72 72 61 .+ testlinkarra
ab30: 79 20 72 65 6d 6f 76 65 20 3a 3a 6d 79 28 76 61 y remove ::my(va
ab40: 72 29 0a 2b 20 20 74 65 73 74 6c 69 6e 6b 61 72 r).+ testlinkar
ab50: 72 61 79 20 63 72 65 61 74 65 20 73 68 6f 72 74 ray create short
ab60: 20 34 20 3a 3a 6d 79 28 76 61 72 29 0a 2b 20 20 4 ::my(var).+
ab70: 63 61 74 63 68 20 7b 73 65 74 20 3a 3a 6d 79 28 catch {set ::my(
ab80: 76 61 72 29 20 7b 31 20 32 20 33 7d 7d 20 6d 79 var) {1 2 3}} my
ab90: 28 6d 73 67 29 3b 20 6c 61 70 70 65 6e 64 20 6d (msg); lappend m
aba0: 79 6c 69 73 74 20 24 6d 79 28 6d 73 67 29 3b 75 ylist $my(msg);u
abb0: 6e 73 65 74 20 6d 79 28 6d 73 67 29 0a 2b 20 20 nset my(msg).+
abc0: 73 65 74 20 3a 3a 6d 79 28 76 61 72 29 20 7b 31 set ::my(var) {1
abd0: 20 32 20 33 20 34 7d 0a 2b 20 20 6c 61 70 70 65 2 3 4}.+ lappe
abe0: 6e 64 20 6d 79 6c 69 73 74 20 24 6d 79 28 76 61 nd mylist $my(va
abf0: 72 29 0a 2b 20 20 74 65 73 74 6c 69 6e 6b 61 72 r).+ testlinkar
ac00: 72 61 79 20 72 65 6d 6f 76 65 20 3a 3a 6d 79 28 ray remove ::my(
ac10: 76 61 72 29 0a 2b 20 20 74 65 73 74 6c 69 6e 6b var).+ testlink
ac20: 61 72 72 61 79 20 63 72 65 61 74 65 20 2d 72 20 array create -r
ac30: 73 68 6f 72 74 20 32 20 3a 3a 6d 79 28 76 61 72 short 2 ::my(var
ac40: 29 0a 2b 20 20 63 61 74 63 68 20 7b 73 65 74 20 ).+ catch {set
ac50: 3a 3a 6d 79 28 76 61 72 29 20 7b 31 20 32 7d 7d ::my(var) {1 2}}
ac60: 20 6d 79 28 6d 73 67 29 3b 20 6c 61 70 70 65 6e my(msg); lappen
ac70: 64 20 6d 79 6c 69 73 74 20 24 6d 79 28 6d 73 67 d mylist $my(msg
ac80: 29 3b 75 6e 73 65 74 20 6d 79 28 6d 73 67 29 0a );unset my(msg).
ac90: 2b 20 20 74 65 73 74 6c 69 6e 6b 61 72 72 61 79 + testlinkarray
aca0: 20 72 65 6d 6f 76 65 20 3a 3a 6d 79 28 76 61 72 remove ::my(var
acb0: 29 3b 20 75 6e 73 65 74 20 6d 79 3b 20 6a 6f 69 ); unset my; joi
acc0: 6e 20 24 6d 79 6c 69 73 74 20 22 5c 6e 22 0a 2b n $mylist "\n".+
acd0: 7d 20 7b 63 61 6e 27 74 20 73 65 74 20 22 3a 3a } {can't set "::
ace0: 6d 79 28 76 61 72 29 22 3a 20 76 61 72 69 61 62 my(var)": variab
acf0: 6c 65 20 6d 75 73 74 20 68 61 76 65 20 73 68 6f le must have sho
ad00: 72 74 20 76 61 6c 75 65 0a 2b 31 32 30 0a 2b 63 rt value.+120.+c
ad10: 61 6e 27 74 20 73 65 74 20 22 3a 3a 6d 79 28 76 an't set "::my(v
ad20: 61 72 29 22 3a 20 76 61 72 69 61 62 6c 65 20 6d ar)": variable m
ad30: 75 73 74 20 68 61 76 65 20 73 68 6f 72 74 20 76 ust have short v
ad40: 61 6c 75 65 0a 2b 63 61 6e 27 74 20 73 65 74 20 alue.+can't set
ad50: 22 3a 3a 6d 79 28 76 61 72 29 22 3a 20 77 72 6f "::my(var)": wro
ad60: 6e 67 20 64 69 6d 65 6e 73 69 6f 6e 0a 2b 31 20 ng dimension.+1
ad70: 32 20 33 20 34 0a 2b 63 61 6e 27 74 20 73 65 74 2 3 4.+can't set
ad80: 20 22 3a 3a 6d 79 28 76 61 72 29 22 3a 20 6c 69 "::my(var)": li
ad90: 6e 6b 65 64 20 76 61 72 69 61 62 6c 65 20 69 73 nked variable is
ada0: 20 72 65 61 64 2d 6f 6e 6c 79 7d 0a 2b 74 65 73 read-only}.+tes
adb0: 74 20 6c 69 6e 6b 2d 31 34 2e 31 20 7b 6c 69 6e t link-14.1 {lin
adc0: 6b 61 72 72 61 79 20 75 6e 73 69 67 6e 65 64 20 karray unsigned
add0: 73 68 6f 72 74 7d 20 7b 0a 2b 20 20 73 65 74 20 short} {.+ set
ade0: 6d 79 6c 69 73 74 20 5b 6c 69 73 74 5d 0a 2b 20 mylist [list].+
adf0: 20 74 65 73 74 6c 69 6e 6b 61 72 72 61 79 20 63 testlinkarray c
ae00: 72 65 61 74 65 20 75 73 68 6f 72 74 20 31 20 3a reate ushort 1 :
ae10: 3a 6d 79 28 76 61 72 29 0a 2b 20 20 63 61 74 63 :my(var).+ catc
ae20: 68 20 7b 73 65 74 20 3a 3a 6d 79 28 76 61 72 29 h {set ::my(var)
ae30: 20 78 7d 20 6d 79 28 6d 73 67 29 3b 20 6c 61 70 x} my(msg); lap
ae40: 70 65 6e 64 20 6d 79 6c 69 73 74 20 24 6d 79 28 pend mylist $my(
ae50: 6d 73 67 29 3b 75 6e 73 65 74 20 6d 79 28 6d 73 msg);unset my(ms
ae60: 67 29 0a 2b 20 20 6c 61 70 70 65 6e 64 20 6d 79 g).+ lappend my
ae70: 6c 69 73 74 20 5b 73 65 74 20 3a 3a 6d 79 28 76 list [set ::my(v
ae80: 61 72 29 20 31 32 30 5d 0a 2b 20 20 63 61 74 63 ar) 120].+ catc
ae90: 68 20 7b 73 65 74 20 3a 3a 6d 79 28 76 61 72 29 h {set ::my(var)
aea0: 20 31 32 33 34 35 36 7d 20 6d 79 28 6d 73 67 29 123456} my(msg)
aeb0: 3b 20 6c 61 70 70 65 6e 64 20 6d 79 6c 69 73 74 ; lappend mylist
aec0: 20 24 6d 79 28 6d 73 67 29 3b 75 6e 73 65 74 20 $my(msg);unset
aed0: 6d 79 28 6d 73 67 29 0a 2b 20 20 63 61 74 63 68 my(msg).+ catch
aee0: 20 7b 73 65 74 20 3a 3a 6d 79 28 76 61 72 29 20 {set ::my(var)
aef0: 2d 31 7d 20 6d 79 28 6d 73 67 29 3b 20 6c 61 70 -1} my(msg); lap
af00: 70 65 6e 64 20 6d 79 6c 69 73 74 20 24 6d 79 28 pend mylist $my(
af10: 6d 73 67 29 3b 75 6e 73 65 74 20 6d 79 28 6d 73 msg);unset my(ms
af20: 67 29 0a 2b 20 20 74 65 73 74 6c 69 6e 6b 61 72 g).+ testlinkar
af30: 72 61 79 20 72 65 6d 6f 76 65 20 3a 3a 6d 79 28 ray remove ::my(
af40: 76 61 72 29 0a 2b 20 20 74 65 73 74 6c 69 6e 6b var).+ testlink
af50: 61 72 72 61 79 20 63 72 65 61 74 65 20 75 73 68 array create ush
af60: 6f 72 74 20 34 20 3a 3a 6d 79 28 76 61 72 29 0a ort 4 ::my(var).
af70: 2b 20 20 63 61 74 63 68 20 7b 73 65 74 20 3a 3a + catch {set ::
af80: 6d 79 28 76 61 72 29 20 7b 31 20 32 20 33 7d 7d my(var) {1 2 3}}
af90: 20 6d 79 28 6d 73 67 29 3b 20 6c 61 70 70 65 6e my(msg); lappen
afa0: 64 20 6d 79 6c 69 73 74 20 24 6d 79 28 6d 73 67 d mylist $my(msg
afb0: 29 3b 75 6e 73 65 74 20 6d 79 28 6d 73 67 29 0a );unset my(msg).
afc0: 2b 20 20 73 65 74 20 3a 3a 6d 79 28 76 61 72 29 + set ::my(var)
afd0: 20 7b 31 20 32 20 33 20 34 7d 0a 2b 20 20 6c 61 {1 2 3 4}.+ la
afe0: 70 70 65 6e 64 20 6d 79 6c 69 73 74 20 24 6d 79 ppend mylist $my
aff0: 28 76 61 72 29 0a 2b 20 20 74 65 73 74 6c 69 6e (var).+ testlin
b000: 6b 61 72 72 61 79 20 72 65 6d 6f 76 65 20 3a 3a karray remove ::
b010: 6d 79 28 76 61 72 29 0a 2b 20 20 74 65 73 74 6c my(var).+ testl
b020: 69 6e 6b 61 72 72 61 79 20 63 72 65 61 74 65 20 inkarray create
b030: 2d 72 20 75 73 68 6f 72 74 20 32 20 3a 3a 6d 79 -r ushort 2 ::my
b040: 28 76 61 72 29 0a 2b 20 20 63 61 74 63 68 20 7b (var).+ catch {
b050: 73 65 74 20 3a 3a 6d 79 28 76 61 72 29 20 7b 31 set ::my(var) {1
b060: 20 32 7d 7d 20 6d 79 28 6d 73 67 29 3b 20 6c 61 2}} my(msg); la
b070: 70 70 65 6e 64 20 6d 79 6c 69 73 74 20 24 6d 79 ppend mylist $my
b080: 28 6d 73 67 29 3b 75 6e 73 65 74 20 6d 79 28 6d (msg);unset my(m
b090: 73 67 29 0a 2b 20 20 74 65 73 74 6c 69 6e 6b 61 sg).+ testlinka
b0a0: 72 72 61 79 20 72 65 6d 6f 76 65 20 3a 3a 6d 79 rray remove ::my
b0b0: 28 76 61 72 29 3b 20 75 6e 73 65 74 20 6d 79 3b (var); unset my;
b0c0: 20 6a 6f 69 6e 20 24 6d 79 6c 69 73 74 20 22 5c join $mylist "\
b0d0: 6e 22 0a 2b 7d 20 7b 63 61 6e 27 74 20 73 65 74 n".+} {can't set
b0e0: 20 22 3a 3a 6d 79 28 76 61 72 29 22 3a 20 76 61 "::my(var)": va
b0f0: 72 69 61 62 6c 65 20 6d 75 73 74 20 68 61 76 65 riable must have
b100: 20 75 6e 73 69 67 6e 65 64 20 73 68 6f 72 74 20 unsigned short
b110: 76 61 6c 75 65 0a 2b 31 32 30 0a 2b 63 61 6e 27 value.+120.+can'
b120: 74 20 73 65 74 20 22 3a 3a 6d 79 28 76 61 72 29 t set "::my(var)
b130: 22 3a 20 76 61 72 69 61 62 6c 65 20 6d 75 73 74 ": variable must
b140: 20 68 61 76 65 20 75 6e 73 69 67 6e 65 64 20 73 have unsigned s
b150: 68 6f 72 74 20 76 61 6c 75 65 0a 2b 63 61 6e 27 hort value.+can'
b160: 74 20 73 65 74 20 22 3a 3a 6d 79 28 76 61 72 29 t set "::my(var)
b170: 22 3a 20 76 61 72 69 61 62 6c 65 20 6d 75 73 74 ": variable must
b180: 20 68 61 76 65 20 75 6e 73 69 67 6e 65 64 20 73 have unsigned s
b190: 68 6f 72 74 20 76 61 6c 75 65 0a 2b 63 61 6e 27 hort value.+can'
b1a0: 74 20 73 65 74 20 22 3a 3a 6d 79 28 76 61 72 29 t set "::my(var)
b1b0: 22 3a 20 77 72 6f 6e 67 20 64 69 6d 65 6e 73 69 ": wrong dimensi
b1c0: 6f 6e 0a 2b 31 20 32 20 33 20 34 0a 2b 63 61 6e on.+1 2 3 4.+can
b1d0: 27 74 20 73 65 74 20 22 3a 3a 6d 79 28 76 61 72 't set "::my(var
b1e0: 29 22 3a 20 6c 69 6e 6b 65 64 20 76 61 72 69 61 )": linked varia
b1f0: 62 6c 65 20 69 73 20 72 65 61 64 2d 6f 6e 6c 79 ble is read-only
b200: 7d 0a 2b 74 65 73 74 20 6c 69 6e 6b 2d 31 35 2e }.+test link-15.
b210: 31 20 7b 6c 69 6e 6b 61 72 72 61 79 20 69 6e 74 1 {linkarray int
b220: 7d 20 7b 0a 2b 20 20 73 65 74 20 6d 79 6c 69 73 } {.+ set mylis
b230: 74 20 5b 6c 69 73 74 5d 0a 2b 20 20 74 65 73 74 t [list].+ test
b240: 6c 69 6e 6b 61 72 72 61 79 20 63 72 65 61 74 65 linkarray create
b250: 20 69 6e 74 20 31 20 3a 3a 6d 79 28 76 61 72 29 int 1 ::my(var)
b260: 0a 2b 20 20 63 61 74 63 68 20 7b 73 65 74 20 3a .+ catch {set :
b270: 3a 6d 79 28 76 61 72 29 20 78 7d 20 6d 79 28 6d :my(var) x} my(m
b280: 73 67 29 3b 20 6c 61 70 70 65 6e 64 20 6d 79 6c sg); lappend myl
b290: 69 73 74 20 24 6d 79 28 6d 73 67 29 3b 75 6e 73 ist $my(msg);uns
b2a0: 65 74 20 6d 79 28 6d 73 67 29 0a 2b 20 20 6c 61 et my(msg).+ la
b2b0: 70 70 65 6e 64 20 6d 79 6c 69 73 74 20 5b 73 65 ppend mylist [se
b2c0: 74 20 3a 3a 6d 79 28 76 61 72 29 20 31 32 30 5d t ::my(var) 120]
b2d0: 0a 2b 20 20 63 61 74 63 68 20 7b 73 65 74 20 3a .+ catch {set :
b2e0: 3a 6d 79 28 76 61 72 29 20 31 65 33 7d 20 6d 79 :my(var) 1e3} my
b2f0: 28 6d 73 67 29 3b 20 6c 61 70 70 65 6e 64 20 6d (msg); lappend m
b300: 79 6c 69 73 74 20 24 6d 79 28 6d 73 67 29 3b 75 ylist $my(msg);u
b310: 6e 73 65 74 20 6d 79 28 6d 73 67 29 0a 2b 20 20 nset my(msg).+
b320: 74 65 73 74 6c 69 6e 6b 61 72 72 61 79 20 72 65 testlinkarray re
b330: 6d 6f 76 65 20 3a 3a 6d 79 28 76 61 72 29 0a 2b move ::my(var).+
b340: 20 20 74 65 73 74 6c 69 6e 6b 61 72 72 61 79 20 testlinkarray
b350: 63 72 65 61 74 65 20 69 6e 74 20 34 20 3a 3a 6d create int 4 ::m
b360: 79 28 76 61 72 29 0a 2b 20 20 63 61 74 63 68 20 y(var).+ catch
b370: 7b 73 65 74 20 3a 3a 6d 79 28 76 61 72 29 20 7b {set ::my(var) {
b380: 31 20 32 20 33 7d 7d 20 6d 79 28 6d 73 67 29 3b 1 2 3}} my(msg);
b390: 20 6c 61 70 70 65 6e 64 20 6d 79 6c 69 73 74 20 lappend mylist
b3a0: 24 6d 79 28 6d 73 67 29 3b 75 6e 73 65 74 20 6d $my(msg);unset m
b3b0: 79 28 6d 73 67 29 0a 2b 20 20 73 65 74 20 3a 3a y(msg).+ set ::
b3c0: 6d 79 28 76 61 72 29 20 7b 31 20 32 20 33 20 34 my(var) {1 2 3 4
b3d0: 7d 0a 2b 20 20 6c 61 70 70 65 6e 64 20 6d 79 6c }.+ lappend myl
b3e0: 69 73 74 20 24 6d 79 28 76 61 72 29 0a 2b 20 20 ist $my(var).+
b3f0: 74 65 73 74 6c 69 6e 6b 61 72 72 61 79 20 72 65 testlinkarray re
b400: 6d 6f 76 65 20 3a 3a 6d 79 28 76 61 72 29 0a 2b move ::my(var).+
b410: 20 20 74 65 73 74 6c 69 6e 6b 61 72 72 61 79 20 testlinkarray
b420: 63 72 65 61 74 65 20 2d 72 20 69 6e 74 20 32 20 create -r int 2
b430: 3a 3a 6d 79 28 76 61 72 29 0a 2b 20 20 63 61 74 ::my(var).+ cat
b440: 63 68 20 7b 73 65 74 20 3a 3a 6d 79 28 76 61 72 ch {set ::my(var
b450: 29 20 7b 31 20 32 7d 7d 20 6d 79 28 6d 73 67 29 ) {1 2}} my(msg)
b460: 3b 20 6c 61 70 70 65 6e 64 20 6d 79 6c 69 73 74 ; lappend mylist
b470: 20 24 6d 79 28 6d 73 67 29 3b 75 6e 73 65 74 20 $my(msg);unset
b480: 6d 79 28 6d 73 67 29 0a 2b 20 20 74 65 73 74 6c my(msg).+ testl
b490: 69 6e 6b 61 72 72 61 79 20 72 65 6d 6f 76 65 20 inkarray remove
b4a0: 3a 3a 6d 79 28 76 61 72 29 3b 20 75 6e 73 65 74 ::my(var); unset
b4b0: 20 6d 79 3b 20 6a 6f 69 6e 20 24 6d 79 6c 69 73 my; join $mylis
b4c0: 74 20 22 5c 6e 22 0a 2b 7d 20 7b 63 61 6e 27 74 t "\n".+} {can't
b4d0: 20 73 65 74 20 22 3a 3a 6d 79 28 76 61 72 29 22 set "::my(var)"
b4e0: 3a 20 76 61 72 69 61 62 6c 65 20 6d 75 73 74 20 : variable must
b4f0: 68 61 76 65 20 69 6e 74 65 67 65 72 20 76 61 6c have integer val
b500: 75 65 0a 2b 31 32 30 0a 2b 63 61 6e 27 74 20 73 ue.+120.+can't s
b510: 65 74 20 22 3a 3a 6d 79 28 76 61 72 29 22 3a 20 et "::my(var)":
b520: 76 61 72 69 61 62 6c 65 20 6d 75 73 74 20 68 61 variable must ha
b530: 76 65 20 69 6e 74 65 67 65 72 20 76 61 6c 75 65 ve integer value
b540: 0a 2b 63 61 6e 27 74 20 73 65 74 20 22 3a 3a 6d .+can't set "::m
b550: 79 28 76 61 72 29 22 3a 20 77 72 6f 6e 67 20 64 y(var)": wrong d
b560: 69 6d 65 6e 73 69 6f 6e 0a 2b 31 20 32 20 33 20 imension.+1 2 3
b570: 34 0a 2b 63 61 6e 27 74 20 73 65 74 20 22 3a 3a 4.+can't set "::
b580: 6d 79 28 76 61 72 29 22 3a 20 6c 69 6e 6b 65 64 my(var)": linked
b590: 20 76 61 72 69 61 62 6c 65 20 69 73 20 72 65 61 variable is rea
b5a0: 64 2d 6f 6e 6c 79 7d 0a 2b 74 65 73 74 20 6c 69 d-only}.+test li
b5b0: 6e 6b 2d 31 36 2e 31 20 7b 6c 69 6e 6b 61 72 72 nk-16.1 {linkarr
b5c0: 61 79 20 75 6e 73 69 67 6e 65 64 20 69 6e 74 7d ay unsigned int}
b5d0: 20 7b 0a 2b 20 20 73 65 74 20 6d 79 6c 69 73 74 {.+ set mylist
b5e0: 20 5b 6c 69 73 74 5d 0a 2b 20 20 74 65 73 74 6c [list].+ testl
b5f0: 69 6e 6b 61 72 72 61 79 20 63 72 65 61 74 65 20 inkarray create
b600: 75 69 6e 74 20 31 20 3a 3a 6d 79 28 76 61 72 29 uint 1 ::my(var)
b610: 0a 2b 20 20 63 61 74 63 68 20 7b 73 65 74 20 3a .+ catch {set :
b620: 3a 6d 79 28 76 61 72 29 20 78 7d 20 6d 79 28 6d :my(var) x} my(m
b630: 73 67 29 3b 20 6c 61 70 70 65 6e 64 20 6d 79 6c sg); lappend myl
b640: 69 73 74 20 24 6d 79 28 6d 73 67 29 3b 75 6e 73 ist $my(msg);uns
b650: 65 74 20 6d 79 28 6d 73 67 29 0a 2b 20 20 6c 61 et my(msg).+ la
b660: 70 70 65 6e 64 20 6d 79 6c 69 73 74 20 5b 73 65 ppend mylist [se
b670: 74 20 3a 3a 6d 79 28 76 61 72 29 20 31 32 30 5d t ::my(var) 120]
b680: 0a 2b 20 20 63 61 74 63 68 20 7b 73 65 74 20 3a .+ catch {set :
b690: 3a 6d 79 28 76 61 72 29 20 31 65 33 33 7d 20 6d :my(var) 1e33} m
b6a0: 79 28 6d 73 67 29 3b 20 6c 61 70 70 65 6e 64 20 y(msg); lappend
b6b0: 6d 79 6c 69 73 74 20 24 6d 79 28 6d 73 67 29 3b mylist $my(msg);
b6c0: 75 6e 73 65 74 20 6d 79 28 6d 73 67 29 0a 2b 20 unset my(msg).+
b6d0: 20 63 61 74 63 68 20 7b 73 65 74 20 3a 3a 6d 79 catch {set ::my
b6e0: 28 76 61 72 29 20 2d 31 7d 20 6d 79 28 6d 73 67 (var) -1} my(msg
b6f0: 29 3b 20 6c 61 70 70 65 6e 64 20 6d 79 6c 69 73 ); lappend mylis
b700: 74 20 24 6d 79 28 6d 73 67 29 3b 75 6e 73 65 74 t $my(msg);unset
b710: 20 6d 79 28 6d 73 67 29 0a 2b 20 20 74 65 73 74 my(msg).+ test
b720: 6c 69 6e 6b 61 72 72 61 79 20 72 65 6d 6f 76 65 linkarray remove
b730: 20 3a 3a 6d 79 28 76 61 72 29 0a 2b 20 20 74 65 ::my(var).+ te
b740: 73 74 6c 69 6e 6b 61 72 72 61 79 20 63 72 65 61 stlinkarray crea
b750: 74 65 20 75 69 6e 74 20 34 20 3a 3a 6d 79 28 76 te uint 4 ::my(v
b760: 61 72 29 0a 2b 20 20 63 61 74 63 68 20 7b 73 65 ar).+ catch {se
b770: 74 20 3a 3a 6d 79 28 76 61 72 29 20 7b 31 20 32 t ::my(var) {1 2
b780: 20 33 7d 7d 20 6d 79 28 6d 73 67 29 3b 20 6c 61 3}} my(msg); la
b790: 70 70 65 6e 64 20 6d 79 6c 69 73 74 20 24 6d 79 ppend mylist $my
b7a0: 28 6d 73 67 29 3b 75 6e 73 65 74 20 6d 79 28 6d (msg);unset my(m
b7b0: 73 67 29 0a 2b 20 20 73 65 74 20 3a 3a 6d 79 28 sg).+ set ::my(
b7c0: 76 61 72 29 20 7b 31 20 32 20 33 20 34 7d 0a 2b var) {1 2 3 4}.+
b7d0: 20 20 6c 61 70 70 65 6e 64 20 6d 79 6c 69 73 74 lappend mylist
b7e0: 20 24 6d 79 28 76 61 72 29 0a 2b 20 20 74 65 73 $my(var).+ tes
b7f0: 74 6c 69 6e 6b 61 72 72 61 79 20 72 65 6d 6f 76 tlinkarray remov
b800: 65 20 3a 3a 6d 79 28 76 61 72 29 0a 2b 20 20 74 e ::my(var).+ t
b810: 65 73 74 6c 69 6e 6b 61 72 72 61 79 20 63 72 65 estlinkarray cre
b820: 61 74 65 20 2d 72 20 75 69 6e 74 20 32 20 3a 3a ate -r uint 2 ::
b830: 6d 79 28 76 61 72 29 0a 2b 20 20 63 61 74 63 68 my(var).+ catch
b840: 20 7b 73 65 74 20 3a 3a 6d 79 28 76 61 72 29 20 {set ::my(var)
b850: 7b 31 20 32 7d 7d 20 6d 79 28 6d 73 67 29 3b 20 {1 2}} my(msg);
b860: 6c 61 70 70 65 6e 64 20 6d 79 6c 69 73 74 20 24 lappend mylist $
b870: 6d 79 28 6d 73 67 29 3b 75 6e 73 65 74 20 6d 79 my(msg);unset my
b880: 28 6d 73 67 29 0a 2b 20 20 74 65 73 74 6c 69 6e (msg).+ testlin
b890: 6b 61 72 72 61 79 20 72 65 6d 6f 76 65 20 3a 3a karray remove ::
b8a0: 6d 79 28 76 61 72 29 3b 20 75 6e 73 65 74 20 6d my(var); unset m
b8b0: 79 3b 20 6a 6f 69 6e 20 24 6d 79 6c 69 73 74 20 y; join $mylist
b8c0: 22 5c 6e 22 0a 2b 7d 20 7b 63 61 6e 27 74 20 73 "\n".+} {can't s
b8d0: 65 74 20 22 3a 3a 6d 79 28 76 61 72 29 22 3a 20 et "::my(var)":
b8e0: 76 61 72 69 61 62 6c 65 20 6d 75 73 74 20 68 61 variable must ha
b8f0: 76 65 20 75 6e 73 69 67 6e 65 64 20 69 6e 74 20 ve unsigned int
b900: 76 61 6c 75 65 0a 2b 31 32 30 0a 2b 63 61 6e 27 value.+120.+can'
b910: 74 20 73 65 74 20 22 3a 3a 6d 79 28 76 61 72 29 t set "::my(var)
b920: 22 3a 20 76 61 72 69 61 62 6c 65 20 6d 75 73 74 ": variable must
b930: 20 68 61 76 65 20 75 6e 73 69 67 6e 65 64 20 69 have unsigned i
b940: 6e 74 20 76 61 6c 75 65 0a 2b 63 61 6e 27 74 20 nt value.+can't
b950: 73 65 74 20 22 3a 3a 6d 79 28 76 61 72 29 22 3a set "::my(var)":
b960: 20 76 61 72 69 61 62 6c 65 20 6d 75 73 74 20 68 variable must h
b970: 61 76 65 20 75 6e 73 69 67 6e 65 64 20 69 6e 74 ave unsigned int
b980: 20 76 61 6c 75 65 0a 2b 63 61 6e 27 74 20 73 65 value.+can't se
b990: 74 20 22 3a 3a 6d 79 28 76 61 72 29 22 3a 20 77 t "::my(var)": w
b9a0: 72 6f 6e 67 20 64 69 6d 65 6e 73 69 6f 6e 0a 2b rong dimension.+
b9b0: 31 20 32 20 33 20 34 0a 2b 63 61 6e 27 74 20 73 1 2 3 4.+can't s
b9c0: 65 74 20 22 3a 3a 6d 79 28 76 61 72 29 22 3a 20 et "::my(var)":
b9d0: 6c 69 6e 6b 65 64 20 76 61 72 69 61 62 6c 65 20 linked variable
b9e0: 69 73 20 72 65 61 64 2d 6f 6e 6c 79 7d 0a 2b 74 is read-only}.+t
b9f0: 65 73 74 20 6c 69 6e 6b 2d 31 37 2e 31 20 7b 6c est link-17.1 {l
ba00: 69 6e 6b 61 72 72 61 79 20 6c 6f 6e 67 7d 20 7b inkarray long} {
ba10: 0a 2b 20 20 73 65 74 20 6d 79 6c 69 73 74 20 5b .+ set mylist [
ba20: 6c 69 73 74 5d 0a 2b 20 20 74 65 73 74 6c 69 6e list].+ testlin
ba30: 6b 61 72 72 61 79 20 63 72 65 61 74 65 20 6c 6f karray create lo
ba40: 6e 67 20 31 20 3a 3a 6d 79 28 76 61 72 29 0a 2b ng 1 ::my(var).+
ba50: 20 20 63 61 74 63 68 20 7b 73 65 74 20 3a 3a 6d catch {set ::m
ba60: 79 28 76 61 72 29 20 78 7d 20 6d 79 28 6d 73 67 y(var) x} my(msg
ba70: 29 3b 20 6c 61 70 70 65 6e 64 20 6d 79 6c 69 73 ); lappend mylis
ba80: 74 20 24 6d 79 28 6d 73 67 29 3b 75 6e 73 65 74 t $my(msg);unset
ba90: 20 6d 79 28 6d 73 67 29 0a 2b 20 20 6c 61 70 70 my(msg).+ lapp
baa0: 65 6e 64 20 6d 79 6c 69 73 74 20 5b 73 65 74 20 end mylist [set
bab0: 3a 3a 6d 79 28 76 61 72 29 20 31 32 30 5d 0a 2b ::my(var) 120].+
bac0: 20 20 63 61 74 63 68 20 7b 73 65 74 20 3a 3a 6d catch {set ::m
bad0: 79 28 76 61 72 29 20 31 65 33 33 7d 20 6d 79 28 y(var) 1e33} my(
bae0: 6d 73 67 29 3b 20 6c 61 70 70 65 6e 64 20 6d 79 msg); lappend my
baf0: 6c 69 73 74 20 24 6d 79 28 6d 73 67 29 3b 75 6e list $my(msg);un
bb00: 73 65 74 20 6d 79 28 6d 73 67 29 0a 2b 20 20 74 set my(msg).+ t
bb10: 65 73 74 6c 69 6e 6b 61 72 72 61 79 20 72 65 6d estlinkarray rem
bb20: 6f 76 65 20 3a 3a 6d 79 28 76 61 72 29 0a 2b 20 ove ::my(var).+
bb30: 20 74 65 73 74 6c 69 6e 6b 61 72 72 61 79 20 63 testlinkarray c
bb40: 72 65 61 74 65 20 6c 6f 6e 67 20 34 20 3a 3a 6d reate long 4 ::m
bb50: 79 28 76 61 72 29 0a 2b 20 20 63 61 74 63 68 20 y(var).+ catch
bb60: 7b 73 65 74 20 3a 3a 6d 79 28 76 61 72 29 20 7b {set ::my(var) {
bb70: 31 20 32 20 33 7d 7d 20 6d 79 28 6d 73 67 29 3b 1 2 3}} my(msg);
bb80: 20 6c 61 70 70 65 6e 64 20 6d 79 6c 69 73 74 20 lappend mylist
bb90: 24 6d 79 28 6d 73 67 29 3b 75 6e 73 65 74 20 6d $my(msg);unset m
bba0: 79 28 6d 73 67 29 0a 2b 20 20 73 65 74 20 3a 3a y(msg).+ set ::
bbb0: 6d 79 28 76 61 72 29 20 7b 31 20 32 20 33 20 34 my(var) {1 2 3 4
bbc0: 7d 0a 2b 20 20 6c 61 70 70 65 6e 64 20 6d 79 6c }.+ lappend myl
bbd0: 69 73 74 20 24 6d 79 28 76 61 72 29 0a 2b 20 20 ist $my(var).+
bbe0: 74 65 73 74 6c 69 6e 6b 61 72 72 61 79 20 72 65 testlinkarray re
bbf0: 6d 6f 76 65 20 3a 3a 6d 79 28 76 61 72 29 0a 2b move ::my(var).+
bc00: 20 20 74 65 73 74 6c 69 6e 6b 61 72 72 61 79 20 testlinkarray
bc10: 63 72 65 61 74 65 20 2d 72 20 6c 6f 6e 67 20 32 create -r long 2
bc20: 20 3a 3a 6d 79 28 76 61 72 29 0a 2b 20 20 63 61 ::my(var).+ ca
bc30: 74 63 68 20 7b 73 65 74 20 3a 3a 6d 79 28 76 61 tch {set ::my(va
bc40: 72 29 20 7b 31 20 32 7d 7d 20 6d 79 28 6d 73 67 r) {1 2}} my(msg
bc50: 29 3b 20 6c 61 70 70 65 6e 64 20 6d 79 6c 69 73 ); lappend mylis
bc60: 74 20 24 6d 79 28 6d 73 67 29 3b 75 6e 73 65 74 t $my(msg);unset
bc70: 20 6d 79 28 6d 73 67 29 0a 2b 20 20 74 65 73 74 my(msg).+ test
bc80: 6c 69 6e 6b 61 72 72 61 79 20 72 65 6d 6f 76 65 linkarray remove
bc90: 20 3a 3a 6d 79 28 76 61 72 29 3b 20 75 6e 73 65 ::my(var); unse
bca0: 74 20 6d 79 3b 20 6a 6f 69 6e 20 24 6d 79 6c 69 t my; join $myli
bcb0: 73 74 20 22 5c 6e 22 0a 2b 7d 20 7b 63 61 6e 27 st "\n".+} {can'
bcc0: 74 20 73 65 74 20 22 3a 3a 6d 79 28 76 61 72 29 t set "::my(var)
bcd0: 22 3a 20 76 61 72 69 61 62 6c 65 20 6d 75 73 74 ": variable must
bce0: 20 68 61 76 65 20 6c 6f 6e 67 20 76 61 6c 75 65 have long value
bcf0: 0a 2b 31 32 30 0a 2b 63 61 6e 27 74 20 73 65 74 .+120.+can't set
bd00: 20 22 3a 3a 6d 79 28 76 61 72 29 22 3a 20 76 61 "::my(var)": va
bd10: 72 69 61 62 6c 65 20 6d 75 73 74 20 68 61 76 65 riable must have
bd20: 20 6c 6f 6e 67 20 76 61 6c 75 65 0a 2b 63 61 6e long value.+can
bd30: 27 74 20 73 65 74 20 22 3a 3a 6d 79 28 76 61 72 't set "::my(var
bd40: 29 22 3a 20 77 72 6f 6e 67 20 64 69 6d 65 6e 73 )": wrong dimens
bd50: 69 6f 6e 0a 2b 31 20 32 20 33 20 34 0a 2b 63 61 ion.+1 2 3 4.+ca
bd60: 6e 27 74 20 73 65 74 20 22 3a 3a 6d 79 28 76 61 n't set "::my(va
bd70: 72 29 22 3a 20 6c 69 6e 6b 65 64 20 76 61 72 69 r)": linked vari
bd80: 61 62 6c 65 20 69 73 20 72 65 61 64 2d 6f 6e 6c able is read-onl
bd90: 79 7d 0a 2b 74 65 73 74 20 6c 69 6e 6b 2d 31 38 y}.+test link-18
bda0: 2e 31 20 7b 6c 69 6e 6b 61 72 72 61 79 20 75 6e .1 {linkarray un
bdb0: 73 69 67 6e 65 64 20 6c 6f 6e 67 7d 20 7b 0a 2b signed long} {.+
bdc0: 20 20 73 65 74 20 6d 79 6c 69 73 74 20 5b 6c 69 set mylist [li
bdd0: 73 74 5d 0a 2b 20 20 74 65 73 74 6c 69 6e 6b 61 st].+ testlinka
bde0: 72 72 61 79 20 63 72 65 61 74 65 20 75 6c 6f 6e rray create ulon
bdf0: 67 20 31 20 3a 3a 6d 79 28 76 61 72 29 0a 2b 20 g 1 ::my(var).+
be00: 20 63 61 74 63 68 20 7b 73 65 74 20 3a 3a 6d 79 catch {set ::my
be10: 28 76 61 72 29 20 78 7d 20 6d 79 28 6d 73 67 29 (var) x} my(msg)
be20: 3b 20 6c 61 70 70 65 6e 64 20 6d 79 6c 69 73 74 ; lappend mylist
be30: 20 24 6d 79 28 6d 73 67 29 3b 75 6e 73 65 74 20 $my(msg);unset
be40: 6d 79 28 6d 73 67 29 0a 2b 20 20 6c 61 70 70 65 my(msg).+ lappe
be50: 6e 64 20 6d 79 6c 69 73 74 20 5b 73 65 74 20 3a nd mylist [set :
be60: 3a 6d 79 28 76 61 72 29 20 31 32 30 5d 0a 2b 20 :my(var) 120].+
be70: 20 63 61 74 63 68 20 7b 73 65 74 20 3a 3a 6d 79 catch {set ::my
be80: 28 76 61 72 29 20 31 65 33 33 7d 20 6d 79 28 6d (var) 1e33} my(m
be90: 73 67 29 3b 20 6c 61 70 70 65 6e 64 20 6d 79 6c sg); lappend myl
bea0: 69 73 74 20 24 6d 79 28 6d 73 67 29 3b 75 6e 73 ist $my(msg);uns
beb0: 65 74 20 6d 79 28 6d 73 67 29 0a 2b 20 20 63 61 et my(msg).+ ca
bec0: 74 63 68 20 7b 73 65 74 20 3a 3a 6d 79 28 76 61 tch {set ::my(va
bed0: 72 29 20 2d 31 7d 20 6d 79 28 6d 73 67 29 3b 20 r) -1} my(msg);
bee0: 6c 61 70 70 65 6e 64 20 6d 79 6c 69 73 74 20 24 lappend mylist $
bef0: 6d 79 28 6d 73 67 29 3b 75 6e 73 65 74 20 6d 79 my(msg);unset my
bf00: 28 6d 73 67 29 0a 2b 20 20 74 65 73 74 6c 69 6e (msg).+ testlin
bf10: 6b 61 72 72 61 79 20 72 65 6d 6f 76 65 20 3a 3a karray remove ::
bf20: 6d 79 28 76 61 72 29 0a 2b 20 20 74 65 73 74 6c my(var).+ testl
bf30: 69 6e 6b 61 72 72 61 79 20 63 72 65 61 74 65 20 inkarray create
bf40: 75 6c 6f 6e 67 20 34 20 3a 3a 6d 79 28 76 61 72 ulong 4 ::my(var
bf50: 29 0a 2b 20 20 63 61 74 63 68 20 7b 73 65 74 20 ).+ catch {set
bf60: 3a 3a 6d 79 28 76 61 72 29 20 7b 31 20 32 20 33 ::my(var) {1 2 3
bf70: 7d 7d 20 6d 79 28 6d 73 67 29 3b 20 6c 61 70 70 }} my(msg); lapp
bf80: 65 6e 64 20 6d 79 6c 69 73 74 20 24 6d 79 28 6d end mylist $my(m
bf90: 73 67 29 3b 75 6e 73 65 74 20 6d 79 28 6d 73 67 sg);unset my(msg
bfa0: 29 0a 2b 20 20 73 65 74 20 3a 3a 6d 79 28 76 61 ).+ set ::my(va
bfb0: 72 29 20 7b 31 20 32 20 33 20 34 7d 0a 2b 20 20 r) {1 2 3 4}.+
bfc0: 6c 61 70 70 65 6e 64 20 6d 79 6c 69 73 74 20 24 lappend mylist $
bfd0: 6d 79 28 76 61 72 29 0a 2b 20 20 74 65 73 74 6c my(var).+ testl
bfe0: 69 6e 6b 61 72 72 61 79 20 72 65 6d 6f 76 65 20 inkarray remove
bff0: 3a 3a 6d 79 28 76 61 72 29 0a 2b 20 20 74 65 73 ::my(var).+ tes
c000: 74 6c 69 6e 6b 61 72 72 61 79 20 63 72 65 61 74 tlinkarray creat
c010: 65 20 2d 72 20 75 6c 6f 6e 67 20 32 20 3a 3a 6d e -r ulong 2 ::m
c020: 79 28 76 61 72 29 0a 2b 20 20 63 61 74 63 68 20 y(var).+ catch
c030: 7b 73 65 74 20 3a 3a 6d 79 28 76 61 72 29 20 7b {set ::my(var) {
c040: 31 20 32 7d 7d 20 6d 79 28 6d 73 67 29 3b 20 6c 1 2}} my(msg); l
c050: 61 70 70 65 6e 64 20 6d 79 6c 69 73 74 20 24 6d append mylist $m
c060: 79 28 6d 73 67 29 3b 75 6e 73 65 74 20 6d 79 28 y(msg);unset my(
c070: 6d 73 67 29 0a 2b 20 20 74 65 73 74 6c 69 6e 6b msg).+ testlink
c080: 61 72 72 61 79 20 72 65 6d 6f 76 65 20 3a 3a 6d array remove ::m
c090: 79 28 76 61 72 29 3b 20 75 6e 73 65 74 20 6d 79 y(var); unset my
c0a0: 3b 20 6a 6f 69 6e 20 24 6d 79 6c 69 73 74 20 22 ; join $mylist "
c0b0: 5c 6e 22 0a 2b 7d 20 7b 63 61 6e 27 74 20 73 65 \n".+} {can't se
c0c0: 74 20 22 3a 3a 6d 79 28 76 61 72 29 22 3a 20 76 t "::my(var)": v
c0d0: 61 72 69 61 62 6c 65 20 6d 75 73 74 20 68 61 76 ariable must hav
c0e0: 65 20 75 6e 73 69 67 6e 65 64 20 6c 6f 6e 67 20 e unsigned long
c0f0: 76 61 6c 75 65 0a 2b 31 32 30 0a 2b 63 61 6e 27 value.+120.+can'
c100: 74 20 73 65 74 20 22 3a 3a 6d 79 28 76 61 72 29 t set "::my(var)
c110: 22 3a 20 76 61 72 69 61 62 6c 65 20 6d 75 73 74 ": variable must
c120: 20 68 61 76 65 20 75 6e 73 69 67 6e 65 64 20 6c have unsigned l
c130: 6f 6e 67 20 76 61 6c 75 65 0a 2b 63 61 6e 27 74 ong value.+can't
c140: 20 73 65 74 20 22 3a 3a 6d 79 28 76 61 72 29 22 set "::my(var)"
c150: 3a 20 76 61 72 69 61 62 6c 65 20 6d 75 73 74 20 : variable must
c160: 68 61 76 65 20 75 6e 73 69 67 6e 65 64 20 6c 6f have unsigned lo
c170: 6e 67 20 76 61 6c 75 65 0a 2b 63 61 6e 27 74 20 ng value.+can't
c180: 73 65 74 20 22 3a 3a 6d 79 28 76 61 72 29 22 3a set "::my(var)":
c190: 20 77 72 6f 6e 67 20 64 69 6d 65 6e 73 69 6f 6e wrong dimension
c1a0: 0a 2b 31 20 32 20 33 20 34 0a 2b 63 61 6e 27 74 .+1 2 3 4.+can't
c1b0: 20 73 65 74 20 22 3a 3a 6d 79 28 76 61 72 29 22 set "::my(var)"
c1c0: 3a 20 6c 69 6e 6b 65 64 20 76 61 72 69 61 62 6c : linked variabl
c1d0: 65 20 69 73 20 72 65 61 64 2d 6f 6e 6c 79 7d 0a e is read-only}.
c1e0: 2b 74 65 73 74 20 6c 69 6e 6b 2d 31 39 2e 31 20 +test link-19.1
c1f0: 7b 6c 69 6e 6b 61 72 72 61 79 20 77 69 64 65 7d {linkarray wide}
c200: 20 7b 0a 2b 20 20 73 65 74 20 6d 79 6c 69 73 74 {.+ set mylist
c210: 20 5b 6c 69 73 74 5d 0a 2b 20 20 74 65 73 74 6c [list].+ testl
c220: 69 6e 6b 61 72 72 61 79 20 63 72 65 61 74 65 20 inkarray create
c230: 77 69 64 65 20 31 20 3a 3a 6d 79 28 76 61 72 29 wide 1 ::my(var)
c240: 0a 2b 20 20 63 61 74 63 68 20 7b 73 65 74 20 3a .+ catch {set :
c250: 3a 6d 79 28 76 61 72 29 20 78 7d 20 6d 79 28 6d :my(var) x} my(m
c260: 73 67 29 3b 20 6c 61 70 70 65 6e 64 20 6d 79 6c sg); lappend myl
c270: 69 73 74 20 24 6d 79 28 6d 73 67 29 3b 75 6e 73 ist $my(msg);uns
c280: 65 74 20 6d 79 28 6d 73 67 29 0a 2b 20 20 6c 61 et my(msg).+ la
c290: 70 70 65 6e 64 20 6d 79 6c 69 73 74 20 5b 73 65 ppend mylist [se
c2a0: 74 20 3a 3a 6d 79 28 76 61 72 29 20 31 32 30 5d t ::my(var) 120]
c2b0: 0a 2b 20 20 63 61 74 63 68 20 7b 73 65 74 20 3a .+ catch {set :
c2c0: 3a 6d 79 28 76 61 72 29 20 31 65 33 33 7d 20 6d :my(var) 1e33} m
c2d0: 79 28 6d 73 67 29 3b 20 6c 61 70 70 65 6e 64 20 y(msg); lappend
c2e0: 6d 79 6c 69 73 74 20 24 6d 79 28 6d 73 67 29 3b mylist $my(msg);
c2f0: 75 6e 73 65 74 20 6d 79 28 6d 73 67 29 0a 2b 20 unset my(msg).+
c300: 20 74 65 73 74 6c 69 6e 6b 61 72 72 61 79 20 72 testlinkarray r
c310: 65 6d 6f 76 65 20 3a 3a 6d 79 28 76 61 72 29 0a emove ::my(var).
c320: 2b 20 20 74 65 73 74 6c 69 6e 6b 61 72 72 61 79 + testlinkarray
c330: 20 63 72 65 61 74 65 20 77 69 64 65 20 34 20 3a create wide 4 :
c340: 3a 6d 79 28 76 61 72 29 0a 2b 20 20 63 61 74 63 :my(var).+ catc
c350: 68 20 7b 73 65 74 20 3a 3a 6d 79 28 76 61 72 29 h {set ::my(var)
c360: 20 7b 31 20 32 20 33 7d 7d 20 6d 79 28 6d 73 67 {1 2 3}} my(msg
c370: 29 3b 20 6c 61 70 70 65 6e 64 20 6d 79 6c 69 73 ); lappend mylis
c380: 74 20 24 6d 79 28 6d 73 67 29 3b 75 6e 73 65 74 t $my(msg);unset
c390: 20 6d 79 28 6d 73 67 29 0a 2b 20 20 73 65 74 20 my(msg).+ set
c3a0: 3a 3a 6d 79 28 76 61 72 29 20 7b 31 20 32 20 33 ::my(var) {1 2 3
c3b0: 20 34 7d 0a 2b 20 20 6c 61 70 70 65 6e 64 20 6d 4}.+ lappend m
c3c0: 79 6c 69 73 74 20 24 6d 79 28 76 61 72 29 0a 2b ylist $my(var).+
c3d0: 20 20 74 65 73 74 6c 69 6e 6b 61 72 72 61 79 20 testlinkarray
c3e0: 72 65 6d 6f 76 65 20 3a 3a 6d 79 28 76 61 72 29 remove ::my(var)
c3f0: 0a 2b 20 20 74 65 73 74 6c 69 6e 6b 61 72 72 61 .+ testlinkarra
c400: 79 20 63 72 65 61 74 65 20 2d 72 20 77 69 64 65 y create -r wide
c410: 20 32 20 3a 3a 6d 79 28 76 61 72 29 0a 2b 20 20 2 ::my(var).+
c420: 63 61 74 63 68 20 7b 73 65 74 20 3a 3a 6d 79 28 catch {set ::my(
c430: 76 61 72 29 20 7b 31 20 32 7d 7d 20 6d 79 28 6d var) {1 2}} my(m
c440: 73 67 29 3b 20 6c 61 70 70 65 6e 64 20 6d 79 6c sg); lappend myl
c450: 69 73 74 20 24 6d 79 28 6d 73 67 29 3b 75 6e 73 ist $my(msg);uns
c460: 65 74 20 6d 79 28 6d 73 67 29 0a 2b 20 20 74 65 et my(msg).+ te
c470: 73 74 6c 69 6e 6b 61 72 72 61 79 20 72 65 6d 6f stlinkarray remo
c480: 76 65 20 3a 3a 6d 79 28 76 61 72 29 3b 20 75 6e ve ::my(var); un
c490: 73 65 74 20 6d 79 3b 20 6a 6f 69 6e 20 24 6d 79 set my; join $my
c4a0: 6c 69 73 74 20 22 5c 6e 22 0a 2b 7d 20 7b 63 61 list "\n".+} {ca
c4b0: 6e 27 74 20 73 65 74 20 22 3a 3a 6d 79 28 76 61 n't set "::my(va
c4c0: 72 29 22 3a 20 76 61 72 69 61 62 6c 65 20 6d 75 r)": variable mu
c4d0: 73 74 20 68 61 76 65 20 77 69 64 65 20 69 6e 74 st have wide int
c4e0: 65 67 65 72 20 76 61 6c 75 65 0a 2b 31 32 30 0a eger value.+120.
c4f0: 2b 63 61 6e 27 74 20 73 65 74 20 22 3a 3a 6d 79 +can't set "::my
c500: 28 76 61 72 29 22 3a 20 76 61 72 69 61 62 6c 65 (var)": variable
c510: 20 6d 75 73 74 20 68 61 76 65 20 77 69 64 65 20 must have wide
c520: 69 6e 74 65 67 65 72 20 76 61 6c 75 65 0a 2b 63 integer value.+c
c530: 61 6e 27 74 20 73 65 74 20 22 3a 3a 6d 79 28 76 an't set "::my(v
c540: 61 72 29 22 3a 20 77 72 6f 6e 67 20 64 69 6d 65 ar)": wrong dime
c550: 6e 73 69 6f 6e 0a 2b 31 20 32 20 33 20 34 0a 2b nsion.+1 2 3 4.+
c560: 63 61 6e 27 74 20 73 65 74 20 22 3a 3a 6d 79 28 can't set "::my(
c570: 76 61 72 29 22 3a 20 6c 69 6e 6b 65 64 20 76 61 var)": linked va
c580: 72 69 61 62 6c 65 20 69 73 20 72 65 61 64 2d 6f riable is read-o
c590: 6e 6c 79 7d 0a 2b 74 65 73 74 20 6c 69 6e 6b 2d nly}.+test link-
c5a0: 32 30 2e 31 20 7b 6c 69 6e 6b 61 72 72 61 79 20 20.1 {linkarray
c5b0: 75 6e 73 69 67 6e 65 64 20 77 69 64 65 7d 20 7b unsigned wide} {
c5c0: 0a 2b 20 20 73 65 74 20 6d 79 6c 69 73 74 20 5b .+ set mylist [
c5d0: 6c 69 73 74 5d 0a 2b 20 20 74 65 73 74 6c 69 6e list].+ testlin
c5e0: 6b 61 72 72 61 79 20 63 72 65 61 74 65 20 75 77 karray create uw
c5f0: 69 64 65 20 31 20 3a 3a 6d 79 28 76 61 72 29 0a ide 1 ::my(var).
c600: 2b 20 20 63 61 74 63 68 20 7b 73 65 74 20 3a 3a + catch {set ::
c610: 6d 79 28 76 61 72 29 20 78 7d 20 6d 79 28 6d 73 my(var) x} my(ms
c620: 67 29 3b 20 6c 61 70 70 65 6e 64 20 6d 79 6c 69 g); lappend myli
c630: 73 74 20 24 6d 79 28 6d 73 67 29 3b 75 6e 73 65 st $my(msg);unse
c640: 74 20 6d 79 28 6d 73 67 29 0a 2b 20 20 6c 61 70 t my(msg).+ lap
c650: 70 65 6e 64 20 6d 79 6c 69 73 74 20 5b 73 65 74 pend mylist [set
c660: 20 3a 3a 6d 79 28 76 61 72 29 20 31 32 30 5d 0a ::my(var) 120].
c670: 2b 20 20 63 61 74 63 68 20 7b 73 65 74 20 3a 3a + catch {set ::
c680: 6d 79 28 76 61 72 29 20 31 65 33 33 7d 20 6d 79 my(var) 1e33} my
c690: 28 6d 73 67 29 3b 20 6c 61 70 70 65 6e 64 20 6d (msg); lappend m
c6a0: 79 6c 69 73 74 20 24 6d 79 28 6d 73 67 29 3b 75 ylist $my(msg);u
c6b0: 6e 73 65 74 20 6d 79 28 6d 73 67 29 0a 2b 20 20 nset my(msg).+
c6c0: 63 61 74 63 68 20 7b 73 65 74 20 3a 3a 6d 79 28 catch {set ::my(
c6d0: 76 61 72 29 20 2d 31 7d 20 6d 79 28 6d 73 67 29 var) -1} my(msg)
c6e0: 3b 20 6c 61 70 70 65 6e 64 20 6d 79 6c 69 73 74 ; lappend mylist
c6f0: 20 24 6d 79 28 6d 73 67 29 3b 75 6e 73 65 74 20 $my(msg);unset
c700: 6d 79 28 6d 73 67 29 0a 2b 20 20 74 65 73 74 6c my(msg).+ testl
c710: 69 6e 6b 61 72 72 61 79 20 72 65 6d 6f 76 65 20 inkarray remove
c720: 3a 3a 6d 79 28 76 61 72 29 0a 2b 20 20 74 65 73 ::my(var).+ tes
c730: 74 6c 69 6e 6b 61 72 72 61 79 20 63 72 65 61 74 tlinkarray creat
c740: 65 20 75 77 69 64 65 20 34 20 3a 3a 6d 79 28 76 e uwide 4 ::my(v
c750: 61 72 29 0a 2b 20 20 63 61 74 63 68 20 7b 73 65 ar).+ catch {se
c760: 74 20 3a 3a 6d 79 28 76 61 72 29 20 7b 31 20 32 t ::my(var) {1 2
c770: 20 33 7d 7d 20 6d 79 28 6d 73 67 29 3b 20 6c 61 3}} my(msg); la
c780: 70 70 65 6e 64 20 6d 79 6c 69 73 74 20 24 6d 79 ppend mylist $my
c790: 28 6d 73 67 29 3b 75 6e 73 65 74 20 6d 79 28 6d (msg);unset my(m
c7a0: 73 67 29 0a 2b 20 20 73 65 74 20 3a 3a 6d 79 28 sg).+ set ::my(
c7b0: 76 61 72 29 20 7b 31 20 32 20 33 20 34 7d 0a 2b var) {1 2 3 4}.+
c7c0: 20 20 6c 61 70 70 65 6e 64 20 6d 79 6c 69 73 74 lappend mylist
c7d0: 20 24 6d 79 28 76 61 72 29 0a 2b 20 20 74 65 73 $my(var).+ tes
c7e0: 74 6c 69 6e 6b 61 72 72 61 79 20 72 65 6d 6f 76 tlinkarray remov
c7f0: 65 20 3a 3a 6d 79 28 76 61 72 29 0a 2b 20 20 74 e ::my(var).+ t
c800: 65 73 74 6c 69 6e 6b 61 72 72 61 79 20 63 72 65 estlinkarray cre
c810: 61 74 65 20 2d 72 20 75 77 69 64 65 20 32 20 3a ate -r uwide 2 :
c820: 3a 6d 79 28 76 61 72 29 0a 2b 20 20 63 61 74 63 :my(var).+ catc
c830: 68 20 7b 73 65 74 20 3a 3a 6d 79 28 76 61 72 29 h {set ::my(var)
c840: 20 7b 31 20 32 7d 7d 20 6d 79 28 6d 73 67 29 3b {1 2}} my(msg);
c850: 20 6c 61 70 70 65 6e 64 20 6d 79 6c 69 73 74 20 lappend mylist
c860: 24 6d 79 28 6d 73 67 29 3b 75 6e 73 65 74 20 6d $my(msg);unset m
c870: 79 28 6d 73 67 29 0a 2b 20 20 74 65 73 74 6c 69 y(msg).+ testli
c880: 6e 6b 61 72 72 61 79 20 72 65 6d 6f 76 65 20 3a nkarray remove :
c890: 3a 6d 79 28 76 61 72 29 3b 20 75 6e 73 65 74 20 :my(var); unset
c8a0: 6d 79 3b 20 6a 6f 69 6e 20 24 6d 79 6c 69 73 74 my; join $mylist
c8b0: 20 22 5c 6e 22 0a 2b 7d 20 7b 63 61 6e 27 74 20 "\n".+} {can't
c8c0: 73 65 74 20 22 3a 3a 6d 79 28 76 61 72 29 22 3a set "::my(var)":
c8d0: 20 76 61 72 69 61 62 6c 65 20 6d 75 73 74 20 68 variable must h
c8e0: 61 76 65 20 75 6e 73 69 67 6e 65 64 20 77 69 64 ave unsigned wid
c8f0: 65 20 69 6e 74 20 76 61 6c 75 65 0a 2b 31 32 30 e int value.+120
c900: 0a 2b 63 61 6e 27 74 20 73 65 74 20 22 3a 3a 6d .+can't set "::m
c910: 79 28 76 61 72 29 22 3a 20 76 61 72 69 61 62 6c y(var)": variabl
c920: 65 20 6d 75 73 74 20 68 61 76 65 20 75 6e 73 69 e must have unsi
c930: 67 6e 65 64 20 77 69 64 65 20 69 6e 74 20 76 61 gned wide int va
c940: 6c 75 65 0a 2b 63 61 6e 27 74 20 73 65 74 20 22 lue.+can't set "
c950: 3a 3a 6d 79 28 76 61 72 29 22 3a 20 76 61 72 69 ::my(var)": vari
c960: 61 62 6c 65 20 6d 75 73 74 20 68 61 76 65 20 75 able must have u
c970: 6e 73 69 67 6e 65 64 20 77 69 64 65 20 69 6e 74 nsigned wide int
c980: 20 76 61 6c 75 65 0a 2b 63 61 6e 27 74 20 73 65 value.+can't se
c990: 74 20 22 3a 3a 6d 79 28 76 61 72 29 22 3a 20 77 t "::my(var)": w
c9a0: 72 6f 6e 67 20 64 69 6d 65 6e 73 69 6f 6e 0a 2b rong dimension.+
c9b0: 31 20 32 20 33 20 34 0a 2b 63 61 6e 27 74 20 73 1 2 3 4.+can't s
c9c0: 65 74 20 22 3a 3a 6d 79 28 76 61 72 29 22 3a 20 et "::my(var)":
c9d0: 6c 69 6e 6b 65 64 20 76 61 72 69 61 62 6c 65 20 linked variable
c9e0: 69 73 20 72 65 61 64 2d 6f 6e 6c 79 7d 0a 2b 74 is read-only}.+t
c9f0: 65 73 74 20 6c 69 6e 6b 2d 32 31 2e 31 20 7b 6c est link-21.1 {l
ca00: 69 6e 6b 61 72 72 61 79 20 73 74 72 69 6e 67 7d inkarray string}
ca10: 20 7b 0a 2b 20 20 73 65 74 20 6d 79 6c 69 73 74 {.+ set mylist
ca20: 20 5b 6c 69 73 74 5d 0a 2b 20 20 74 65 73 74 6c [list].+ testl
ca30: 69 6e 6b 61 72 72 61 79 20 63 72 65 61 74 65 20 inkarray create
ca40: 73 74 72 69 6e 67 20 31 20 3a 3a 6d 79 28 76 61 string 1 ::my(va
ca50: 72 29 0a 2b 20 20 6c 61 70 70 65 6e 64 20 6d 79 r).+ lappend my
ca60: 6c 69 73 74 20 5b 73 65 74 20 3a 3a 6d 79 28 76 list [set ::my(v
ca70: 61 72 29 20 22 22 5d 0a 2b 20 20 6c 61 70 70 65 ar) ""].+ lappe
ca80: 6e 64 20 6d 79 6c 69 73 74 20 5b 73 65 74 20 3a nd mylist [set :
ca90: 3a 6d 79 28 76 61 72 29 20 22 78 79 7a 22 5d 0a :my(var) "xyz"].
caa0: 2b 20 20 6c 61 70 70 65 6e 64 20 6d 79 6c 69 73 + lappend mylis
cab0: 74 20 24 3a 3a 6d 79 28 76 61 72 29 0a 2b 20 20 t $::my(var).+
cac0: 74 65 73 74 6c 69 6e 6b 61 72 72 61 79 20 72 65 testlinkarray re
cad0: 6d 6f 76 65 20 3a 3a 6d 79 28 76 61 72 29 0a 2b move ::my(var).+
cae0: 20 20 74 65 73 74 6c 69 6e 6b 61 72 72 61 79 20 testlinkarray
caf0: 63 72 65 61 74 65 20 2d 72 20 73 74 72 69 6e 67 create -r string
cb00: 20 34 20 3a 3a 6d 79 28 76 61 72 29 0a 2b 20 20 4 ::my(var).+
cb10: 63 61 74 63 68 20 7b 73 65 74 20 3a 3a 6d 79 28 catch {set ::my(
cb20: 76 61 72 29 20 78 7d 20 6d 79 28 6d 73 67 29 3b var) x} my(msg);
cb30: 20 6c 61 70 70 65 6e 64 20 6d 79 6c 69 73 74 20 lappend mylist
cb40: 24 6d 79 28 6d 73 67 29 3b 75 6e 73 65 74 20 6d $my(msg);unset m
cb50: 79 28 6d 73 67 29 0a 2b 20 20 74 65 73 74 6c 69 y(msg).+ testli
cb60: 6e 6b 61 72 72 61 79 20 72 65 6d 6f 76 65 20 3a nkarray remove :
cb70: 3a 6d 79 28 76 61 72 29 3b 20 75 6e 73 65 74 20 :my(var); unset
cb80: 6d 79 3b 20 6a 6f 69 6e 20 24 6d 79 6c 69 73 74 my; join $mylist
cb90: 20 22 5c 6e 22 0a 2b 7d 20 7b 0a 2b 78 79 7a 0a "\n".+} {.+xyz.
cba0: 2b 78 79 7a 0a 2b 63 61 6e 27 74 20 73 65 74 20 +xyz.+can't set
cbb0: 22 3a 3a 6d 79 28 76 61 72 29 22 3a 20 6c 69 6e "::my(var)": lin
cbc0: 6b 65 64 20 76 61 72 69 61 62 6c 65 20 69 73 20 ked variable is
cbd0: 72 65 61 64 2d 6f 6e 6c 79 7d 0a 2b 74 65 73 74 read-only}.+test
cbe0: 20 6c 69 6e 6b 2d 32 32 2e 31 20 7b 6c 69 6e 6b link-22.1 {link
cbf0: 61 72 72 61 79 20 62 69 6e 61 72 79 7d 20 7b 0a array binary} {.
cc00: 2b 20 20 73 65 74 20 6d 79 6c 69 73 74 20 5b 6c + set mylist [l
cc10: 69 73 74 5d 0a 2b 20 20 74 65 73 74 6c 69 6e 6b ist].+ testlink
cc20: 61 72 72 61 79 20 63 72 65 61 74 65 20 62 69 6e array create bin
cc30: 61 72 79 20 31 20 3a 3a 6d 79 28 76 61 72 29 0a ary 1 ::my(var).
cc40: 2b 20 20 73 65 74 20 3a 3a 6d 79 28 76 61 72 29 + set ::my(var)
cc50: 20 78 0a 2b 20 20 63 61 74 63 68 20 7b 73 65 74 x.+ catch {set
cc60: 20 3a 3a 6d 79 28 76 61 72 29 20 78 79 7d 20 6d ::my(var) xy} m
cc70: 79 28 6d 73 67 29 3b 20 6c 61 70 70 65 6e 64 20 y(msg); lappend
cc80: 6d 79 6c 69 73 74 20 24 6d 79 28 6d 73 67 29 3b mylist $my(msg);
cc90: 75 6e 73 65 74 20 6d 79 28 6d 73 67 29 0a 2b 20 unset my(msg).+
cca0: 20 6c 61 70 70 65 6e 64 20 6d 79 6c 69 73 74 20 lappend mylist
ccb0: 24 3a 3a 6d 79 28 76 61 72 29 0a 2b 20 20 74 65 $::my(var).+ te
ccc0: 73 74 6c 69 6e 6b 61 72 72 61 79 20 72 65 6d 6f stlinkarray remo
ccd0: 76 65 20 3a 3a 6d 79 28 76 61 72 29 0a 2b 20 20 ve ::my(var).+
cce0: 74 65 73 74 6c 69 6e 6b 61 72 72 61 79 20 63 72 testlinkarray cr
ccf0: 65 61 74 65 20 62 69 6e 61 72 79 20 34 20 3a 3a eate binary 4 ::
cd00: 6d 79 28 76 61 72 29 0a 2b 20 20 63 61 74 63 68 my(var).+ catch
cd10: 20 7b 73 65 74 20 3a 3a 6d 79 28 76 61 72 29 20 {set ::my(var)
cd20: 61 62 63 7d 20 6d 79 28 6d 73 67 29 3b 20 6c 61 abc} my(msg); la
cd30: 70 70 65 6e 64 20 6d 79 6c 69 73 74 20 24 6d 79 ppend mylist $my
cd40: 28 6d 73 67 29 3b 75 6e 73 65 74 20 6d 79 28 6d (msg);unset my(m
cd50: 73 67 29 0a 2b 20 20 63 61 74 63 68 20 7b 73 65 sg).+ catch {se
cd60: 74 20 3a 3a 6d 79 28 76 61 72 29 20 61 62 63 64 t ::my(var) abcd
cd70: 65 7d 20 6d 79 28 6d 73 67 29 3b 20 6c 61 70 70 e} my(msg); lapp
cd80: 65 6e 64 20 6d 79 6c 69 73 74 20 24 6d 79 28 6d end mylist $my(m
cd90: 73 67 29 3b 75 6e 73 65 74 20 6d 79 28 6d 73 67 sg);unset my(msg
cda0: 29 0a 2b 20 20 73 65 74 20 3a 3a 6d 79 28 76 61 ).+ set ::my(va
cdb0: 72 29 20 61 62 63 64 0a 2b 20 20 6c 61 70 70 65 r) abcd.+ lappe
cdc0: 6e 64 20 6d 79 6c 69 73 74 20 24 3a 3a 6d 79 28 nd mylist $::my(
cdd0: 76 61 72 29 0a 2b 20 20 74 65 73 74 6c 69 6e 6b var).+ testlink
cde0: 61 72 72 61 79 20 72 65 6d 6f 76 65 20 3a 3a 6d array remove ::m
cdf0: 79 28 76 61 72 29 0a 2b 20 20 74 65 73 74 6c 69 y(var).+ testli
ce00: 6e 6b 61 72 72 61 79 20 63 72 65 61 74 65 20 2d nkarray create -
ce10: 72 20 62 69 6e 61 72 79 20 34 20 3a 3a 6d 79 28 r binary 4 ::my(
ce20: 76 61 72 29 0a 2b 20 20 63 61 74 63 68 20 7b 73 var).+ catch {s
ce30: 65 74 20 3a 3a 6d 79 28 76 61 72 29 20 78 79 7a et ::my(var) xyz
ce40: 76 7d 20 6d 79 28 6d 73 67 29 3b 20 6c 61 70 70 v} my(msg); lapp
ce50: 65 6e 64 20 6d 79 6c 69 73 74 20 24 6d 79 28 6d end mylist $my(m
ce60: 73 67 29 3b 75 6e 73 65 74 20 6d 79 28 6d 73 67 sg);unset my(msg
ce70: 29 0a 2b 20 20 74 65 73 74 6c 69 6e 6b 61 72 72 ).+ testlinkarr
ce80: 61 79 20 72 65 6d 6f 76 65 20 3a 3a 6d 79 28 76 ay remove ::my(v
ce90: 61 72 29 3b 20 75 6e 73 65 74 20 6d 79 3b 20 6a ar); unset my; j
cea0: 6f 69 6e 20 24 6d 79 6c 69 73 74 20 22 5c 6e 22 oin $mylist "\n"
ceb0: 0a 2b 7d 20 7b 63 61 6e 27 74 20 73 65 74 20 22 .+} {can't set "
cec0: 3a 3a 6d 79 28 76 61 72 29 22 3a 20 77 72 6f 6e ::my(var)": wron
ced0: 67 20 73 69 7a 65 20 6f 66 20 62 69 6e 61 72 79 g size of binary
cee0: 20 76 61 6c 75 65 0a 2b 78 0a 2b 63 61 6e 27 74 value.+x.+can't
cef0: 20 73 65 74 20 22 3a 3a 6d 79 28 76 61 72 29 22 set "::my(var)"
cf00: 3a 20 77 72 6f 6e 67 20 73 69 7a 65 20 6f 66 20 : wrong size of
cf10: 62 69 6e 61 72 79 20 76 61 6c 75 65 0a 2b 63 61 binary value.+ca
cf20: 6e 27 74 20 73 65 74 20 22 3a 3a 6d 79 28 76 61 n't set "::my(va
cf30: 72 29 22 3a 20 77 72 6f 6e 67 20 73 69 7a 65 20 r)": wrong size
cf40: 6f 66 20 62 69 6e 61 72 79 20 76 61 6c 75 65 0a of binary value.
cf50: 2b 61 62 63 64 0a 2b 63 61 6e 27 74 20 73 65 74 +abcd.+can't set
cf60: 20 22 3a 3a 6d 79 28 76 61 72 29 22 3a 20 6c 69 "::my(var)": li
cf70: 6e 6b 65 64 20 76 61 72 69 61 62 6c 65 20 69 73 nked variable is
cf80: 20 72 65 61 64 2d 6f 6e 6c 79 7d 0a 20 0a 20 63 read-only}. . c
cf90: 61 74 63 68 20 7b 74 65 73 74 6c 69 6e 6b 20 73 atch {testlink s
cfa0: 65 74 20 30 20 30 20 30 20 2d 20 30 20 30 20 30 et 0 0 0 - 0 0 0
cfb0: 20 30 20 30 20 30 20 30 20 30 20 30 20 30 7d 0a 0 0 0 0 0 0 0}.
cfc0: 20 63 61 74 63 68 20 7b 74 65 73 74 6c 69 6e 6b catch {testlink
cfd0: 20 64 65 6c 65 74 65 7d 0a delete}.