Attachment "errorstack15.patch" to
ticket [2868499fff]
added by
ferrieux
2010-03-31 21:16:26.
0000: 49 6e 64 65 78 3a 20 64 6f 63 2f 63 61 74 63 68 Index: doc/catch
0010: 2e 6e 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d .n.=============
0020: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0030: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0040: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0050: 3d 3d 3d 3d 3d 3d 0a 52 43 53 20 66 69 6c 65 3a ======.RCS file:
0060: 20 2f 63 76 73 72 6f 6f 74 2f 74 63 6c 2f 74 63 /cvsroot/tcl/tc
0070: 6c 2f 64 6f 63 2f 63 61 74 63 68 2e 6e 2c 76 0a l/doc/catch.n,v.
0080: 72 65 74 72 69 65 76 69 6e 67 20 72 65 76 69 73 retrieving revis
0090: 69 6f 6e 20 31 2e 32 33 0a 64 69 66 66 20 2d 75 ion 1.23.diff -u
00a0: 20 2d 70 20 2d 75 20 2d 70 20 2d 72 31 2e 32 33 -p -u -p -r1.23
00b0: 20 63 61 74 63 68 2e 6e 0a 2d 2d 2d 20 64 6f 63 catch.n.--- doc
00c0: 2f 63 61 74 63 68 2e 6e 09 31 33 20 4a 61 6e 20 /catch.n.13 Jan
00d0: 32 30 31 30 20 31 32 3a 30 38 3a 33 30 20 2d 30 2010 12:08:30 -0
00e0: 30 30 30 09 31 2e 32 33 0a 2b 2b 2b 20 64 6f 63 000.1.23.+++ doc
00f0: 2f 63 61 74 63 68 2e 6e 09 33 31 20 4d 61 72 20 /catch.n.31 Mar
0100: 32 30 31 30 20 31 34 3a 31 34 3a 33 39 20 2d 30 2010 14:14:39 -0
0110: 30 30 30 0a 40 40 20 2d 35 34 2c 32 32 20 2b 35 000.@@ -54,22 +5
0120: 34 2c 33 36 20 40 40 20 4f 6e 6c 79 20 77 68 65 4,36 @@ Only whe
0130: 6e 20 74 68 65 20 72 65 74 75 72 6e 20 63 6f 64 n the return cod
0140: 65 20 69 73 20 5c 66 42 54 43 4c 5f 52 45 54 55 e is \fBTCL_RETU
0150: 0a 20 74 68 65 20 5c 66 42 5c 2d 6c 65 76 65 6c . the \fB\-level
0160: 5c 66 52 20 61 6e 64 20 5c 66 42 5c 2d 63 6f 64 \fR and \fB\-cod
0170: 65 5c 66 52 20 65 6e 74 72 69 65 73 20 62 65 20 e\fR entries be
0180: 73 6f 6d 65 74 68 69 6e 67 20 65 6c 73 65 2c 20 something else,
0190: 61 73 0a 20 66 75 72 74 68 65 72 20 64 65 73 63 as. further desc
01a0: 72 69 62 65 64 20 69 6e 20 74 68 65 20 64 6f 63 ribed in the doc
01b0: 75 6d 65 6e 74 61 74 69 6f 6e 20 66 6f 72 20 74 umentation for t
01c0: 68 65 20 5c 66 42 72 65 74 75 72 6e 5c 66 52 20 he \fBreturn\fR
01d0: 63 6f 6d 6d 61 6e 64 2e 0a 20 2e 50 50 0a 2d 57 command.. .PP.-W
01e0: 68 65 6e 20 74 68 65 20 72 65 74 75 72 6e 20 63 hen the return c
01f0: 6f 64 65 20 66 72 6f 6d 20 65 76 61 6c 75 61 74 ode from evaluat
0200: 69 6f 6e 20 6f 66 20 5c 66 49 73 63 72 69 70 74 ion of \fIscript
0210: 5c 66 52 20 69 73 20 5c 66 42 54 43 4c 5f 45 52 \fR is \fBTCL_ER
0220: 52 4f 52 5c 66 52 2c 0a 2d 74 68 72 65 65 20 61 ROR\fR,.-three a
0230: 64 64 69 74 69 6f 6e 61 6c 20 65 6e 74 72 69 65 dditional entrie
0240: 73 20 61 72 65 20 64 65 66 69 6e 65 64 20 69 6e s are defined in
0250: 20 74 68 65 20 64 69 63 74 69 6f 6e 61 72 79 20 the dictionary
0260: 6f 66 20 72 65 74 75 72 6e 20 6f 70 74 69 6f 6e of return option
0270: 73 0a 2d 73 74 6f 72 65 64 20 69 6e 20 5c 66 49 s.-stored in \fI
0280: 6f 70 74 69 6f 6e 73 56 61 72 4e 61 6d 65 5c 66 optionsVarName\f
0290: 52 3a 20 5c 66 42 5c 2d 65 72 72 6f 72 69 6e 66 R: \fB\-errorinf
02a0: 6f 5c 66 52 2c 20 5c 66 42 5c 2d 65 72 72 6f 72 o\fR, \fB\-error
02b0: 63 6f 64 65 5c 66 52 2c 20 0a 2d 61 6e 64 20 5c code\fR, .-and \
02c0: 66 42 5c 2d 65 72 72 6f 72 6c 69 6e 65 5c 66 52 fB\-errorline\fR
02d0: 2e 20 20 54 68 65 20 76 61 6c 75 65 20 6f 66 20 . The value of
02e0: 74 68 65 20 5c 66 42 5c 2d 65 72 72 6f 72 69 6e the \fB\-errorin
02f0: 66 6f 5c 66 52 20 65 6e 74 72 79 0a 2d 69 73 20 fo\fR entry.-is
0300: 61 20 66 6f 72 6d 61 74 74 65 64 20 73 74 61 63 a formatted stac
0310: 6b 20 74 72 61 63 65 20 63 6f 6e 74 61 69 6e 69 k trace containi
0320: 6e 67 20 6d 6f 72 65 20 69 6e 66 6f 72 6d 61 74 ng more informat
0330: 69 6f 6e 20 61 62 6f 75 74 0a 2d 74 68 65 20 63 ion about.-the c
0340: 6f 6e 74 65 78 74 20 69 6e 20 77 68 69 63 68 20 ontext in which
0350: 74 68 65 20 65 72 72 6f 72 20 68 61 70 70 65 6e the error happen
0360: 65 64 2e 20 20 54 68 65 20 66 6f 72 6d 61 74 74 ed. The formatt
0370: 65 64 20 73 74 61 63 6b 0a 2d 74 72 61 63 65 20 ed stack.-trace
0380: 69 73 20 6d 65 61 6e 74 20 74 6f 20 62 65 20 72 is meant to be r
0390: 65 61 64 20 62 79 20 61 20 70 65 72 73 6f 6e 2e ead by a person.
03a0: 20 20 54 68 65 20 76 61 6c 75 65 20 6f 66 0a 2d The value of.-
03b0: 74 68 65 20 5c 66 42 5c 2d 65 72 72 6f 72 63 6f the \fB\-errorco
03c0: 64 65 5c 66 52 20 65 6e 74 72 79 20 69 73 20 61 de\fR entry is a
03d0: 64 64 69 74 69 6f 6e 61 6c 20 69 6e 66 6f 72 6d dditional inform
03e0: 61 74 69 6f 6e 20 61 62 6f 75 74 20 74 68 65 0a ation about the.
03f0: 2d 65 72 72 6f 72 20 73 74 6f 72 65 64 20 61 73 -error stored as
0400: 20 61 20 6c 69 73 74 2e 20 20 54 68 65 20 5c 66 a list. The \f
0410: 42 5c 2d 65 72 72 6f 72 63 6f 64 65 5c 66 52 20 B\-errorcode\fR
0420: 76 61 6c 75 65 20 69 73 20 6d 65 61 6e 74 20 74 value is meant t
0430: 6f 0a 2d 62 65 20 66 75 72 74 68 65 72 20 70 72 o.-be further pr
0440: 6f 63 65 73 73 65 64 20 62 79 20 70 72 6f 67 72 ocessed by progr
0450: 61 6d 73 2c 20 61 6e 64 20 6d 61 79 20 6e 6f 74 ams, and may not
0460: 20 62 65 20 70 61 72 74 69 63 75 6c 61 72 6c 79 be particularly
0470: 0a 2d 72 65 61 64 61 62 6c 65 20 62 79 20 70 65 .-readable by pe
0480: 6f 70 6c 65 2e 20 20 54 68 65 20 76 61 6c 75 65 ople. The value
0490: 20 6f 66 20 74 68 65 20 5c 66 42 5c 2d 65 72 72 of the \fB\-err
04a0: 6f 72 6c 69 6e 65 5c 66 52 20 65 6e 74 72 79 0a orline\fR entry.
04b0: 2d 69 73 20 61 6e 20 69 6e 74 65 67 65 72 20 69 -is an integer i
04c0: 6e 64 69 63 61 74 69 6e 67 20 77 68 69 63 68 20 ndicating which
04d0: 6c 69 6e 65 20 6f 66 20 5c 66 49 73 63 72 69 70 line of \fIscrip
04e0: 74 5c 66 52 20 77 61 73 20 62 65 69 6e 67 0a 2d t\fR was being.-
04f0: 65 76 61 6c 75 61 74 65 64 20 77 68 65 6e 20 74 evaluated when t
0500: 68 65 20 65 72 72 6f 72 20 6f 63 63 75 72 72 65 he error occurre
0510: 64 2e 20 20 54 68 65 20 76 61 6c 75 65 73 20 6f d. The values o
0520: 66 20 74 68 65 20 5c 66 42 5c 2d 65 72 72 6f 72 f the \fB\-error
0530: 69 6e 66 6f 5c 66 52 0a 2d 61 6e 64 20 5c 66 42 info\fR.-and \fB
0540: 5c 2d 65 72 72 6f 72 63 6f 64 65 5c 66 52 20 65 \-errorcode\fR e
0550: 6e 74 72 69 65 73 20 6f 66 20 74 68 65 20 6d 6f ntries of the mo
0560: 73 74 20 72 65 63 65 6e 74 20 65 72 72 6f 72 20 st recent error
0570: 61 72 65 20 61 6c 73 6f 0a 2d 61 76 61 69 6c 61 are also.-availa
0580: 62 6c 65 20 61 73 20 76 61 6c 75 65 73 20 6f 66 ble as values of
0590: 20 74 68 65 20 67 6c 6f 62 61 6c 20 76 61 72 69 the global vari
05a0: 61 62 6c 65 73 20 5c 66 42 3a 3a 65 72 72 6f 72 ables \fB::error
05b0: 49 6e 66 6f 5c 66 52 0a 2d 61 6e 64 20 5c 66 42 Info\fR.-and \fB
05c0: 3a 3a 65 72 72 6f 72 43 6f 64 65 5c 66 52 20 72 ::errorCode\fR r
05d0: 65 73 70 65 63 74 69 76 65 6c 79 2e 0a 2b 57 68 espectively..+Wh
05e0: 65 6e 20 74 68 65 20 72 65 74 75 72 6e 20 63 6f en the return co
05f0: 64 65 20 66 72 6f 6d 20 65 76 61 6c 75 61 74 69 de from evaluati
0600: 6f 6e 20 6f 66 20 5c 66 49 73 63 72 69 70 74 5c on of \fIscript\
0610: 66 52 20 69 73 0a 2b 5c 66 42 54 43 4c 5f 45 52 fR is.+\fBTCL_ER
0620: 52 4f 52 5c 66 52 2c 20 66 6f 75 72 20 61 64 64 ROR\fR, four add
0630: 69 74 69 6f 6e 61 6c 20 65 6e 74 72 69 65 73 20 itional entries
0640: 61 72 65 20 64 65 66 69 6e 65 64 20 69 6e 20 74 are defined in t
0650: 68 65 20 64 69 63 74 69 6f 6e 61 72 79 0a 2b 6f he dictionary.+o
0660: 66 20 72 65 74 75 72 6e 20 6f 70 74 69 6f 6e 73 f return options
0670: 20 73 74 6f 72 65 64 20 69 6e 20 5c 66 49 6f 70 stored in \fIop
0680: 74 69 6f 6e 73 56 61 72 4e 61 6d 65 5c 66 52 3a tionsVarName\fR:
0690: 20 5c 66 42 5c 2d 65 72 72 6f 72 69 6e 66 6f 5c \fB\-errorinfo\
06a0: 66 52 2c 0a 2b 5c 66 42 5c 2d 65 72 72 6f 72 63 fR,.+\fB\-errorc
06b0: 6f 64 65 5c 66 52 2c 20 5c 66 42 5c 2d 65 72 72 ode\fR, \fB\-err
06c0: 6f 72 6c 69 6e 65 5c 66 52 2c 20 61 6e 64 20 5c orline\fR, and \
06d0: 66 42 5c 2d 65 72 72 6f 72 73 74 61 63 6b 5c 66 fB\-errorstack\f
06e0: 52 2e 20 20 54 68 65 0a 2b 76 61 6c 75 65 20 6f R. The.+value o
06f0: 66 20 74 68 65 20 5c 66 42 5c 2d 65 72 72 6f 72 f the \fB\-error
0700: 69 6e 66 6f 5c 66 52 20 65 6e 74 72 79 20 69 73 info\fR entry is
0710: 20 61 20 66 6f 72 6d 61 74 74 65 64 20 73 74 61 a formatted sta
0720: 63 6b 20 74 72 61 63 65 0a 2b 63 6f 6e 74 61 69 ck trace.+contai
0730: 6e 69 6e 67 20 6d 6f 72 65 20 69 6e 66 6f 72 6d ning more inform
0740: 61 74 69 6f 6e 20 61 62 6f 75 74 20 74 68 65 20 ation about the
0750: 63 6f 6e 74 65 78 74 20 69 6e 20 77 68 69 63 68 context in which
0760: 20 74 68 65 20 65 72 72 6f 72 0a 2b 68 61 70 70 the error.+happ
0770: 65 6e 65 64 2e 20 20 54 68 65 20 66 6f 72 6d 61 ened. The forma
0780: 74 74 65 64 20 73 74 61 63 6b 20 74 72 61 63 65 tted stack trace
0790: 20 69 73 20 6d 65 61 6e 74 20 74 6f 20 62 65 20 is meant to be
07a0: 72 65 61 64 20 62 79 20 61 20 70 65 72 73 6f 6e read by a person
07b0: 2e 0a 2b 54 68 65 20 76 61 6c 75 65 20 6f 66 20 ..+The value of
07c0: 74 68 65 20 5c 66 42 5c 2d 65 72 72 6f 72 63 6f the \fB\-errorco
07d0: 64 65 5c 66 52 20 65 6e 74 72 79 20 69 73 20 61 de\fR entry is a
07e0: 64 64 69 74 69 6f 6e 61 6c 20 69 6e 66 6f 72 6d dditional inform
07f0: 61 74 69 6f 6e 0a 2b 61 62 6f 75 74 20 74 68 65 ation.+about the
0800: 20 65 72 72 6f 72 20 73 74 6f 72 65 64 20 61 73 error stored as
0810: 20 61 20 6c 69 73 74 2e 20 20 54 68 65 20 5c 66 a list. The \f
0820: 42 5c 2d 65 72 72 6f 72 63 6f 64 65 5c 66 52 20 B\-errorcode\fR
0830: 76 61 6c 75 65 20 69 73 0a 2b 6d 65 61 6e 74 20 value is.+meant
0840: 74 6f 20 62 65 20 66 75 72 74 68 65 72 20 70 72 to be further pr
0850: 6f 63 65 73 73 65 64 20 62 79 20 70 72 6f 67 72 ocessed by progr
0860: 61 6d 73 2c 20 61 6e 64 20 6d 61 79 20 6e 6f 74 ams, and may not
0870: 20 62 65 20 70 61 72 74 69 63 75 6c 61 72 6c 79 be particularly
0880: 0a 2b 72 65 61 64 61 62 6c 65 20 62 79 20 70 65 .+readable by pe
0890: 6f 70 6c 65 2e 20 20 54 68 65 20 76 61 6c 75 65 ople. The value
08a0: 20 6f 66 20 74 68 65 20 5c 66 42 5c 2d 65 72 72 of the \fB\-err
08b0: 6f 72 6c 69 6e 65 5c 66 52 20 65 6e 74 72 79 20 orline\fR entry
08c0: 69 73 20 61 6e 0a 2b 69 6e 74 65 67 65 72 20 69 is an.+integer i
08d0: 6e 64 69 63 61 74 69 6e 67 20 77 68 69 63 68 20 ndicating which
08e0: 6c 69 6e 65 20 6f 66 20 5c 66 49 73 63 72 69 70 line of \fIscrip
08f0: 74 5c 66 52 20 77 61 73 20 62 65 69 6e 67 20 65 t\fR was being e
0900: 76 61 6c 75 61 74 65 64 20 77 68 65 6e 0a 2b 74 valuated when.+t
0910: 68 65 20 65 72 72 6f 72 20 6f 63 63 75 72 72 65 he error occurre
0920: 64 2e 20 20 54 68 65 20 76 61 6c 75 65 20 6f 66 d. The value of
0930: 20 74 68 65 20 5c 66 42 5c 2d 65 72 72 6f 72 73 the \fB\-errors
0940: 74 61 63 6b 5c 66 52 20 65 6e 74 72 79 20 69 73 tack\fR entry is
0950: 20 61 6e 0a 2b 65 76 65 6e 2d 73 69 7a 65 64 20 an.+even-sized
0960: 6c 69 73 74 20 6d 61 64 65 20 6f 66 20 74 6f 6b list made of tok
0970: 65 6e 2d 70 61 72 61 6d 65 74 65 72 20 70 61 69 en-parameter pai
0980: 72 73 20 61 63 63 75 6d 75 6c 61 74 65 64 20 77 rs accumulated w
0990: 68 69 6c 65 0a 2b 75 6e 77 69 6e 64 69 6e 67 20 hile.+unwinding
09a0: 74 68 65 20 73 74 61 63 6b 2e 20 54 68 65 20 74 the stack. The t
09b0: 6f 6b 65 6e 20 6d 61 79 20 62 65 20 22 43 41 4c oken may be "CAL
09c0: 4c 22 2c 20 69 6e 20 77 68 69 63 68 20 63 61 73 L", in which cas
09d0: 65 20 74 68 65 0a 2b 70 61 72 61 6d 65 74 65 72 e the.+parameter
09e0: 20 69 73 20 61 20 6c 69 73 74 20 6d 61 64 65 20 is a list made
09f0: 6f 66 20 74 68 65 20 70 72 6f 63 20 6e 61 6d 65 of the proc name
0a00: 20 61 6e 64 20 61 72 67 75 6d 65 6e 74 73 20 61 and arguments a
0a10: 74 20 74 68 65 0a 2b 63 6f 72 72 65 73 70 6f 6e t the.+correspon
0a20: 64 69 6e 67 20 6c 65 76 65 6c 3b 20 6f 72 20 69 ding level; or i
0a30: 74 20 6d 61 79 20 62 65 20 22 55 50 22 2c 20 69 t may be "UP", i
0a40: 6e 20 77 68 69 63 68 20 63 61 73 65 20 74 68 65 n which case the
0a50: 20 70 61 72 61 6d 65 74 65 72 20 69 73 0a 2b 74 parameter is.+t
0a60: 68 65 20 72 65 6c 61 74 69 76 65 20 5b 75 70 6c he relative [upl
0a70: 65 76 65 6c 5d 20 6f 66 20 74 68 65 20 70 72 65 evel] of the pre
0a80: 76 69 6f 75 73 20 43 41 4c 4c 2e 20 54 68 65 20 vious CALL. The
0a90: 73 61 6c 69 65 6e 74 20 64 69 66 66 65 72 65 6e salient differen
0aa0: 63 65 73 0a 2b 77 72 74 20 2d 65 72 72 6f 72 69 ces.+wrt -errori
0ab0: 6e 66 6f 20 61 72 65 20 74 68 61 74 20 28 31 29 nfo are that (1)
0ac0: 20 69 74 20 69 73 20 61 20 6d 61 63 68 69 6e 65 it is a machine
0ad0: 2d 72 65 61 64 61 62 6c 65 20 66 6f 72 6d 20 61 -readable form a
0ae0: 6d 65 6e 61 62 6c 65 20 74 6f 0a 2b 5b 66 6f 72 menable to.+[for
0af0: 65 61 63 68 20 7b 74 6f 6b 20 70 72 6d 7d 20 2e each {tok prm} .
0b00: 2e 2e 5d 2c 20 28 32 29 20 69 74 20 63 6f 6e 74 ..], (2) it cont
0b10: 61 69 6e 73 20 74 68 65 20 74 72 75 65 20 28 73 ains the true (s
0b20: 75 62 73 74 69 74 75 74 65 64 29 20 76 61 6c 75 ubstituted) valu
0b30: 65 73 0a 2b 70 61 73 73 65 64 20 74 6f 20 74 68 es.+passed to th
0b40: 65 20 66 75 6e 63 74 69 6f 6e 73 2c 20 69 6e 73 e functions, ins
0b50: 74 65 61 64 20 6f 66 20 74 68 65 20 73 74 61 74 tead of the stat
0b60: 69 63 20 74 65 78 74 20 6f 66 20 74 68 65 20 63 ic text of the c
0b70: 61 6c 6c 69 6e 67 0a 2b 73 69 74 65 73 2c 20 61 alling.+sites, a
0b80: 6e 64 20 28 33 29 20 69 74 20 69 73 20 63 6f 61 nd (3) it is coa
0b90: 72 73 65 72 2d 67 72 61 69 6e 65 64 2c 20 77 69 rser-grained, wi
0ba0: 74 68 20 6f 6e 6c 79 20 6f 6e 65 20 65 6c 65 6d th only one elem
0bb0: 65 6e 74 20 70 65 72 20 73 74 61 63 6b 0a 2b 66 ent per stack.+f
0bc0: 72 61 6d 65 20 28 6c 69 6b 65 20 70 72 6f 63 73 rame (like procs
0bd0: 3b 20 6e 6f 20 73 65 70 61 72 61 74 65 20 65 6c ; no separate el
0be0: 65 6d 65 6e 74 73 20 66 6f 72 20 5b 66 6f 72 65 ements for [fore
0bf0: 61 63 68 5d 20 63 6f 6e 73 74 72 75 63 74 73 20 ach] constructs
0c00: 66 6f 72 0a 2b 65 78 61 6d 70 6c 65 29 2e 0a 2b for.+example)..+
0c10: 0a 2b 54 68 65 20 76 61 6c 75 65 73 20 6f 66 20 .+The values of
0c20: 74 68 65 20 5c 66 42 5c 2d 65 72 72 6f 72 69 6e the \fB\-errorin
0c30: 66 6f 5c 66 52 20 61 6e 64 20 5c 66 42 5c 2d 65 fo\fR and \fB\-e
0c40: 72 72 6f 72 63 6f 64 65 5c 66 52 20 65 6e 74 72 rrorcode\fR entr
0c50: 69 65 73 20 6f 66 0a 2b 74 68 65 20 6d 6f 73 74 ies of.+the most
0c60: 20 72 65 63 65 6e 74 20 65 72 72 6f 72 20 61 72 recent error ar
0c70: 65 20 61 6c 73 6f 20 61 76 61 69 6c 61 62 6c 65 e also available
0c80: 20 61 73 20 76 61 6c 75 65 73 20 6f 66 20 74 68 as values of th
0c90: 65 20 67 6c 6f 62 61 6c 0a 2b 76 61 72 69 61 62 e global.+variab
0ca0: 6c 65 73 20 5c 66 42 3a 3a 65 72 72 6f 72 49 6e les \fB::errorIn
0cb0: 66 6f 5c 66 52 20 61 6e 64 20 5c 66 42 3a 3a 65 fo\fR and \fB::e
0cc0: 72 72 6f 72 43 6f 64 65 5c 66 52 20 72 65 73 70 rrorCode\fR resp
0cd0: 65 63 74 69 76 65 6c 79 2e 20 54 68 65 0a 2b 76 ectively. The.+v
0ce0: 61 6c 75 65 20 6f 66 20 74 68 65 20 5c 66 42 5c alue of the \fB\
0cf0: 2d 65 72 72 6f 72 73 74 61 63 6b 5c 66 52 20 65 -errorstack\fR e
0d00: 6e 74 72 79 20 73 75 72 66 61 63 65 73 20 61 73 ntry surfaces as
0d10: 20 5c 66 42 69 6e 66 6f 0a 2b 65 72 72 6f 72 73 \fBinfo.+errors
0d20: 74 61 63 6b 5c 66 52 2e 0a 20 2e 50 50 0a 20 54 tack\fR.. .PP. T
0d30: 63 6c 20 70 61 63 6b 61 67 65 73 20 6d 61 79 20 cl packages may
0d40: 70 72 6f 76 69 64 65 20 63 6f 6d 6d 61 6e 64 73 provide commands
0d50: 20 74 68 61 74 20 73 65 74 20 6f 74 68 65 72 20 that set other
0d60: 65 6e 74 72 69 65 73 20 69 6e 20 74 68 65 0a 20 entries in the.
0d70: 64 69 63 74 69 6f 6e 61 72 79 20 6f 66 20 72 65 dictionary of re
0d80: 74 75 72 6e 20 6f 70 74 69 6f 6e 73 2c 20 61 6e turn options, an
0d90: 64 20 74 68 65 20 5c 66 42 72 65 74 75 72 6e 5c d the \fBreturn\
0da0: 66 52 20 63 6f 6d 6d 61 6e 64 20 6d 61 79 20 62 fR command may b
0db0: 65 0a 49 6e 64 65 78 3a 20 64 6f 63 2f 69 6e 66 e.Index: doc/inf
0dc0: 6f 2e 6e 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d o.n.============
0dd0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0de0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0df0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0e00: 3d 3d 3d 3d 3d 3d 3d 0a 52 43 53 20 66 69 6c 65 =======.RCS file
0e10: 3a 20 2f 63 76 73 72 6f 6f 74 2f 74 63 6c 2f 74 : /cvsroot/tcl/t
0e20: 63 6c 2f 64 6f 63 2f 69 6e 66 6f 2e 6e 2c 76 0a cl/doc/info.n,v.
0e30: 72 65 74 72 69 65 76 69 6e 67 20 72 65 76 69 73 retrieving revis
0e40: 69 6f 6e 20 31 2e 33 36 0a 64 69 66 66 20 2d 75 ion 1.36.diff -u
0e50: 20 2d 70 20 2d 75 20 2d 70 20 2d 72 31 2e 33 36 -p -u -p -r1.36
0e60: 20 69 6e 66 6f 2e 6e 0a 2d 2d 2d 20 64 6f 63 2f info.n.--- doc/
0e70: 69 6e 66 6f 2e 6e 09 32 34 20 4d 61 72 20 32 30 info.n.24 Mar 20
0e80: 31 30 20 31 33 3a 32 31 3a 31 31 20 2d 30 30 30 10 13:21:11 -000
0e90: 30 09 31 2e 33 36 0a 2b 2b 2b 20 64 6f 63 2f 69 0.1.36.+++ doc/i
0ea0: 6e 66 6f 2e 6e 09 33 31 20 4d 61 72 20 32 30 31 nfo.n.31 Mar 201
0eb0: 30 20 31 34 3a 31 34 3a 33 39 20 2d 30 30 30 30 0 14:14:39 -0000
0ec0: 0a 40 40 20 2d 39 34 2c 36 20 2b 39 34 2c 31 36 .@@ -94,6 +94,16
0ed0: 20 40 40 20 64 6f 65 73 20 6e 6f 74 20 68 61 76 @@ does not hav
0ee0: 65 20 61 20 64 65 66 61 75 6c 74 20 76 61 6c 75 e a default valu
0ef0: 65 20 74 68 65 6e 20 74 68 65 20 63 0a 20 4f 74 e then the c. Ot
0f00: 68 65 72 77 69 73 65 20 69 74 20 72 65 74 75 72 herwise it retur
0f10: 6e 73 20 5c 66 42 31 5c 66 52 20 61 6e 64 20 70 ns \fB1\fR and p
0f20: 6c 61 63 65 73 20 74 68 65 20 64 65 66 61 75 6c laces the defaul
0f30: 74 20 76 61 6c 75 65 20 6f 66 20 5c 66 49 61 72 t value of \fIar
0f40: 67 5c 66 52 0a 20 69 6e 74 6f 20 76 61 72 69 61 g\fR. into varia
0f50: 62 6c 65 20 5c 66 49 76 61 72 6e 61 6d 65 5c 66 ble \fIvarname\f
0f60: 52 2e 0a 20 2e 54 50 0a 2b 5c 66 42 69 6e 66 6f R.. .TP.+\fBinfo
0f70: 20 65 72 72 6f 72 73 74 61 63 6b 20 5c 66 52 3f errorstack \fR?
0f80: 5c 66 49 69 6e 74 65 72 70 5c 66 52 3f 0a 2b 2e \fIinterp\fR?.+.
0f90: 0a 2b 52 65 74 75 72 6e 73 20 61 20 6c 69 73 74 .+Returns a list
0fa0: 20 6f 66 20 6c 69 73 74 73 20 6d 61 64 65 20 6f of lists made o
0fb0: 66 20 74 68 65 20 66 75 6e 63 74 69 6f 6e 20 6e f the function n
0fc0: 61 6d 65 73 20 61 6e 64 20 61 72 67 75 6d 65 6e ames and argumen
0fd0: 74 73 20 61 74 0a 2b 65 61 63 68 20 6c 65 76 65 ts at.+each leve
0fe0: 6c 20 66 72 6f 6d 20 74 68 65 20 63 61 6c 6c 20 l from the call
0ff0: 73 74 61 63 6b 20 6f 66 20 74 68 65 20 6c 61 73 stack of the las
1000: 74 20 65 72 72 6f 72 20 69 6e 20 74 68 65 20 67 t error in the g
1010: 69 76 65 6e 0a 2b 5c 66 49 69 6e 74 65 72 70 5c iven.+\fIinterp\
1020: 66 52 2c 20 6f 72 20 69 6e 20 74 68 65 20 63 75 fR, or in the cu
1030: 72 72 65 6e 74 20 6f 6e 65 20 69 66 20 6e 6f 74 rrent one if not
1040: 20 73 70 65 63 69 66 69 65 64 2e 20 20 54 68 69 specified. Thi
1050: 73 0a 2b 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 69 s.+information i
1060: 73 20 61 6c 73 6f 20 70 72 65 73 65 6e 74 20 69 s also present i
1070: 6e 20 74 68 65 20 2d 65 72 72 6f 72 73 74 61 63 n the -errorstac
1080: 6b 20 65 6e 74 72 79 20 6f 66 20 74 68 65 20 6f k entry of the o
1090: 70 74 69 6f 6e 73 0a 2b 64 69 63 74 69 6f 6e 61 ptions.+dictiona
10a0: 72 79 20 72 65 74 75 72 6e 65 64 20 62 79 20 33 ry returned by 3
10b0: 2d 61 72 67 20 5c 66 42 63 61 74 63 68 5c 66 52 -arg \fBcatch\fR
10c0: 3b 20 5c 66 42 69 6e 66 6f 20 65 72 72 6f 72 73 ; \fBinfo errors
10d0: 74 61 63 6b 5c 66 52 20 69 73 20 61 0a 2b 63 6f tack\fR is a.+co
10e0: 6e 76 65 6e 69 65 6e 74 20 77 61 79 20 6f 66 20 nvenient way of
10f0: 72 65 74 72 69 65 76 69 6e 67 20 69 74 20 66 6f retrieving it fo
1100: 72 20 75 6e 63 61 75 67 68 74 20 65 72 72 6f 72 r uncaught error
1110: 73 20 61 74 20 74 6f 70 6c 65 76 65 6c 20 69 6e s at toplevel in
1120: 20 61 6e 0a 2b 69 6e 74 65 72 61 63 74 69 76 65 an.+interactive
1130: 20 74 63 6c 73 68 2e 0a 2b 2e 54 50 0a 20 5c 66 tclsh..+.TP. \f
1140: 42 69 6e 66 6f 20 65 78 69 73 74 73 20 5c 66 49 Binfo exists \fI
1150: 76 61 72 4e 61 6d 65 5c 66 52 0a 20 2e 0a 20 52 varName\fR. .. R
1160: 65 74 75 72 6e 73 20 5c 66 42 31 5c 66 52 20 69 eturns \fB1\fR i
1170: 66 20 74 68 65 20 76 61 72 69 61 62 6c 65 20 6e f the variable n
1180: 61 6d 65 64 20 5c 66 49 76 61 72 4e 61 6d 65 5c amed \fIvarName\
1190: 66 52 20 65 78 69 73 74 73 20 69 6e 20 74 68 65 fR exists in the
11a0: 0a 49 6e 64 65 78 3a 20 64 6f 63 2f 72 65 74 75 .Index: doc/retu
11b0: 72 6e 2e 6e 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d rn.n.===========
11c0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
11d0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
11e0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
11f0: 3d 3d 3d 3d 3d 3d 3d 3d 0a 52 43 53 20 66 69 6c ========.RCS fil
1200: 65 3a 20 2f 63 76 73 72 6f 6f 74 2f 74 63 6c 2f e: /cvsroot/tcl/
1210: 74 63 6c 2f 64 6f 63 2f 72 65 74 75 72 6e 2e 6e tcl/doc/return.n
1220: 2c 76 0a 72 65 74 72 69 65 76 69 6e 67 20 72 65 ,v.retrieving re
1230: 76 69 73 69 6f 6e 20 31 2e 32 35 0a 64 69 66 66 vision 1.25.diff
1240: 20 2d 75 20 2d 70 20 2d 75 20 2d 70 20 2d 72 31 -u -p -u -p -r1
1250: 2e 32 35 20 72 65 74 75 72 6e 2e 6e 0a 2d 2d 2d .25 return.n.---
1260: 20 64 6f 63 2f 72 65 74 75 72 6e 2e 6e 09 32 30 doc/return.n.20
1270: 20 4a 61 6e 20 32 30 31 30 20 31 33 3a 34 32 3a Jan 2010 13:42:
1280: 31 37 20 2d 30 30 30 30 09 31 2e 32 35 0a 2b 2b 17 -0000.1.25.++
1290: 2b 20 64 6f 63 2f 72 65 74 75 72 6e 2e 6e 09 33 + doc/return.n.3
12a0: 31 20 4d 61 72 20 32 30 31 30 20 31 34 3a 31 34 1 Mar 2010 14:14
12b0: 3a 33 39 20 2d 30 30 30 30 0a 40 40 20 2d 31 33 :39 -0000.@@ -13
12c0: 38 2c 36 20 2b 31 33 38 2c 32 32 20 40 40 20 74 8,6 +138,22 @@ t
12d0: 68 65 20 76 61 6c 75 65 20 6f 66 20 5c 66 42 5c he value of \fB\
12e0: 2d 65 72 72 6f 72 69 6e 66 6f 5c 66 52 20 69 6e -errorinfo\fR in
12f0: 20 61 20 72 65 74 75 0a 20 62 79 20 74 68 65 20 a retu. by the
1300: 5c 66 42 63 61 74 63 68 5c 66 52 20 63 6f 6d 6d \fBcatch\fR comm
1310: 61 6e 64 20 28 6f 72 20 66 72 6f 6d 20 74 68 65 and (or from the
1320: 20 63 6f 70 79 20 6f 66 20 74 68 61 74 20 69 6e copy of that in
1330: 66 6f 72 6d 61 74 69 6f 6e 0a 20 73 74 6f 72 65 formation. store
1340: 64 20 69 6e 20 74 68 65 20 67 6c 6f 62 61 6c 20 d in the global
1350: 76 61 72 69 61 62 6c 65 20 5c 66 42 65 72 72 6f variable \fBerro
1360: 72 49 6e 66 6f 5c 66 52 29 2e 0a 20 2e 54 50 0a rInfo\fR).. .TP.
1370: 2b 5c 66 42 5c 2d 65 72 72 6f 72 73 74 61 63 6b +\fB\-errorstack
1380: 20 5c 66 49 6c 69 73 74 5c 66 52 0a 2b 2e 0a 2b \fIlist\fR.+..+
1390: 54 68 65 20 5c 66 42 5c 2d 65 72 72 6f 72 73 74 The \fB\-errorst
13a0: 61 63 6b 5c 66 52 20 6f 70 74 69 6f 6e 20 72 65 ack\fR option re
13b0: 63 65 69 76 65 73 20 73 70 65 63 69 61 6c 20 74 ceives special t
13c0: 72 65 61 74 6d 65 6e 74 20 6f 6e 6c 79 20 77 68 reatment only wh
13d0: 65 6e 20 74 68 65 20 76 61 6c 75 65 0a 2b 6f 66 en the value.+of
13e0: 20 74 68 65 20 5c 66 42 5c 2d 63 6f 64 65 5c 66 the \fB\-code\f
13f0: 52 20 6f 70 74 69 6f 6e 20 69 73 20 5c 66 42 54 R option is \fBT
1400: 43 4c 5f 45 52 52 4f 52 5c 66 52 2e 20 20 54 68 CL_ERROR\fR. Th
1410: 65 6e 20 5c 66 49 6c 69 73 74 5c 66 52 20 69 73 en \fIlist\fR is
1420: 20 74 68 65 20 69 6e 69 74 69 61 6c 0a 2b 65 72 the initial.+er
1430: 72 6f 72 20 73 74 61 63 6b 2c 20 72 65 63 6f 72 ror stack, recor
1440: 64 69 6e 67 20 61 63 74 75 61 6c 20 61 72 67 75 ding actual argu
1450: 6d 65 6e 74 20 76 61 6c 75 65 73 20 70 61 73 73 ment values pass
1460: 65 64 20 74 6f 20 65 61 63 68 20 70 72 6f 63 20 ed to each proc
1470: 6c 65 76 65 6c 2e 20 20 54 68 65 20 65 72 72 6f level. The erro
1480: 72 20 73 74 61 63 6b 20 77 69 6c 6c 0a 2b 61 6c r stack will.+al
1490: 73 6f 20 62 65 20 72 65 61 63 68 61 62 6c 65 20 so be reachable
14a0: 74 68 72 6f 75 67 68 20 5b 69 6e 66 6f 20 65 72 through [info er
14b0: 72 6f 72 73 74 61 63 6b 5d 2e 0a 2b 49 66 20 6e rorstack]..+If n
14c0: 6f 20 5c 66 42 5c 2d 65 72 72 6f 72 73 74 61 63 o \fB\-errorstac
14d0: 6b 5c 66 52 20 6f 70 74 69 6f 6e 20 69 73 20 70 k\fR option is p
14e0: 72 6f 76 69 64 65 64 20 74 6f 20 5c 66 42 72 65 rovided to \fBre
14f0: 74 75 72 6e 5c 66 52 20 77 68 65 6e 0a 2b 74 68 turn\fR when.+th
1500: 65 20 5c 66 42 5c 2d 63 6f 64 65 20 65 72 72 6f e \fB\-code erro
1510: 72 5c 66 52 20 6f 70 74 69 6f 6e 20 69 73 20 70 r\fR option is p
1520: 72 6f 76 69 64 65 64 2c 20 54 63 6c 20 77 69 6c rovided, Tcl wil
1530: 6c 20 70 72 6f 76 69 64 65 20 69 74 73 20 6f 77 l provide its ow
1540: 6e 0a 2b 69 6e 69 74 69 61 6c 20 65 72 72 6f 72 n.+initial error
1550: 20 73 74 61 63 6b 20 69 6e 20 74 68 65 20 65 6e stack in the en
1560: 74 72 79 20 66 6f 72 20 5c 66 42 5c 2d 65 72 72 try for \fB\-err
1570: 6f 72 73 74 61 63 6b 5c 66 52 2e 20 20 54 63 6c orstack\fR. Tcl
1580: 27 73 0a 2b 69 6e 69 74 69 61 6c 20 65 72 72 6f 's.+initial erro
1590: 72 20 73 74 61 63 6b 20 77 69 6c 6c 20 69 6e 63 r stack will inc
15a0: 6c 75 64 65 20 6f 6e 6c 79 20 74 68 65 20 63 61 lude only the ca
15b0: 6c 6c 20 74 6f 20 74 68 65 20 70 72 6f 63 65 64 ll to the proced
15c0: 75 72 65 2c 20 61 6e 64 0a 2b 73 74 61 63 6b 20 ure, and.+stack
15d0: 75 6e 77 69 6e 64 69 6e 67 20 77 69 6c 6c 20 61 unwinding will a
15e0: 70 70 65 6e 64 20 69 6e 66 6f 72 6d 61 74 69 6f ppend informatio
15f0: 6e 20 61 62 6f 75 74 20 68 69 67 68 65 72 20 73 n about higher s
1600: 74 61 63 6b 20 6c 65 76 65 6c 73 2c 20 62 75 74 tack levels, but
1610: 0a 2b 74 68 65 72 65 20 77 69 6c 6c 20 62 65 20 .+there will be
1620: 6e 6f 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 61 no information a
1630: 62 6f 75 74 20 74 68 65 20 63 6f 6e 74 65 78 74 bout the context
1640: 20 6f 66 20 74 68 65 20 65 72 72 6f 72 20 77 69 of the error wi
1650: 74 68 69 6e 0a 2b 74 68 65 20 70 72 6f 63 65 64 thin.+the proced
1660: 75 72 65 2e 20 20 54 79 70 69 63 61 6c 6c 79 20 ure. Typically
1670: 74 68 65 20 5c 66 49 6c 69 73 74 5c 66 52 20 76 the \fIlist\fR v
1680: 61 6c 75 65 20 69 73 20 73 75 70 70 6c 69 65 64 alue is supplied
1690: 20 66 72 6f 6d 0a 2b 74 68 65 20 76 61 6c 75 65 from.+the value
16a0: 20 6f 66 20 5c 66 42 5c 2d 65 72 72 6f 72 73 74 of \fB\-errorst
16b0: 61 63 6b 5c 66 52 20 69 6e 20 61 20 72 65 74 75 ack\fR in a retu
16c0: 72 6e 20 6f 70 74 69 6f 6e 73 20 64 69 63 74 69 rn options dicti
16d0: 6f 6e 61 72 79 20 63 61 70 74 75 72 65 64 0a 2b onary captured.+
16e0: 62 79 20 74 68 65 20 5c 66 42 63 61 74 63 68 5c by the \fBcatch\
16f0: 66 52 20 63 6f 6d 6d 61 6e 64 20 28 6f 72 20 66 fR command (or f
1700: 72 6f 6d 20 74 68 65 20 63 6f 70 79 20 6f 66 20 rom the copy of
1710: 74 68 61 74 20 69 6e 66 6f 72 6d 61 74 69 6f 6e that information
1720: 20 66 72 6f 6d 20 5b 69 6e 66 6f 20 65 72 72 6f from [info erro
1730: 72 73 74 61 63 6b 5d 29 2e 0a 2b 2e 54 50 0a 20 rstack])..+.TP.
1740: 5c 66 42 5c 2d 6c 65 76 65 6c 20 5c 66 49 6c 65 \fB\-level \fIle
1750: 76 65 6c 5c 66 52 0a 20 2e 0a 20 54 68 65 20 5c vel\fR. .. The \
1760: 66 42 5c 2d 6c 65 76 65 6c 5c 66 52 20 61 6e 64 fB\-level\fR and
1770: 20 5c 66 42 5c 2d 63 6f 64 65 5c 66 52 20 6f 70 \fB\-code\fR op
1780: 74 69 6f 6e 73 20 77 6f 72 6b 20 74 6f 67 65 74 tions work toget
1790: 68 65 72 20 74 6f 20 73 65 74 20 74 68 65 20 72 her to set the r
17a0: 65 74 75 72 6e 0a 49 6e 64 65 78 3a 20 67 65 6e eturn.Index: gen
17b0: 65 72 69 63 2f 74 63 6c 42 61 73 69 63 2e 63 0a eric/tclBasic.c.
17c0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
17d0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
17e0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
17f0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
1800: 3d 3d 3d 0a 52 43 53 20 66 69 6c 65 3a 20 2f 63 ===.RCS file: /c
1810: 76 73 72 6f 6f 74 2f 74 63 6c 2f 74 63 6c 2f 67 vsroot/tcl/tcl/g
1820: 65 6e 65 72 69 63 2f 74 63 6c 42 61 73 69 63 2e eneric/tclBasic.
1830: 63 2c 76 0a 72 65 74 72 69 65 76 69 6e 67 20 72 c,v.retrieving r
1840: 65 76 69 73 69 6f 6e 20 31 2e 34 34 39 0a 64 69 evision 1.449.di
1850: 66 66 20 2d 75 20 2d 70 20 2d 75 20 2d 70 20 2d ff -u -p -u -p -
1860: 72 31 2e 34 34 39 20 74 63 6c 42 61 73 69 63 2e r1.449 tclBasic.
1870: 63 0a 2d 2d 2d 20 67 65 6e 65 72 69 63 2f 74 63 c.--- generic/tc
1880: 6c 42 61 73 69 63 2e 63 09 31 39 20 4d 61 72 20 lBasic.c.19 Mar
1890: 32 30 31 30 20 31 31 3a 35 34 3a 30 36 20 2d 30 2010 11:54:06 -0
18a0: 30 30 30 09 31 2e 34 34 39 0a 2b 2b 2b 20 67 65 000.1.449.+++ ge
18b0: 6e 65 72 69 63 2f 74 63 6c 42 61 73 69 63 2e 63 neric/tclBasic.c
18c0: 09 33 31 20 4d 61 72 20 32 30 31 30 20 31 34 3a .31 Mar 2010 14:
18d0: 31 34 3a 33 39 20 2d 30 30 30 30 0a 40 40 20 2d 14:39 -0000.@@ -
18e0: 35 32 39 2c 36 20 2b 35 32 39 2c 31 33 20 40 40 529,6 +529,13 @@
18f0: 20 54 63 6c 5f 43 72 65 61 74 65 49 6e 74 65 72 Tcl_CreateInter
1900: 70 28 76 6f 69 64 29 0a 20 20 20 20 20 69 50 74 p(void). iPt
1910: 72 2d 3e 65 72 72 6f 72 49 6e 66 6f 20 3d 20 4e r->errorInfo = N
1920: 55 4c 4c 3b 0a 20 20 20 20 20 54 63 6c 4e 65 77 ULL;. TclNew
1930: 4c 69 74 65 72 61 6c 53 74 72 69 6e 67 4f 62 6a LiteralStringObj
1940: 28 69 50 74 72 2d 3e 65 69 56 61 72 2c 20 22 3a (iPtr->eiVar, ":
1950: 3a 65 72 72 6f 72 49 6e 66 6f 22 29 3b 0a 20 20 :errorInfo");.
1960: 20 20 20 54 63 6c 5f 49 6e 63 72 52 65 66 43 6f Tcl_IncrRefCo
1970: 75 6e 74 28 69 50 74 72 2d 3e 65 69 56 61 72 29 unt(iPtr->eiVar)
1980: 3b 0a 2b 20 20 20 20 69 50 74 72 2d 3e 65 72 72 ;.+ iPtr->err
1990: 6f 72 53 74 61 63 6b 20 3d 20 54 63 6c 5f 4e 65 orStack = Tcl_Ne
19a0: 77 4c 69 73 74 4f 62 6a 28 30 2c 20 4e 55 4c 4c wListObj(0, NULL
19b0: 29 3b 0a 2b 20 20 20 20 54 63 6c 5f 49 6e 63 72 );.+ Tcl_Incr
19c0: 52 65 66 43 6f 75 6e 74 28 69 50 74 72 2d 3e 65 RefCount(iPtr->e
19d0: 72 72 6f 72 53 74 61 63 6b 29 3b 0a 2b 20 20 20 rrorStack);.+
19e0: 20 69 50 74 72 2d 3e 72 65 73 65 74 45 72 72 6f iPtr->resetErro
19f0: 72 53 74 61 63 6b 20 3d 20 31 3b 0a 2b 20 20 20 rStack = 1;.+
1a00: 20 54 63 6c 4e 65 77 4c 69 74 65 72 61 6c 53 74 TclNewLiteralSt
1a10: 72 69 6e 67 4f 62 6a 28 69 50 74 72 2d 3e 75 70 ringObj(iPtr->up
1a20: 4c 69 74 65 72 61 6c 2c 22 55 50 22 29 3b 0a 2b Literal,"UP");.+
1a30: 20 20 20 20 54 63 6c 5f 49 6e 63 72 52 65 66 43 Tcl_IncrRefC
1a40: 6f 75 6e 74 28 69 50 74 72 2d 3e 75 70 4c 69 74 ount(iPtr->upLit
1a50: 65 72 61 6c 29 3b 0a 2b 20 20 20 20 54 63 6c 4e eral);.+ TclN
1a60: 65 77 4c 69 74 65 72 61 6c 53 74 72 69 6e 67 4f ewLiteralStringO
1a70: 62 6a 28 69 50 74 72 2d 3e 63 61 6c 6c 4c 69 74 bj(iPtr->callLit
1a80: 65 72 61 6c 2c 22 43 41 4c 4c 22 29 3b 0a 2b 20 eral,"CALL");.+
1a90: 20 20 20 54 63 6c 5f 49 6e 63 72 52 65 66 43 6f Tcl_IncrRefCo
1aa0: 75 6e 74 28 69 50 74 72 2d 3e 63 61 6c 6c 4c 69 unt(iPtr->callLi
1ab0: 74 65 72 61 6c 29 3b 0a 20 20 20 20 20 69 50 74 teral);. iPt
1ac0: 72 2d 3e 65 72 72 6f 72 43 6f 64 65 20 3d 20 4e r->errorCode = N
1ad0: 55 4c 4c 3b 0a 20 20 20 20 20 54 63 6c 4e 65 77 ULL;. TclNew
1ae0: 4c 69 74 65 72 61 6c 53 74 72 69 6e 67 4f 62 6a LiteralStringObj
1af0: 28 69 50 74 72 2d 3e 65 63 56 61 72 2c 20 22 3a (iPtr->ecVar, ":
1b00: 3a 65 72 72 6f 72 43 6f 64 65 22 29 3b 0a 20 20 :errorCode");.
1b10: 20 20 20 54 63 6c 5f 49 6e 63 72 52 65 66 43 6f Tcl_IncrRefCo
1b20: 75 6e 74 28 69 50 74 72 2d 3e 65 63 56 61 72 29 unt(iPtr->ecVar)
1b30: 3b 0a 40 40 20 2d 31 34 36 37 2c 36 20 2b 31 34 ;.@@ -1467,6 +14
1b40: 37 34 2c 31 30 20 40 40 20 44 65 6c 65 74 65 49 74,10 @@ DeleteI
1b50: 6e 74 65 72 70 50 72 6f 63 28 0a 20 09 54 63 6c nterpProc(. .Tcl
1b60: 5f 44 65 63 72 52 65 66 43 6f 75 6e 74 28 69 50 _DecrRefCount(iP
1b70: 74 72 2d 3e 65 72 72 6f 72 49 6e 66 6f 29 3b 0a tr->errorInfo);.
1b80: 20 09 69 50 74 72 2d 3e 65 72 72 6f 72 49 6e 66 .iPtr->errorInf
1b90: 6f 20 3d 20 4e 55 4c 4c 3b 0a 20 20 20 20 20 7d o = NULL;. }
1ba0: 0a 2b 20 20 20 20 54 63 6c 5f 44 65 63 72 52 65 .+ Tcl_DecrRe
1bb0: 66 43 6f 75 6e 74 28 69 50 74 72 2d 3e 65 72 72 fCount(iPtr->err
1bc0: 6f 72 53 74 61 63 6b 29 3b 0a 2b 20 20 20 20 69 orStack);.+ i
1bd0: 50 74 72 2d 3e 65 72 72 6f 72 53 74 61 63 6b 20 Ptr->errorStack
1be0: 3d 20 4e 55 4c 4c 3b 0a 2b 20 20 20 20 54 63 6c = NULL;.+ Tcl
1bf0: 5f 44 65 63 72 52 65 66 43 6f 75 6e 74 28 69 50 _DecrRefCount(iP
1c00: 74 72 2d 3e 75 70 4c 69 74 65 72 61 6c 29 3b 0a tr->upLiteral);.
1c10: 2b 20 20 20 20 54 63 6c 5f 44 65 63 72 52 65 66 + Tcl_DecrRef
1c20: 43 6f 75 6e 74 28 69 50 74 72 2d 3e 63 61 6c 6c Count(iPtr->call
1c30: 4c 69 74 65 72 61 6c 29 3b 0a 20 20 20 20 20 69 Literal);. i
1c40: 66 20 28 69 50 74 72 2d 3e 72 65 74 75 72 6e 4f f (iPtr->returnO
1c50: 70 74 73 29 20 7b 0a 20 09 54 63 6c 5f 44 65 63 pts) {. .Tcl_Dec
1c60: 72 52 65 66 43 6f 75 6e 74 28 69 50 74 72 2d 3e rRefCount(iPtr->
1c70: 72 65 74 75 72 6e 4f 70 74 73 29 3b 0a 20 20 20 returnOpts);.
1c80: 20 20 7d 0a 40 40 20 2d 38 39 34 33 2c 35 20 2b }.@@ -8943,5 +
1c90: 38 39 35 34 2c 37 20 40 40 20 54 63 6c 49 6e 66 8954,7 @@ TclInf
1ca0: 6f 43 6f 72 6f 75 74 69 6e 65 43 6d 64 28 0a 20 oCoroutineCmd(.
1cb0: 20 2a 20 6d 6f 64 65 3a 20 63 0a 20 20 2a 20 63 * mode: c. * c
1cc0: 2d 62 61 73 69 63 2d 6f 66 66 73 65 74 3a 20 34 -basic-offset: 4
1cd0: 0a 20 20 2a 20 66 69 6c 6c 2d 63 6f 6c 75 6d 6e . * fill-column
1ce0: 3a 20 37 38 0a 2b 20 2a 20 74 61 62 2d 77 69 64 : 78.+ * tab-wid
1cf0: 74 68 3a 20 38 0a 2b 20 2a 20 69 6e 64 65 6e 74 th: 8.+ * indent
1d00: 2d 74 61 62 73 2d 6d 6f 64 65 3a 20 6e 69 6c 0a -tabs-mode: nil.
1d10: 20 20 2a 20 45 6e 64 3a 0a 20 20 2a 2f 0a 49 6e * End:. */.In
1d20: 64 65 78 3a 20 67 65 6e 65 72 69 63 2f 74 63 6c dex: generic/tcl
1d30: 43 6d 64 49 4c 2e 63 0a 3d 3d 3d 3d 3d 3d 3d 3d CmdIL.c.========
1d40: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
1d50: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
1d60: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
1d70: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 52 43 53 20 ===========.RCS
1d80: 66 69 6c 65 3a 20 2f 63 76 73 72 6f 6f 74 2f 74 file: /cvsroot/t
1d90: 63 6c 2f 74 63 6c 2f 67 65 6e 65 72 69 63 2f 74 cl/tcl/generic/t
1da0: 63 6c 43 6d 64 49 4c 2e 63 2c 76 0a 72 65 74 72 clCmdIL.c,v.retr
1db0: 69 65 76 69 6e 67 20 72 65 76 69 73 69 6f 6e 20 ieving revision
1dc0: 31 2e 31 38 30 0a 64 69 66 66 20 2d 75 20 2d 70 1.180.diff -u -p
1dd0: 20 2d 75 20 2d 70 20 2d 72 31 2e 31 38 30 20 74 -u -p -r1.180 t
1de0: 63 6c 43 6d 64 49 4c 2e 63 0a 2d 2d 2d 20 67 65 clCmdIL.c.--- ge
1df0: 6e 65 72 69 63 2f 74 63 6c 43 6d 64 49 4c 2e 63 neric/tclCmdIL.c
1e00: 09 35 20 4d 61 72 20 32 30 31 30 20 31 34 3a 33 .5 Mar 2010 14:3
1e10: 34 3a 30 33 20 2d 30 30 30 30 09 31 2e 31 38 30 4:03 -0000.1.180
1e20: 0a 2b 2b 2b 20 67 65 6e 65 72 69 63 2f 74 63 6c .+++ generic/tcl
1e30: 43 6d 64 49 4c 2e 63 09 33 31 20 4d 61 72 20 32 CmdIL.c.31 Mar 2
1e40: 30 31 30 20 31 34 3a 31 34 3a 33 39 20 2d 30 30 010 14:14:39 -00
1e50: 30 30 0a 40 40 20 2d 31 31 38 2c 36 20 2b 31 31 00.@@ -118,6 +11
1e60: 38 2c 39 20 40 40 20 73 74 61 74 69 63 20 69 6e 8,9 @@ static in
1e70: 74 09 09 49 6e 66 6f 43 6f 6d 70 6c 65 74 65 43 t..InfoCompleteC
1e80: 6d 64 28 43 6c 69 65 6e 74 44 61 74 61 20 64 0a md(ClientData d.
1e90: 20 09 09 09 20 20 20 20 69 6e 74 20 6f 62 6a 63 ... int objc
1ea0: 2c 20 54 63 6c 5f 4f 62 6a 20 2a 63 6f 6e 73 74 , Tcl_Obj *const
1eb0: 20 6f 62 6a 76 5b 5d 29 3b 0a 20 73 74 61 74 69 objv[]);. stati
1ec0: 63 20 69 6e 74 09 09 49 6e 66 6f 44 65 66 61 75 c int..InfoDefau
1ed0: 6c 74 43 6d 64 28 43 6c 69 65 6e 74 44 61 74 61 ltCmd(ClientData
1ee0: 20 64 75 6d 6d 79 2c 20 54 63 6c 5f 49 6e 74 65 dummy, Tcl_Inte
1ef0: 72 70 20 2a 69 6e 74 65 72 70 2c 0a 20 09 09 09 rp *interp,. ...
1f00: 20 20 20 20 69 6e 74 20 6f 62 6a 63 2c 20 54 63 int objc, Tc
1f10: 6c 5f 4f 62 6a 20 2a 63 6f 6e 73 74 20 6f 62 6a l_Obj *const obj
1f20: 76 5b 5d 29 3b 0a 2b 2f 2a 20 54 49 50 20 23 33 v[]);.+/* TIP #3
1f30: 34 38 20 2d 20 4e 65 77 20 27 69 6e 66 6f 27 20 48 - New 'info'
1f40: 73 75 62 63 6f 6d 6d 61 6e 64 20 27 65 72 72 6f subcommand 'erro
1f50: 72 73 74 61 63 6b 27 20 2a 2f 0a 2b 73 74 61 74 rstack' */.+stat
1f60: 69 63 20 69 6e 74 09 09 49 6e 66 6f 45 72 72 6f ic int..InfoErro
1f70: 72 53 74 61 63 6b 43 6d 64 28 43 6c 69 65 6e 74 rStackCmd(Client
1f80: 44 61 74 61 20 64 75 6d 6d 79 2c 20 54 63 6c 5f Data dummy, Tcl_
1f90: 49 6e 74 65 72 70 20 2a 69 6e 74 65 72 70 2c 0a Interp *interp,.
1fa0: 2b 09 09 09 20 20 20 20 69 6e 74 20 6f 62 6a 63 +... int objc
1fb0: 2c 20 54 63 6c 5f 4f 62 6a 20 2a 63 6f 6e 73 74 , Tcl_Obj *const
1fc0: 20 6f 62 6a 76 5b 5d 29 3b 0a 20 2f 2a 20 54 49 objv[]);. /* TI
1fd0: 50 20 23 32 38 30 20 2d 20 4e 65 77 20 27 69 6e P #280 - New 'in
1fe0: 66 6f 27 20 73 75 62 63 6f 6d 6d 61 6e 64 20 27 fo' subcommand '
1ff0: 66 72 61 6d 65 27 20 2a 2f 0a 20 73 74 61 74 69 frame' */. stati
2000: 63 20 69 6e 74 09 09 49 6e 66 6f 46 72 61 6d 65 c int..InfoFrame
2010: 43 6d 64 28 43 6c 69 65 6e 74 44 61 74 61 20 64 Cmd(ClientData d
2020: 75 6d 6d 79 2c 20 54 63 6c 5f 49 6e 74 65 72 70 ummy, Tcl_Interp
2030: 20 2a 69 6e 74 65 72 70 2c 0a 20 09 09 09 20 20 *interp,. ...
2040: 20 20 69 6e 74 20 6f 62 6a 63 2c 20 54 63 6c 5f int objc, Tcl_
2050: 4f 62 6a 20 2a 63 6f 6e 73 74 20 6f 62 6a 76 5b Obj *const objv[
2060: 5d 29 3b 0a 40 40 20 2d 31 36 34 2c 36 20 2b 31 ]);.@@ -164,6 +1
2070: 36 37 2c 37 20 40 40 20 73 74 61 74 69 63 20 63 67,7 @@ static c
2080: 6f 6e 73 74 20 45 6e 73 65 6d 62 6c 65 49 6d 70 onst EnsembleImp
2090: 6c 4d 61 70 20 64 65 66 61 75 6c 74 49 6e 66 6f lMap defaultInfo
20a0: 0a 20 20 20 20 20 7b 22 63 6f 6d 70 6c 65 74 65 . {"complete
20b0: 22 2c 09 20 20 20 49 6e 66 6f 43 6f 6d 70 6c 65 ",. InfoComple
20c0: 74 65 43 6d 64 2c 09 20 20 20 20 4e 55 4c 4c 2c teCmd,. NULL,
20d0: 20 4e 55 4c 4c 2c 20 4e 55 4c 4c 7d 2c 0a 20 20 NULL, NULL},.
20e0: 20 20 20 7b 22 63 6f 72 6f 75 74 69 6e 65 22 2c {"coroutine",
20f0: 09 20 20 20 54 63 6c 49 6e 66 6f 43 6f 72 6f 75 . TclInfoCorou
2100: 74 69 6e 65 43 6d 64 2c 20 20 20 20 20 4e 55 4c tineCmd, NUL
2110: 4c 2c 20 4e 55 4c 4c 2c 20 4e 55 4c 4c 7d 2c 0a L, NULL, NULL},.
2120: 20 20 20 20 20 7b 22 64 65 66 61 75 6c 74 22 2c {"default",
2130: 09 09 20 20 20 49 6e 66 6f 44 65 66 61 75 6c 74 .. InfoDefault
2140: 43 6d 64 2c 09 20 20 20 20 4e 55 4c 4c 2c 20 4e Cmd,. NULL, N
2150: 55 4c 4c 2c 20 4e 55 4c 4c 7d 2c 0a 2b 20 20 20 ULL, NULL},.+
2160: 20 7b 22 65 72 72 6f 72 73 74 61 63 6b 22 2c 09 {"errorstack",.
2170: 20 20 20 49 6e 66 6f 45 72 72 6f 72 53 74 61 63 InfoErrorStac
2180: 6b 43 6d 64 2c 09 20 20 20 20 4e 55 4c 4c 2c 20 kCmd,. NULL,
2190: 4e 55 4c 4c 2c 20 4e 55 4c 4c 7d 2c 0a 20 20 20 NULL, NULL},.
21a0: 20 20 7b 22 65 78 69 73 74 73 22 2c 09 09 20 20 {"exists",..
21b0: 20 54 63 6c 49 6e 66 6f 45 78 69 73 74 73 43 6d TclInfoExistsCm
21c0: 64 2c 09 20 20 20 20 54 63 6c 43 6f 6d 70 69 6c d,. TclCompil
21d0: 65 49 6e 66 6f 45 78 69 73 74 73 43 6d 64 2c 20 eInfoExistsCmd,
21e0: 4e 55 4c 4c 2c 20 4e 55 4c 4c 7d 2c 0a 20 20 20 NULL, NULL},.
21f0: 20 20 7b 22 66 72 61 6d 65 22 2c 09 09 20 20 20 {"frame",..
2200: 49 6e 66 6f 46 72 61 6d 65 43 6d 64 2c 09 20 20 InfoFrameCmd,.
2210: 20 20 4e 55 4c 4c 2c 20 4e 55 4c 4c 2c 20 4e 55 NULL, NULL, NU
2220: 4c 4c 7d 2c 0a 20 20 20 20 20 7b 22 66 75 6e 63 LL},. {"func
2230: 74 69 6f 6e 73 22 2c 09 20 20 20 49 6e 66 6f 46 tions",. InfoF
2240: 75 6e 63 74 69 6f 6e 73 43 6d 64 2c 09 20 20 20 unctionsCmd,.
2250: 20 4e 55 4c 4c 2c 20 4e 55 4c 4c 2c 20 4e 55 4c NULL, NULL, NUL
2260: 4c 7d 2c 0a 40 40 20 2d 31 30 32 32 2c 36 20 2b L},.@@ -1022,6 +
2270: 31 30 32 36 2c 35 35 20 40 40 20 49 6e 66 6f 44 1026,55 @@ InfoD
2280: 65 66 61 75 6c 74 43 6d 64 28 0a 20 2f 2a 0a 20 efaultCmd(. /*.
2290: 20 2a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d *--------------
22a0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
22b0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
22c0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
22d0: 2d 2d 2d 2d 2d 2d 2d 2d 0a 20 20 2a 0a 2b 20 2a --------. *.+ *
22e0: 20 49 6e 66 6f 45 72 72 6f 72 53 74 61 63 6b 43 InfoErrorStackC
22f0: 6d 64 20 2d 2d 0a 2b 20 2a 0a 2b 20 2a 09 43 61 md --.+ *.+ *.Ca
2300: 6c 6c 65 64 20 74 6f 20 69 6d 70 6c 65 6d 65 6e lled to implemen
2310: 74 20 74 68 65 20 22 69 6e 66 6f 20 65 72 72 6f t the "info erro
2320: 72 73 74 61 63 6b 22 20 63 6f 6d 6d 61 6e 64 20 rstack" command
2330: 74 68 61 74 20 72 65 74 75 72 6e 73 20 69 6e 66 that returns inf
2340: 6f 72 6d 61 74 69 6f 6e 0a 2b 20 2a 09 61 62 6f ormation.+ *.abo
2350: 75 74 20 74 68 65 20 6c 61 73 74 20 65 72 72 6f ut the last erro
2360: 72 27 73 20 63 61 6c 6c 20 73 74 61 63 6b 2e 20 r's call stack.
2370: 48 61 6e 64 6c 65 73 20 74 68 65 20 66 6f 6c 6c Handles the foll
2380: 6f 77 69 6e 67 20 73 79 6e 74 61 78 3a 0a 2b 20 owing syntax:.+
2390: 2a 0a 2b 20 2a 09 20 20 20 20 69 6e 66 6f 20 65 *.+ *. info e
23a0: 72 72 6f 72 73 74 61 63 6b 20 3f 69 6e 74 65 72 rrorstack ?inter
23b0: 70 3f 0a 2b 20 2a 0a 2b 20 2a 20 52 65 73 75 6c p?.+ *.+ * Resul
23c0: 74 73 3a 0a 2b 20 2a 09 52 65 74 75 72 6e 73 20 ts:.+ *.Returns
23d0: 54 43 4c 5f 4f 4b 20 69 66 20 73 75 63 63 65 73 TCL_OK if succes
23e0: 73 66 75 6c 20 61 6e 64 20 54 43 4c 5f 45 52 52 sful and TCL_ERR
23f0: 4f 52 20 69 66 20 74 68 65 72 65 20 69 73 20 61 OR if there is a
2400: 6e 20 65 72 72 6f 72 2e 0a 2b 20 2a 0a 2b 20 2a n error..+ *.+ *
2410: 20 53 69 64 65 20 65 66 66 65 63 74 73 3a 0a 2b Side effects:.+
2420: 20 2a 09 52 65 74 75 72 6e 73 20 61 20 72 65 73 *.Returns a res
2430: 75 6c 74 20 69 6e 20 74 68 65 20 69 6e 74 65 72 ult in the inter
2440: 70 72 65 74 65 72 27 73 20 72 65 73 75 6c 74 20 preter's result
2450: 6f 62 6a 65 63 74 2e 20 49 66 20 74 68 65 72 65 object. If there
2460: 20 69 73 20 61 6e 0a 2b 20 2a 09 65 72 72 6f 72 is an.+ *.error
2470: 2c 20 74 68 65 20 72 65 73 75 6c 74 20 69 73 20 , the result is
2480: 61 6e 20 65 72 72 6f 72 20 6d 65 73 73 61 67 65 an error message
2490: 2e 0a 2b 20 2a 0a 2b 20 2a 2d 2d 2d 2d 2d 2d 2d ..+ *.+ *-------
24a0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
24b0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
24c0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
24d0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a ---------------.
24e0: 2b 20 2a 2f 0a 2b 0a 2b 73 74 61 74 69 63 20 69 + */.+.+static i
24f0: 6e 74 0a 2b 49 6e 66 6f 45 72 72 6f 72 53 74 61 nt.+InfoErrorSta
2500: 63 6b 43 6d 64 28 0a 2b 20 20 20 20 43 6c 69 65 ckCmd(.+ Clie
2510: 6e 74 44 61 74 61 20 64 75 6d 6d 79 2c 09 09 2f ntData dummy,../
2520: 2a 20 4e 6f 74 20 75 73 65 64 2e 20 2a 2f 0a 2b * Not used. */.+
2530: 20 20 20 20 54 63 6c 5f 49 6e 74 65 72 70 20 2a Tcl_Interp *
2540: 69 6e 74 65 72 70 2c 09 09 2f 2a 20 43 75 72 72 interp,../* Curr
2550: 65 6e 74 20 69 6e 74 65 72 70 72 65 74 65 72 2e ent interpreter.
2560: 20 2a 2f 0a 2b 20 20 20 20 69 6e 74 20 6f 62 6a */.+ int obj
2570: 63 2c 09 09 09 2f 2a 20 4e 75 6d 62 65 72 20 6f c,.../* Number o
2580: 66 20 61 72 67 75 6d 65 6e 74 73 2e 20 2a 2f 0a f arguments. */.
2590: 2b 20 20 20 20 54 63 6c 5f 4f 62 6a 20 2a 63 6f + Tcl_Obj *co
25a0: 6e 73 74 20 6f 62 6a 76 5b 5d 29 09 2f 2a 20 41 nst objv[])./* A
25b0: 72 67 75 6d 65 6e 74 20 6f 62 6a 65 63 74 73 2e rgument objects.
25c0: 20 2a 2f 0a 2b 7b 0a 2b 20 20 20 20 54 63 6c 5f */.+{.+ Tcl_
25d0: 49 6e 74 65 72 70 20 2a 74 61 72 67 65 74 3b 0a Interp *target;.
25e0: 2b 20 20 20 20 49 6e 74 65 72 70 20 2a 69 50 74 + Interp *iPt
25f0: 72 3b 0a 2b 0a 2b 20 20 20 20 69 66 20 28 28 6f r;.+.+ if ((o
2600: 62 6a 63 20 21 3d 20 31 29 20 26 26 20 28 6f 62 bjc != 1) && (ob
2610: 6a 63 20 21 3d 20 32 29 29 20 7b 0a 2b 09 54 63 jc != 2)) {.+.Tc
2620: 6c 5f 57 72 6f 6e 67 4e 75 6d 41 72 67 73 28 69 l_WrongNumArgs(i
2630: 6e 74 65 72 70 2c 20 31 2c 20 6f 62 6a 76 2c 20 nterp, 1, objv,
2640: 22 3f 69 6e 74 65 72 70 3f 22 29 3b 0a 2b 09 72 "?interp?");.+.r
2650: 65 74 75 72 6e 20 54 43 4c 5f 45 52 52 4f 52 3b eturn TCL_ERROR;
2660: 0a 2b 20 20 20 20 7d 0a 2b 20 20 20 20 0a 2b 20 .+ }.+ .+
2670: 20 20 20 74 61 72 67 65 74 20 3d 20 69 6e 74 65 target = inte
2680: 72 70 3b 0a 2b 20 20 20 20 69 66 20 28 6f 62 6a rp;.+ if (obj
2690: 63 20 3d 3d 20 32 29 20 7b 0a 2b 20 20 20 20 20 c == 2) {.+
26a0: 20 20 20 74 61 72 67 65 74 20 3d 20 54 63 6c 5f target = Tcl_
26b0: 47 65 74 53 6c 61 76 65 28 69 6e 74 65 72 70 2c GetSlave(interp,
26c0: 20 54 63 6c 5f 47 65 74 53 74 72 69 6e 67 28 6f Tcl_GetString(o
26d0: 62 6a 76 5b 31 5d 29 29 3b 0a 2b 20 20 20 20 20 bjv[1]));.+
26e0: 20 20 20 69 66 20 28 74 61 72 67 65 74 20 3d 3d if (target ==
26f0: 20 4e 55 4c 4c 29 20 7b 0a 2b 20 20 20 20 20 20 NULL) {.+
2700: 20 20 20 20 20 20 72 65 74 75 72 6e 20 54 43 4c return TCL
2710: 5f 45 52 52 4f 52 3b 0a 2b 20 20 20 20 20 20 20 _ERROR;.+
2720: 20 7d 0a 2b 20 20 20 20 7d 0a 2b 0a 2b 20 20 20 }.+ }.+.+
2730: 20 69 50 74 72 20 3d 20 28 49 6e 74 65 72 70 20 iPtr = (Interp
2740: 2a 29 20 74 61 72 67 65 74 3b 0a 2b 20 20 20 20 *) target;.+
2750: 54 63 6c 5f 53 65 74 4f 62 6a 52 65 73 75 6c 74 Tcl_SetObjResult
2760: 28 69 6e 74 65 72 70 2c 20 69 50 74 72 2d 3e 65 (interp, iPtr->e
2770: 72 72 6f 72 53 74 61 63 6b 29 3b 0a 2b 20 20 20 rrorStack);.+
2780: 20 0a 2b 20 20 20 20 72 65 74 75 72 6e 20 54 43 .+ return TC
2790: 4c 5f 4f 4b 3b 0a 2b 7d 0a 2b 0c 0a 2b 2f 2a 0a L_OK;.+}.+..+/*.
27a0: 2b 20 2a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d + *-------------
27b0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
27c0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
27d0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
27e0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 2b 20 2a 0a 20 20 ---------.+ *.
27f0: 2a 20 54 63 6c 49 6e 66 6f 45 78 69 73 74 73 43 * TclInfoExistsC
2800: 6d 64 20 2d 2d 0a 20 20 2a 0a 20 20 2a 09 43 61 md --. *. *.Ca
2810: 6c 6c 65 64 20 74 6f 20 69 6d 70 6c 65 6d 65 6e lled to implemen
2820: 74 20 74 68 65 20 22 69 6e 66 6f 20 65 78 69 73 t the "info exis
2830: 74 73 22 20 63 6f 6d 6d 61 6e 64 20 74 68 61 74 ts" command that
2840: 20 64 65 74 65 72 6d 69 6e 65 73 20 77 68 65 74 determines whet
2850: 68 65 72 0a 40 40 20 2d 34 34 30 31 2c 35 20 2b her.@@ -4401,5 +
2860: 34 34 35 34 2c 37 20 40 40 20 53 65 6c 65 63 74 4454,7 @@ Select
2870: 4f 62 6a 46 72 6f 6d 53 75 62 6c 69 73 74 28 0a ObjFromSublist(.
2880: 20 20 2a 20 6d 6f 64 65 3a 20 63 0a 20 20 2a 20 * mode: c. *
2890: 63 2d 62 61 73 69 63 2d 6f 66 66 73 65 74 3a 20 c-basic-offset:
28a0: 34 0a 20 20 2a 20 66 69 6c 6c 2d 63 6f 6c 75 6d 4. * fill-colum
28b0: 6e 3a 20 37 38 0a 2b 20 2a 20 74 61 62 2d 77 69 n: 78.+ * tab-wi
28c0: 64 74 68 3a 20 38 0a 2b 20 2a 20 69 6e 64 65 6e dth: 8.+ * inden
28d0: 74 2d 74 61 62 73 2d 6d 6f 64 65 3a 20 6e 69 6c t-tabs-mode: nil
28e0: 0a 20 20 2a 20 45 6e 64 3a 0a 20 20 2a 2f 0a 49 . * End:. */.I
28f0: 6e 64 65 78 3a 20 67 65 6e 65 72 69 63 2f 74 63 ndex: generic/tc
2900: 6c 49 6e 74 2e 68 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d lInt.h.=========
2910: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
2920: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
2930: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
2940: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 52 43 53 20 66 ==========.RCS f
2950: 69 6c 65 3a 20 2f 63 76 73 72 6f 6f 74 2f 74 63 ile: /cvsroot/tc
2960: 6c 2f 74 63 6c 2f 67 65 6e 65 72 69 63 2f 74 63 l/tcl/generic/tc
2970: 6c 49 6e 74 2e 68 2c 76 0a 72 65 74 72 69 65 76 lInt.h,v.retriev
2980: 69 6e 67 20 72 65 76 69 73 69 6f 6e 20 31 2e 34 ing revision 1.4
2990: 36 36 0a 64 69 66 66 20 2d 75 20 2d 70 20 2d 75 66.diff -u -p -u
29a0: 20 2d 70 20 2d 72 31 2e 34 36 36 20 74 63 6c 49 -p -r1.466 tclI
29b0: 6e 74 2e 68 0a 2d 2d 2d 20 67 65 6e 65 72 69 63 nt.h.--- generic
29c0: 2f 74 63 6c 49 6e 74 2e 68 09 32 37 20 4d 61 72 /tclInt.h.27 Mar
29d0: 20 32 30 31 30 20 32 32 3a 34 30 3a 31 34 20 2d 2010 22:40:14 -
29e0: 30 30 30 30 09 31 2e 34 36 36 0a 2b 2b 2b 20 67 0000.1.466.+++ g
29f0: 65 6e 65 72 69 63 2f 74 63 6c 49 6e 74 2e 68 09 eneric/tclInt.h.
2a00: 33 31 20 4d 61 72 20 32 30 31 30 20 31 34 3a 31 31 Mar 2010 14:1
2a10: 34 3a 34 30 20 2d 30 30 30 30 0a 40 40 20 2d 31 4:40 -0000.@@ -1
2a20: 39 38 34 2c 36 20 2b 31 39 38 34 2c 31 30 20 40 984,6 +1984,10 @
2a30: 40 20 74 79 70 65 64 65 66 20 73 74 72 75 63 74 @ typedef struct
2a40: 20 49 6e 74 65 72 70 20 7b 0a 20 20 20 20 20 54 Interp {. T
2a50: 63 6c 5f 4f 62 6a 20 2a 65 69 56 61 72 3b 09 09 cl_Obj *eiVar;..
2a60: 2f 2a 20 63 61 63 68 65 64 20 72 65 66 20 74 6f /* cached ref to
2a70: 20 3a 3a 65 72 72 6f 72 49 6e 66 6f 20 76 61 72 ::errorInfo var
2a80: 69 61 62 6c 65 2e 20 2a 2f 0a 20 20 20 20 20 54 iable. */. T
2a90: 63 6c 5f 4f 62 6a 20 2a 65 72 72 6f 72 43 6f 64 cl_Obj *errorCod
2aa0: 65 3b 09 09 2f 2a 20 65 72 72 6f 72 43 6f 64 65 e;../* errorCode
2ab0: 20 76 61 6c 75 65 20 28 6e 6f 77 20 61 73 20 61 value (now as a
2ac0: 20 54 63 6c 5f 4f 62 6a 29 2e 20 2a 2f 0a 20 20 Tcl_Obj). */.
2ad0: 20 20 20 54 63 6c 5f 4f 62 6a 20 2a 65 63 56 61 Tcl_Obj *ecVa
2ae0: 72 3b 09 09 2f 2a 20 63 61 63 68 65 64 20 72 65 r;../* cached re
2af0: 66 20 74 6f 20 3a 3a 65 72 72 6f 72 49 6e 66 6f f to ::errorInfo
2b00: 20 76 61 72 69 61 62 6c 65 2e 20 2a 2f 0a 2b 20 variable. */.+
2b10: 20 20 20 54 63 6c 5f 4f 62 6a 20 2a 65 72 72 6f Tcl_Obj *erro
2b20: 72 53 74 61 63 6b 3b 09 2f 2a 20 5b 69 6e 66 6f rStack;./* [info
2b30: 20 65 72 72 6f 72 73 74 61 63 6b 5d 20 76 61 6c errorstack] val
2b40: 75 65 20 28 61 73 20 61 20 54 63 6c 5f 4f 62 6a ue (as a Tcl_Obj
2b50: 29 2e 20 2a 2f 0a 2b 20 20 20 20 54 63 6c 5f 4f ). */.+ Tcl_O
2b60: 62 6a 20 2a 75 70 4c 69 74 65 72 61 6c 3b 09 09 bj *upLiteral;..
2b70: 2f 2a 20 22 55 50 22 20 6c 69 74 65 72 61 6c 20 /* "UP" literal
2b80: 66 6f 72 20 5b 69 6e 66 6f 20 65 72 72 6f 72 73 for [info errors
2b90: 74 61 63 6b 5d 20 2a 2f 0a 2b 20 20 20 20 54 63 tack] */.+ Tc
2ba0: 6c 5f 4f 62 6a 20 2a 63 61 6c 6c 4c 69 74 65 72 l_Obj *callLiter
2bb0: 61 6c 3b 09 2f 2a 20 22 43 41 4c 4c 22 20 6c 69 al;./* "CALL" li
2bc0: 74 65 72 61 6c 20 66 6f 72 20 5b 69 6e 66 6f 20 teral for [info
2bd0: 65 72 72 6f 72 73 74 61 63 6b 5d 20 2a 2f 0a 2b errorstack] */.+
2be0: 20 20 20 20 69 6e 74 20 72 65 73 65 74 45 72 72 int resetErr
2bf0: 6f 72 53 74 61 63 6b 3b 20 20 20 20 20 20 20 20 orStack;
2c00: 2f 2a 20 63 6f 6e 74 72 6f 6c 73 20 63 6c 65 61 /* controls clea
2c10: 6e 69 6e 67 20 75 70 20 6f 66 20 3a 3a 65 72 72 ning up of ::err
2c20: 6f 72 53 74 61 63 6b 20 2a 2f 0a 20 20 20 20 20 orStack */.
2c30: 69 6e 74 20 72 65 74 75 72 6e 4c 65 76 65 6c 3b int returnLevel;
2c40: 09 09 2f 2a 20 5b 72 65 74 75 72 6e 20 2d 6c 65 ../* [return -le
2c50: 76 65 6c 5d 20 70 61 72 61 6d 65 74 65 72 2e 20 vel] parameter.
2c60: 2a 2f 0a 20 0a 20 20 20 20 20 2f 2a 0a 49 6e 64 */. . /*.Ind
2c70: 65 78 3a 20 67 65 6e 65 72 69 63 2f 74 63 6c 4e ex: generic/tclN
2c80: 61 6d 65 73 70 2e 63 0a 3d 3d 3d 3d 3d 3d 3d 3d amesp.c.========
2c90: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
2ca0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
2cb0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
2cc0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 52 43 53 20 ===========.RCS
2cd0: 66 69 6c 65 3a 20 2f 63 76 73 72 6f 6f 74 2f 74 file: /cvsroot/t
2ce0: 63 6c 2f 74 63 6c 2f 67 65 6e 65 72 69 63 2f 74 cl/tcl/generic/t
2cf0: 63 6c 4e 61 6d 65 73 70 2e 63 2c 76 0a 72 65 74 clNamesp.c,v.ret
2d00: 72 69 65 76 69 6e 67 20 72 65 76 69 73 69 6f 6e rieving revision
2d10: 20 31 2e 32 30 34 0a 64 69 66 66 20 2d 75 20 2d 1.204.diff -u -
2d20: 70 20 2d 75 20 2d 70 20 2d 72 31 2e 32 30 34 20 p -u -p -r1.204
2d30: 74 63 6c 4e 61 6d 65 73 70 2e 63 0a 2d 2d 2d 20 tclNamesp.c.---
2d40: 67 65 6e 65 72 69 63 2f 74 63 6c 4e 61 6d 65 73 generic/tclNames
2d50: 70 2e 63 09 35 20 4d 61 72 20 32 30 31 30 20 31 p.c.5 Mar 2010 1
2d60: 34 3a 33 34 3a 30 34 20 2d 30 30 30 30 09 31 2e 4:34:04 -0000.1.
2d70: 32 30 34 0a 2b 2b 2b 20 67 65 6e 65 72 69 63 2f 204.+++ generic/
2d80: 74 63 6c 4e 61 6d 65 73 70 2e 63 09 33 31 20 4d tclNamesp.c.31 M
2d90: 61 72 20 32 30 31 30 20 31 34 3a 31 34 3a 34 30 ar 2010 14:14:40
2da0: 20 2d 30 30 30 30 0a 40 40 20 2d 34 38 37 33 2c -0000.@@ -4873,
2db0: 37 20 2b 34 38 37 33 2c 37 20 40 40 20 54 63 6c 7 +4873,7 @@ Tcl
2dc0: 5f 4c 6f 67 43 6f 6d 6d 61 6e 64 49 6e 66 6f 28 _LogCommandInfo(
2dd0: 0a 20 7b 0a 20 20 20 20 20 72 65 67 69 73 74 65 . {. registe
2de0: 72 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 70 3b r const char *p;
2df0: 0a 20 20 20 20 20 49 6e 74 65 72 70 20 2a 69 50 . Interp *iP
2e00: 74 72 20 3d 20 28 49 6e 74 65 72 70 20 2a 29 20 tr = (Interp *)
2e10: 69 6e 74 65 72 70 3b 0a 2d 20 20 20 20 69 6e 74 interp;.- int
2e20: 20 6f 76 65 72 66 6c 6f 77 2c 20 6c 69 6d 69 74 overflow, limit
2e30: 20 3d 20 31 35 30 3b 0a 2b 20 20 20 20 69 6e 74 = 150;.+ int
2e40: 20 6f 76 65 72 66 6c 6f 77 2c 20 6c 69 6d 69 74 overflow, limit
2e50: 20 3d 20 31 35 30 2c 20 6c 65 6e 3b 0a 20 20 20 = 150, len;.
2e60: 20 20 56 61 72 20 2a 76 61 72 50 74 72 2c 20 2a Var *varPtr, *
2e70: 61 72 72 61 79 50 74 72 3b 0a 20 0a 20 20 20 20 arrayPtr;. .
2e80: 20 69 66 20 28 69 50 74 72 2d 3e 66 6c 61 67 73 if (iPtr->flags
2e90: 20 26 20 45 52 52 5f 41 4c 52 45 41 44 59 5f 4c & ERR_ALREADY_L
2ea0: 4f 47 47 45 44 29 20 7b 0a 40 40 20 2d 34 39 33 OGGED) {.@@ -493
2eb0: 32 2c 36 20 2b 34 39 33 32 2c 34 34 20 40 40 20 2,6 +4932,44 @@
2ec0: 54 63 6c 5f 4c 6f 67 43 6f 6d 6d 61 6e 64 49 6e Tcl_LogCommandIn
2ed0: 66 6f 28 0a 20 09 09 20 20 20 20 54 43 4c 5f 47 fo(. .. TCL_G
2ee0: 4c 4f 42 41 4c 5f 4f 4e 4c 59 29 3b 0a 20 09 7d LOBAL_ONLY);. .}
2ef0: 0a 20 20 20 20 20 7d 0a 2b 0a 2b 20 20 20 20 2f . }.+.+ /
2f00: 2a 0a 2b 20 20 20 20 20 2a 20 54 49 50 20 23 33 *.+ * TIP #3
2f10: 34 38 0a 2b 20 20 20 20 20 2a 2f 0a 2b 0a 2b 20 48.+ */.+.+
2f20: 20 20 20 69 66 20 28 54 63 6c 5f 49 73 53 68 61 if (Tcl_IsSha
2f30: 72 65 64 28 69 50 74 72 2d 3e 65 72 72 6f 72 53 red(iPtr->errorS
2f40: 74 61 63 6b 29 29 20 7b 0a 2b 20 20 20 20 20 20 tack)) {.+
2f50: 20 20 54 63 6c 5f 4f 62 6a 20 2a 6e 65 77 4f 62 Tcl_Obj *newOb
2f60: 6a 3b 0a 2b 20 20 20 20 20 20 20 20 20 20 20 20 j;.+
2f70: 0a 2b 20 20 20 20 20 20 20 20 6e 65 77 4f 62 6a .+ newObj
2f80: 20 3d 20 54 63 6c 5f 44 75 70 6c 69 63 61 74 65 = Tcl_Duplicate
2f90: 4f 62 6a 28 69 50 74 72 2d 3e 65 72 72 6f 72 53 Obj(iPtr->errorS
2fa0: 74 61 63 6b 29 3b 0a 2b 20 20 20 20 20 20 20 20 tack);.+
2fb0: 54 63 6c 5f 44 65 63 72 52 65 66 43 6f 75 6e 74 Tcl_DecrRefCount
2fc0: 28 69 50 74 72 2d 3e 65 72 72 6f 72 53 74 61 63 (iPtr->errorStac
2fd0: 6b 29 3b 0a 2b 20 20 20 20 20 20 20 20 54 63 6c k);.+ Tcl
2fe0: 5f 49 6e 63 72 52 65 66 43 6f 75 6e 74 28 6e 65 _IncrRefCount(ne
2ff0: 77 4f 62 6a 29 3b 0a 2b 20 20 20 20 20 20 20 20 wObj);.+
3000: 69 50 74 72 2d 3e 65 72 72 6f 72 53 74 61 63 6b iPtr->errorStack
3010: 20 3d 20 6e 65 77 4f 62 6a 3b 0a 2b 20 20 20 20 = newObj;.+
3020: 7d 0a 2b 20 20 20 20 54 63 6c 5f 4c 69 73 74 4f }.+ Tcl_ListO
3030: 62 6a 4c 65 6e 67 74 68 28 69 6e 74 65 72 70 2c bjLength(interp,
3040: 20 69 50 74 72 2d 3e 65 72 72 6f 72 53 74 61 63 iPtr->errorStac
3050: 6b 2c 20 26 6c 65 6e 29 3b 0a 2b 20 20 20 20 69 k, &len);.+ i
3060: 66 20 28 69 50 74 72 2d 3e 72 65 73 65 74 45 72 f (iPtr->resetEr
3070: 72 6f 72 53 74 61 63 6b 29 20 7b 0a 2b 20 20 20 rorStack) {.+
3080: 20 20 20 20 20 69 50 74 72 2d 3e 72 65 73 65 74 iPtr->reset
3090: 45 72 72 6f 72 53 74 61 63 6b 20 3d 20 30 3b 0a ErrorStack = 0;.
30a0: 2b 20 20 20 20 20 20 20 20 2f 2a 20 72 65 73 65 + /* rese
30b0: 74 20 77 68 69 6c 65 20 6b 65 65 70 69 6e 67 20 t while keeping
30c0: 74 68 65 20 6c 69 73 74 20 69 6e 74 72 65 70 20 the list intrep
30d0: 61 73 20 6d 75 63 68 20 61 73 20 70 6f 73 73 69 as much as possi
30e0: 62 6c 65 20 2a 2f 0a 2b 20 20 20 20 20 20 20 20 ble */.+
30f0: 54 63 6c 5f 4c 69 73 74 4f 62 6a 52 65 70 6c 61 Tcl_ListObjRepla
3100: 63 65 28 69 6e 74 65 72 70 2c 20 69 50 74 72 2d ce(interp, iPtr-
3110: 3e 65 72 72 6f 72 53 74 61 63 6b 2c 20 30 2c 20 >errorStack, 0,
3120: 6c 65 6e 2c 20 30 2c 20 4e 55 4c 4c 29 3b 0a 2b len, 0, NULL);.+
3130: 20 20 20 20 20 20 20 20 6c 65 6e 3d 30 3b 0a 2b len=0;.+
3140: 20 20 20 20 7d 20 0a 2b 0a 2b 20 20 20 20 69 66 } .+.+ if
3150: 20 28 69 50 74 72 2d 3e 76 61 72 46 72 61 6d 65 (iPtr->varFrame
3160: 50 74 72 20 21 3d 20 69 50 74 72 2d 3e 66 72 61 Ptr != iPtr->fra
3170: 6d 65 50 74 72 29 20 7b 0a 2b 20 20 20 20 20 20 mePtr) {.+
3180: 20 20 2f 2a 20 75 70 6c 65 76 65 6c 20 63 61 73 /* uplevel cas
3190: 65 2c 20 5b 6c 61 70 70 65 6e 64 20 65 72 72 6f e, [lappend erro
31a0: 72 73 74 61 63 6b 20 55 50 20 24 72 65 6c 61 74 rstack UP $relat
31b0: 69 76 65 6c 65 76 65 6c 5d 20 2a 2f 0a 2b 20 20 ivelevel] */.+
31c0: 20 20 20 20 20 20 73 74 72 75 63 74 20 43 61 6c struct Cal
31d0: 6c 46 72 61 6d 65 20 2a 66 72 61 6d 65 3b 0a 2b lFrame *frame;.+
31e0: 20 20 20 20 20 20 20 20 69 6e 74 20 6e 3b 0a 2b int n;.+
31f0: 0a 2b 20 20 20 20 20 20 20 20 66 6f 72 20 28 6e .+ for (n
3200: 3d 30 2c 20 66 72 61 6d 65 3d 69 50 74 72 2d 3e =0, frame=iPtr->
3210: 66 72 61 6d 65 50 74 72 3b 0a 2b 09 09 28 66 72 framePtr;.+..(fr
3220: 61 6d 65 20 26 26 20 28 66 72 61 6d 65 20 21 3d ame && (frame !=
3230: 20 69 50 74 72 2d 3e 76 61 72 46 72 61 6d 65 50 iPtr->varFrameP
3240: 74 72 29 29 3b 0a 2b 09 09 6e 2b 2b 2c 20 66 72 tr));.+..n++, fr
3250: 61 6d 65 3d 66 72 61 6d 65 2d 3e 63 61 6c 6c 65 ame=frame->calle
3260: 72 56 61 72 50 74 72 29 3b 0a 2b 20 20 20 20 20 rVarPtr);.+
3270: 20 20 20 54 63 6c 5f 4c 69 73 74 4f 62 6a 41 70 Tcl_ListObjAp
3280: 70 65 6e 64 45 6c 65 6d 65 6e 74 28 4e 55 4c 4c pendElement(NULL
3290: 2c 20 69 50 74 72 2d 3e 65 72 72 6f 72 53 74 61 , iPtr->errorSta
32a0: 63 6b 2c 20 69 50 74 72 2d 3e 75 70 4c 69 74 65 ck, iPtr->upLite
32b0: 72 61 6c 29 3b 0a 2b 20 20 20 20 20 20 20 20 54 ral);.+ T
32c0: 63 6c 5f 4c 69 73 74 4f 62 6a 41 70 70 65 6e 64 cl_ListObjAppend
32d0: 45 6c 65 6d 65 6e 74 28 4e 55 4c 4c 2c 20 69 50 Element(NULL, iP
32e0: 74 72 2d 3e 65 72 72 6f 72 53 74 61 63 6b 2c 20 tr->errorStack,
32f0: 54 63 6c 5f 4e 65 77 49 6e 74 4f 62 6a 28 6e 29 Tcl_NewIntObj(n)
3300: 29 3b 0a 2b 20 20 20 20 7d 20 65 6c 73 65 20 69 );.+ } else i
3310: 66 20 28 69 50 74 72 2d 3e 66 72 61 6d 65 50 74 f (iPtr->framePt
3320: 72 20 21 3d 20 69 50 74 72 2d 3e 72 6f 6f 74 46 r != iPtr->rootF
3330: 72 61 6d 65 50 74 72 29 20 7b 0a 2b 20 20 20 20 ramePtr) {.+
3340: 20 20 20 20 2f 2a 20 6e 6f 72 6d 61 6c 20 63 61 /* normal ca
3350: 73 65 2c 20 5b 6c 61 70 70 65 6e 64 20 65 72 72 se, [lappend err
3360: 6f 72 73 74 61 63 6b 20 43 41 4c 4c 20 5b 69 6e orstack CALL [in
3370: 66 6f 20 6c 65 76 65 6c 20 30 5d 5d 20 2a 2f 0a fo level 0]] */.
3380: 2b 20 20 20 20 20 20 20 20 54 63 6c 5f 4c 69 73 + Tcl_Lis
3390: 74 4f 62 6a 41 70 70 65 6e 64 45 6c 65 6d 65 6e tObjAppendElemen
33a0: 74 28 4e 55 4c 4c 2c 20 69 50 74 72 2d 3e 65 72 t(NULL, iPtr->er
33b0: 72 6f 72 53 74 61 63 6b 2c 20 69 50 74 72 2d 3e rorStack, iPtr->
33c0: 63 61 6c 6c 4c 69 74 65 72 61 6c 29 3b 0a 2b 20 callLiteral);.+
33d0: 20 20 20 20 20 20 20 54 63 6c 5f 4c 69 73 74 4f Tcl_ListO
33e0: 62 6a 41 70 70 65 6e 64 45 6c 65 6d 65 6e 74 28 bjAppendElement(
33f0: 4e 55 4c 4c 2c 20 69 50 74 72 2d 3e 65 72 72 6f NULL, iPtr->erro
3400: 72 53 74 61 63 6b 2c 0a 2b 20 20 20 20 20 20 20 rStack,.+
3410: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
3420: 20 20 20 20 20 20 20 20 20 20 54 63 6c 5f 4e 65 Tcl_Ne
3430: 77 4c 69 73 74 4f 62 6a 28 69 50 74 72 2d 3e 76 wListObj(iPtr->v
3440: 61 72 46 72 61 6d 65 50 74 72 2d 3e 6f 62 6a 63 arFramePtr->objc
3450: 2c 0a 2b 20 20 20 20 20 20 20 20 20 20 20 20 20 ,.+
3460: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
3470: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
3480: 20 20 20 69 50 74 72 2d 3e 76 61 72 46 72 61 6d iPtr->varFram
3490: 65 50 74 72 2d 3e 6f 62 6a 76 29 29 3b 0a 2b 20 ePtr->objv));.+
34a0: 20 20 20 7d 0a 20 7d 0a 20 0c 0a 20 2f 2a 0a 40 }. }. .. /*.@
34b0: 40 20 2d 34 39 33 39 2c 35 20 2b 34 39 37 37 2c @ -4939,5 +4977,
34c0: 37 20 40 40 20 54 63 6c 5f 4c 6f 67 43 6f 6d 6d 7 @@ Tcl_LogComm
34d0: 61 6e 64 49 6e 66 6f 28 0a 20 20 2a 20 6d 6f 64 andInfo(. * mod
34e0: 65 3a 20 63 0a 20 20 2a 20 63 2d 62 61 73 69 63 e: c. * c-basic
34f0: 2d 6f 66 66 73 65 74 3a 20 34 0a 20 20 2a 20 66 -offset: 4. * f
3500: 69 6c 6c 2d 63 6f 6c 75 6d 6e 3a 20 37 38 0a 2b ill-column: 78.+
3510: 20 2a 20 74 61 62 2d 77 69 64 74 68 3a 20 38 0a * tab-width: 8.
3520: 2b 20 2a 20 69 6e 64 65 6e 74 2d 74 61 62 73 2d + * indent-tabs-
3530: 6d 6f 64 65 3a 20 6e 69 6c 0a 20 20 2a 20 45 6e mode: nil. * En
3540: 64 3a 0a 20 20 2a 2f 0a 49 6e 64 65 78 3a 20 67 d:. */.Index: g
3550: 65 6e 65 72 69 63 2f 74 63 6c 52 65 73 75 6c 74 eneric/tclResult
3560: 2e 63 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d .c.=============
3570: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
3580: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
3590: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
35a0: 3d 3d 3d 3d 3d 3d 0a 52 43 53 20 66 69 6c 65 3a ======.RCS file:
35b0: 20 2f 63 76 73 72 6f 6f 74 2f 74 63 6c 2f 74 63 /cvsroot/tcl/tc
35c0: 6c 2f 67 65 6e 65 72 69 63 2f 74 63 6c 52 65 73 l/generic/tclRes
35d0: 75 6c 74 2e 63 2c 76 0a 72 65 74 72 69 65 76 69 ult.c,v.retrievi
35e0: 6e 67 20 72 65 76 69 73 69 6f 6e 20 31 2e 36 30 ng revision 1.60
35f0: 0a 64 69 66 66 20 2d 75 20 2d 70 20 2d 75 20 2d .diff -u -p -u -
3600: 70 20 2d 72 31 2e 36 30 20 74 63 6c 52 65 73 75 p -r1.60 tclResu
3610: 6c 74 2e 63 0a 2d 2d 2d 20 67 65 6e 65 72 69 63 lt.c.--- generic
3620: 2f 74 63 6c 52 65 73 75 6c 74 2e 63 09 33 30 20 /tclResult.c.30
3630: 4d 61 72 20 32 30 31 30 20 31 33 3a 31 37 3a 31 Mar 2010 13:17:1
3640: 38 20 2d 30 30 30 30 09 31 2e 36 30 0a 2b 2b 2b 8 -0000.1.60.+++
3650: 20 67 65 6e 65 72 69 63 2f 74 63 6c 52 65 73 75 generic/tclResu
3660: 6c 74 2e 63 09 33 31 20 4d 61 72 20 32 30 31 30 lt.c.31 Mar 2010
3670: 20 31 34 3a 31 34 3a 34 31 20 2d 30 30 30 30 0a 14:14:41 -0000.
3680: 40 40 20 2d 31 39 2c 37 20 2b 31 39 2c 37 20 40 @@ -19,7 +19,7 @
3690: 40 0a 20 0a 20 65 6e 75 6d 20 72 65 74 75 72 6e @. . enum return
36a0: 4b 65 79 73 20 7b 0a 20 20 20 20 20 4b 45 59 5f Keys {. KEY_
36b0: 43 4f 44 45 2c 09 4b 45 59 5f 45 52 52 4f 52 43 CODE,.KEY_ERRORC
36c0: 4f 44 45 2c 09 4b 45 59 5f 45 52 52 4f 52 49 4e ODE,.KEY_ERRORIN
36d0: 46 4f 2c 09 4b 45 59 5f 45 52 52 4f 52 4c 49 4e FO,.KEY_ERRORLIN
36e0: 45 2c 0a 2d 20 20 20 20 4b 45 59 5f 4c 45 56 45 E,.- KEY_LEVE
36f0: 4c 2c 09 4b 45 59 5f 4f 50 54 49 4f 4e 53 2c 09 L,.KEY_OPTIONS,.
3700: 4b 45 59 5f 4c 41 53 54 0a 2b 20 20 20 20 4b 45 KEY_LAST.+ KE
3710: 59 5f 4c 45 56 45 4c 2c 09 4b 45 59 5f 4f 50 54 Y_LEVEL,.KEY_OPT
3720: 49 4f 4e 53 2c 09 4b 45 59 5f 45 52 52 4f 52 53 IONS,.KEY_ERRORS
3730: 54 41 43 4b 2c 09 4b 45 59 5f 4c 41 53 54 0a 20 TACK,.KEY_LAST.
3740: 7d 3b 0a 20 0a 20 2f 2a 0a 40 40 20 2d 34 36 2c };. . /*.@@ -46,
3750: 36 20 2b 34 36 2c 38 20 40 40 20 74 79 70 65 64 6 +46,8 @@ typed
3760: 65 66 20 73 74 72 75 63 74 20 49 6e 74 65 72 70 ef struct Interp
3770: 53 74 61 74 65 20 7b 0a 20 20 20 20 20 54 63 6c State {. Tcl
3780: 5f 4f 62 6a 20 2a 65 72 72 6f 72 43 6f 64 65 3b _Obj *errorCode;
3790: 0a 20 20 20 20 20 54 63 6c 5f 4f 62 6a 20 2a 72 . Tcl_Obj *r
37a0: 65 74 75 72 6e 4f 70 74 73 3b 0a 20 20 20 20 20 eturnOpts;.
37b0: 54 63 6c 5f 4f 62 6a 20 2a 6f 62 6a 52 65 73 75 Tcl_Obj *objResu
37c0: 6c 74 3b 0a 2b 20 20 20 20 54 63 6c 5f 4f 62 6a lt;.+ Tcl_Obj
37d0: 20 2a 65 72 72 6f 72 53 74 61 63 6b 3b 0a 2b 20 *errorStack;.+
37e0: 20 20 20 69 6e 74 20 72 65 73 65 74 45 72 72 6f int resetErro
37f0: 72 53 74 61 63 6b 3b 0a 20 7d 20 49 6e 74 65 72 rStack;. } Inter
3800: 70 53 74 61 74 65 3b 0a 20 0c 0a 20 2f 2a 0a 40 pState;. .. /*.@
3810: 40 20 2d 38 32 2c 36 20 2b 38 34 2c 38 20 40 40 @ -82,6 +84,8 @@
3820: 20 54 63 6c 5f 53 61 76 65 49 6e 74 65 72 70 53 Tcl_SaveInterpS
3830: 74 61 74 65 28 0a 20 20 20 20 20 73 74 61 74 65 tate(. state
3840: 50 74 72 2d 3e 72 65 74 75 72 6e 4c 65 76 65 6c Ptr->returnLevel
3850: 20 3d 20 69 50 74 72 2d 3e 72 65 74 75 72 6e 4c = iPtr->returnL
3860: 65 76 65 6c 3b 0a 20 20 20 20 20 73 74 61 74 65 evel;. state
3870: 50 74 72 2d 3e 72 65 74 75 72 6e 43 6f 64 65 20 Ptr->returnCode
3880: 3d 20 69 50 74 72 2d 3e 72 65 74 75 72 6e 43 6f = iPtr->returnCo
3890: 64 65 3b 0a 20 20 20 20 20 73 74 61 74 65 50 74 de;. statePt
38a0: 72 2d 3e 65 72 72 6f 72 49 6e 66 6f 20 3d 20 69 r->errorInfo = i
38b0: 50 74 72 2d 3e 65 72 72 6f 72 49 6e 66 6f 3b 0a Ptr->errorInfo;.
38c0: 2b 20 20 20 20 73 74 61 74 65 50 74 72 2d 3e 65 + statePtr->e
38d0: 72 72 6f 72 53 74 61 63 6b 20 3d 20 69 50 74 72 rrorStack = iPtr
38e0: 2d 3e 65 72 72 6f 72 53 74 61 63 6b 3b 0a 2b 20 ->errorStack;.+
38f0: 20 20 20 73 74 61 74 65 50 74 72 2d 3e 72 65 73 statePtr->res
3900: 65 74 45 72 72 6f 72 53 74 61 63 6b 20 3d 20 69 etErrorStack = i
3910: 50 74 72 2d 3e 72 65 73 65 74 45 72 72 6f 72 53 Ptr->resetErrorS
3920: 74 61 63 6b 3b 0a 20 20 20 20 20 69 66 20 28 73 tack;. if (s
3930: 74 61 74 65 50 74 72 2d 3e 65 72 72 6f 72 49 6e tatePtr->errorIn
3940: 66 6f 29 20 7b 0a 20 09 54 63 6c 5f 49 6e 63 72 fo) {. .Tcl_Incr
3950: 52 65 66 43 6f 75 6e 74 28 73 74 61 74 65 50 74 RefCount(statePt
3960: 72 2d 3e 65 72 72 6f 72 49 6e 66 6f 29 3b 0a 20 r->errorInfo);.
3970: 20 20 20 20 7d 0a 40 40 20 2d 39 33 2c 36 20 2b }.@@ -93,6 +
3980: 39 37 2c 39 20 40 40 20 54 63 6c 5f 53 61 76 65 97,9 @@ Tcl_Save
3990: 49 6e 74 65 72 70 53 74 61 74 65 28 0a 20 20 20 InterpState(.
39a0: 20 20 69 66 20 28 73 74 61 74 65 50 74 72 2d 3e if (statePtr->
39b0: 72 65 74 75 72 6e 4f 70 74 73 29 20 7b 0a 20 09 returnOpts) {. .
39c0: 54 63 6c 5f 49 6e 63 72 52 65 66 43 6f 75 6e 74 Tcl_IncrRefCount
39d0: 28 73 74 61 74 65 50 74 72 2d 3e 72 65 74 75 72 (statePtr->retur
39e0: 6e 4f 70 74 73 29 3b 0a 20 20 20 20 20 7d 0a 2b nOpts);. }.+
39f0: 20 20 20 20 69 66 20 28 73 74 61 74 65 50 74 72 if (statePtr
3a00: 2d 3e 65 72 72 6f 72 53 74 61 63 6b 29 20 7b 0a ->errorStack) {.
3a10: 2b 09 54 63 6c 5f 49 6e 63 72 52 65 66 43 6f 75 +.Tcl_IncrRefCou
3a20: 6e 74 28 73 74 61 74 65 50 74 72 2d 3e 65 72 72 nt(statePtr->err
3a30: 6f 72 53 74 61 63 6b 29 3b 0a 2b 20 20 20 20 7d orStack);.+ }
3a40: 0a 20 20 20 20 20 73 74 61 74 65 50 74 72 2d 3e . statePtr->
3a50: 6f 62 6a 52 65 73 75 6c 74 20 3d 20 54 63 6c 5f objResult = Tcl_
3a60: 47 65 74 4f 62 6a 52 65 73 75 6c 74 28 69 6e 74 GetObjResult(int
3a70: 65 72 70 29 3b 0a 20 20 20 20 20 54 63 6c 5f 49 erp);. Tcl_I
3a80: 6e 63 72 52 65 66 43 6f 75 6e 74 28 73 74 61 74 ncrRefCount(stat
3a90: 65 50 74 72 2d 3e 6f 62 6a 52 65 73 75 6c 74 29 ePtr->objResult)
3aa0: 3b 0a 20 20 20 20 20 72 65 74 75 72 6e 20 28 54 ;. return (T
3ab0: 63 6c 5f 49 6e 74 65 72 70 53 74 61 74 65 29 20 cl_InterpState)
3ac0: 73 74 61 74 65 50 74 72 3b 0a 40 40 20 2d 31 33 statePtr;.@@ -13
3ad0: 30 2c 36 20 2b 31 33 37 2c 37 20 40 40 20 54 63 0,6 +137,7 @@ Tc
3ae0: 6c 5f 52 65 73 74 6f 72 65 49 6e 74 65 72 70 53 l_RestoreInterpS
3af0: 74 61 74 65 28 0a 20 0a 20 20 20 20 20 69 50 74 tate(. . iPt
3b00: 72 2d 3e 72 65 74 75 72 6e 4c 65 76 65 6c 20 3d r->returnLevel =
3b10: 20 73 74 61 74 65 50 74 72 2d 3e 72 65 74 75 72 statePtr->retur
3b20: 6e 4c 65 76 65 6c 3b 0a 20 20 20 20 20 69 50 74 nLevel;. iPt
3b30: 72 2d 3e 72 65 74 75 72 6e 43 6f 64 65 20 3d 20 r->returnCode =
3b40: 73 74 61 74 65 50 74 72 2d 3e 72 65 74 75 72 6e statePtr->return
3b50: 43 6f 64 65 3b 0a 2b 20 20 20 20 69 50 74 72 2d Code;.+ iPtr-
3b60: 3e 72 65 73 65 74 45 72 72 6f 72 53 74 61 63 6b >resetErrorStack
3b70: 20 3d 20 73 74 61 74 65 50 74 72 2d 3e 72 65 73 = statePtr->res
3b80: 65 74 45 72 72 6f 72 53 74 61 63 6b 3b 0a 20 20 etErrorStack;.
3b90: 20 20 20 69 66 20 28 69 50 74 72 2d 3e 65 72 72 if (iPtr->err
3ba0: 6f 72 49 6e 66 6f 29 20 7b 0a 20 09 54 63 6c 5f orInfo) {. .Tcl_
3bb0: 44 65 63 72 52 65 66 43 6f 75 6e 74 28 69 50 74 DecrRefCount(iPt
3bc0: 72 2d 3e 65 72 72 6f 72 49 6e 66 6f 29 3b 0a 20 r->errorInfo);.
3bd0: 20 20 20 20 7d 0a 40 40 20 2d 31 34 34 2c 36 20 }.@@ -144,6
3be0: 2b 31 35 32 2c 31 33 20 40 40 20 54 63 6c 5f 52 +152,13 @@ Tcl_R
3bf0: 65 73 74 6f 72 65 49 6e 74 65 72 70 53 74 61 74 estoreInterpStat
3c00: 65 28 0a 20 20 20 20 20 69 66 20 28 69 50 74 72 e(. if (iPtr
3c10: 2d 3e 65 72 72 6f 72 43 6f 64 65 29 20 7b 0a 20 ->errorCode) {.
3c20: 09 54 63 6c 5f 49 6e 63 72 52 65 66 43 6f 75 6e .Tcl_IncrRefCoun
3c30: 74 28 69 50 74 72 2d 3e 65 72 72 6f 72 43 6f 64 t(iPtr->errorCod
3c40: 65 29 3b 0a 20 20 20 20 20 7d 0a 2b 20 20 20 20 e);. }.+
3c50: 69 66 20 28 69 50 74 72 2d 3e 65 72 72 6f 72 53 if (iPtr->errorS
3c60: 74 61 63 6b 29 20 7b 0a 2b 09 54 63 6c 5f 44 65 tack) {.+.Tcl_De
3c70: 63 72 52 65 66 43 6f 75 6e 74 28 69 50 74 72 2d crRefCount(iPtr-
3c80: 3e 65 72 72 6f 72 53 74 61 63 6b 29 3b 0a 2b 20 >errorStack);.+
3c90: 20 20 20 7d 0a 2b 20 20 20 20 69 50 74 72 2d 3e }.+ iPtr->
3ca0: 65 72 72 6f 72 53 74 61 63 6b 20 3d 20 73 74 61 errorStack = sta
3cb0: 74 65 50 74 72 2d 3e 65 72 72 6f 72 53 74 61 63 tePtr->errorStac
3cc0: 6b 3b 0a 2b 20 20 20 20 69 66 20 28 69 50 74 72 k;.+ if (iPtr
3cd0: 2d 3e 65 72 72 6f 72 53 74 61 63 6b 29 20 7b 0a ->errorStack) {.
3ce0: 2b 09 54 63 6c 5f 49 6e 63 72 52 65 66 43 6f 75 +.Tcl_IncrRefCou
3cf0: 6e 74 28 69 50 74 72 2d 3e 65 72 72 6f 72 53 74 nt(iPtr->errorSt
3d00: 61 63 6b 29 3b 0a 2b 20 20 20 20 7d 0a 20 20 20 ack);.+ }.
3d10: 20 20 69 66 20 28 69 50 74 72 2d 3e 72 65 74 75 if (iPtr->retu
3d20: 72 6e 4f 70 74 73 29 20 7b 0a 20 09 54 63 6c 5f rnOpts) {. .Tcl_
3d30: 44 65 63 72 52 65 66 43 6f 75 6e 74 28 69 50 74 DecrRefCount(iPt
3d40: 72 2d 3e 72 65 74 75 72 6e 4f 70 74 73 29 3b 0a r->returnOpts);.
3d50: 20 20 20 20 20 7d 0a 40 40 20 2d 31 38 38 2c 36 }.@@ -188,6
3d60: 20 2b 32 30 33 2c 39 20 40 40 20 54 63 6c 5f 44 +203,9 @@ Tcl_D
3d70: 69 73 63 61 72 64 49 6e 74 65 72 70 53 74 61 74 iscardInterpStat
3d80: 65 28 0a 20 20 20 20 20 69 66 20 28 73 74 61 74 e(. if (stat
3d90: 65 50 74 72 2d 3e 72 65 74 75 72 6e 4f 70 74 73 ePtr->returnOpts
3da0: 29 20 7b 0a 20 09 54 63 6c 5f 44 65 63 72 52 65 ) {. .Tcl_DecrRe
3db0: 66 43 6f 75 6e 74 28 73 74 61 74 65 50 74 72 2d fCount(statePtr-
3dc0: 3e 72 65 74 75 72 6e 4f 70 74 73 29 3b 0a 20 20 >returnOpts);.
3dd0: 20 20 20 7d 0a 2b 20 20 20 20 69 66 20 28 73 74 }.+ if (st
3de0: 61 74 65 50 74 72 2d 3e 65 72 72 6f 72 53 74 61 atePtr->errorSta
3df0: 63 6b 29 20 7b 0a 2b 09 54 63 6c 5f 44 65 63 72 ck) {.+.Tcl_Decr
3e00: 52 65 66 43 6f 75 6e 74 28 73 74 61 74 65 50 74 RefCount(statePt
3e10: 72 2d 3e 65 72 72 6f 72 53 74 61 63 6b 29 3b 0a r->errorStack);.
3e20: 2b 20 20 20 20 7d 0a 20 20 20 20 20 54 63 6c 5f + }. Tcl_
3e30: 44 65 63 72 52 65 66 43 6f 75 6e 74 28 73 74 61 DecrRefCount(sta
3e40: 74 65 50 74 72 2d 3e 6f 62 6a 52 65 73 75 6c 74 tePtr->objResult
3e50: 29 3b 0a 20 20 20 20 20 63 6b 66 72 65 65 28 28 );. ckfree((
3e60: 63 68 61 72 20 2a 29 20 73 74 61 74 65 50 74 72 char *) statePtr
3e70: 29 3b 0a 20 7d 0a 40 40 20 2d 39 32 34 2c 36 20 );. }.@@ -924,6
3e80: 2b 39 34 32 2c 37 20 40 40 20 54 63 6c 5f 52 65 +942,7 @@ Tcl_Re
3e90: 73 65 74 52 65 73 75 6c 74 28 0a 20 09 54 63 6c setResult(. .Tcl
3ea0: 5f 44 65 63 72 52 65 66 43 6f 75 6e 74 28 69 50 _DecrRefCount(iP
3eb0: 74 72 2d 3e 65 72 72 6f 72 49 6e 66 6f 29 3b 0a tr->errorInfo);.
3ec0: 20 09 69 50 74 72 2d 3e 65 72 72 6f 72 49 6e 66 .iPtr->errorInf
3ed0: 6f 20 3d 20 4e 55 4c 4c 3b 0a 20 20 20 20 20 7d o = NULL;. }
3ee0: 0a 2b 20 20 20 20 69 50 74 72 2d 3e 72 65 73 65 .+ iPtr->rese
3ef0: 74 45 72 72 6f 72 53 74 61 63 6b 20 3d 20 31 3b tErrorStack = 1;
3f00: 0a 20 20 20 20 20 69 50 74 72 2d 3e 72 65 74 75 . iPtr->retu
3f10: 72 6e 4c 65 76 65 6c 20 3d 20 31 3b 0a 20 20 20 rnLevel = 1;.
3f20: 20 20 69 50 74 72 2d 3e 72 65 74 75 72 6e 43 6f iPtr->returnCo
3f30: 64 65 20 3d 20 54 43 4c 5f 4f 4b 3b 0a 20 20 20 de = TCL_OK;.
3f40: 20 20 69 66 20 28 69 50 74 72 2d 3e 72 65 74 75 if (iPtr->retu
3f50: 72 6e 4f 70 74 73 29 20 7b 0a 40 40 20 2d 31 31 rnOpts) {.@@ -11
3f60: 36 31 2c 36 20 2b 31 31 38 30 2c 37 20 40 40 20 61,6 +1180,7 @@
3f70: 47 65 74 4b 65 79 73 28 76 6f 69 64 29 0a 20 09 GetKeys(void). .
3f80: 54 63 6c 4e 65 77 4c 69 74 65 72 61 6c 53 74 72 TclNewLiteralStr
3f90: 69 6e 67 4f 62 6a 28 6b 65 79 73 5b 4b 45 59 5f ingObj(keys[KEY_
3fa0: 45 52 52 4f 52 43 4f 44 45 5d 2c 20 22 2d 65 72 ERRORCODE], "-er
3fb0: 72 6f 72 63 6f 64 65 22 29 3b 0a 20 09 54 63 6c rorcode");. .Tcl
3fc0: 4e 65 77 4c 69 74 65 72 61 6c 53 74 72 69 6e 67 NewLiteralString
3fd0: 4f 62 6a 28 6b 65 79 73 5b 4b 45 59 5f 45 52 52 Obj(keys[KEY_ERR
3fe0: 4f 52 49 4e 46 4f 5d 2c 20 22 2d 65 72 72 6f 72 ORINFO], "-error
3ff0: 69 6e 66 6f 22 29 3b 0a 20 09 54 63 6c 4e 65 77 info");. .TclNew
4000: 4c 69 74 65 72 61 6c 53 74 72 69 6e 67 4f 62 6a LiteralStringObj
4010: 28 6b 65 79 73 5b 4b 45 59 5f 45 52 52 4f 52 4c (keys[KEY_ERRORL
4020: 49 4e 45 5d 2c 20 22 2d 65 72 72 6f 72 6c 69 6e INE], "-errorlin
4030: 65 22 29 3b 0a 2b 09 54 63 6c 4e 65 77 4c 69 74 e");.+.TclNewLit
4040: 65 72 61 6c 53 74 72 69 6e 67 4f 62 6a 28 6b 65 eralStringObj(ke
4050: 79 73 5b 4b 45 59 5f 45 52 52 4f 52 53 54 41 43 ys[KEY_ERRORSTAC
4060: 4b 5d 2c 22 2d 65 72 72 6f 72 73 74 61 63 6b 22 K],"-errorstack"
4070: 29 3b 0a 20 09 54 63 6c 4e 65 77 4c 69 74 65 72 );. .TclNewLiter
4080: 61 6c 53 74 72 69 6e 67 4f 62 6a 28 6b 65 79 73 alStringObj(keys
4090: 5b 4b 45 59 5f 4c 45 56 45 4c 5d 2c 09 20 20 20 [KEY_LEVEL],.
40a0: 20 22 2d 6c 65 76 65 6c 22 29 3b 0a 20 09 54 63 "-level");. .Tc
40b0: 6c 4e 65 77 4c 69 74 65 72 61 6c 53 74 72 69 6e lNewLiteralStrin
40c0: 67 4f 62 6a 28 6b 65 79 73 5b 4b 45 59 5f 4f 50 gObj(keys[KEY_OP
40d0: 54 49 4f 4e 53 5d 2c 20 20 20 22 2d 6f 70 74 69 TIONS], "-opti
40e0: 6f 6e 73 22 29 3b 0a 20 0a 40 40 20 2d 31 32 36 ons");. .@@ -126
40f0: 36 2c 36 20 2b 31 32 38 36 2c 33 31 20 40 40 20 6,6 +1286,31 @@
4100: 54 63 6c 50 72 6f 63 65 73 73 52 65 74 75 72 6e TclProcessReturn
4110: 28 0a 20 09 09 69 50 74 72 2d 3e 66 6c 61 67 73 (. ..iPtr->flags
4120: 20 7c 3d 20 45 52 52 5f 41 4c 52 45 41 44 59 5f |= ERR_ALREADY_
4130: 4c 4f 47 47 45 44 3b 0a 20 09 20 20 20 20 7d 0a LOGGED;. . }.
4140: 20 09 7d 0a 2b 09 54 63 6c 5f 44 69 63 74 4f 62 .}.+.Tcl_DictOb
4150: 6a 47 65 74 28 4e 55 4c 4c 2c 20 69 50 74 72 2d jGet(NULL, iPtr-
4160: 3e 72 65 74 75 72 6e 4f 70 74 73 2c 20 6b 65 79 >returnOpts, key
4170: 73 5b 4b 45 59 5f 45 52 52 4f 52 53 54 41 43 4b s[KEY_ERRORSTACK
4180: 5d 2c 20 26 76 61 6c 75 65 50 74 72 29 3b 0a 2b ], &valuePtr);.+
4190: 09 69 66 20 28 76 61 6c 75 65 50 74 72 20 21 3d .if (valuePtr !=
41a0: 20 4e 55 4c 4c 29 20 7b 0a 2b 20 20 20 20 20 20 NULL) {.+
41b0: 20 20 20 20 20 20 69 6e 74 20 6c 65 6e 2c 20 76 int len, v
41c0: 61 6c 75 65 4f 62 6a 63 3b 0a 2b 20 20 20 20 20 alueObjc;.+
41d0: 20 20 20 20 20 20 20 54 63 6c 5f 4f 62 6a 20 2a Tcl_Obj *
41e0: 2a 76 61 6c 75 65 4f 62 6a 76 3b 0a 2b 0a 2b 20 *valueObjv;.+.+
41f0: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 54 if (T
4200: 63 6c 5f 49 73 53 68 61 72 65 64 28 69 50 74 72 cl_IsShared(iPtr
4210: 2d 3e 65 72 72 6f 72 53 74 61 63 6b 29 29 20 7b ->errorStack)) {
4220: 0a 2b 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .+
4230: 20 20 54 63 6c 5f 4f 62 6a 20 2a 6e 65 77 4f 62 Tcl_Obj *newOb
4240: 6a 3b 0a 2b 20 20 20 20 20 20 20 20 20 20 20 20 j;.+
4250: 20 20 20 20 0a 2b 20 20 20 20 20 20 20 20 20 20 .+
4260: 20 20 20 20 20 20 6e 65 77 4f 62 6a 20 3d 20 54 newObj = T
4270: 63 6c 5f 44 75 70 6c 69 63 61 74 65 4f 62 6a 28 cl_DuplicateObj(
4280: 69 50 74 72 2d 3e 65 72 72 6f 72 53 74 61 63 6b iPtr->errorStack
4290: 29 3b 0a 2b 20 20 20 20 20 20 20 20 20 20 20 20 );.+
42a0: 20 20 20 20 54 63 6c 5f 44 65 63 72 52 65 66 43 Tcl_DecrRefC
42b0: 6f 75 6e 74 28 69 50 74 72 2d 3e 65 72 72 6f 72 ount(iPtr->error
42c0: 53 74 61 63 6b 29 3b 0a 2b 20 20 20 20 20 20 20 Stack);.+
42d0: 20 20 20 20 20 20 20 20 20 54 63 6c 5f 49 6e 63 Tcl_Inc
42e0: 72 52 65 66 43 6f 75 6e 74 28 6e 65 77 4f 62 6a rRefCount(newObj
42f0: 29 3b 0a 2b 20 20 20 20 20 20 20 20 20 20 20 20 );.+
4300: 20 20 20 20 69 50 74 72 2d 3e 65 72 72 6f 72 53 iPtr->errorS
4310: 74 61 63 6b 20 3d 20 6e 65 77 4f 62 6a 3b 0a 2b tack = newObj;.+
4320: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 2b 20 }.+
4330: 20 20 20 20 20 20 20 20 20 20 20 2f 2a 0a 2b 20 /*.+
4340: 20 20 20 20 20 20 20 20 20 20 20 20 2a 20 4c 69 * Li
4350: 73 74 20 65 78 74 72 61 63 74 69 6f 6e 20 64 6f st extraction do
4360: 6e 65 20 61 66 74 65 72 20 64 75 70 6c 69 63 61 ne after duplica
4370: 74 69 6f 6e 20 74 6f 20 61 76 6f 69 64 20 6d 6f tion to avoid mo
4380: 76 69 6e 67 20 74 68 65 20 72 75 67 0a 2b 20 20 ving the rug.+
4390: 20 20 20 20 20 20 20 20 20 20 20 2a 20 69 66 20 * if
43a0: 73 6f 6d 65 6f 6e 65 20 64 6f 65 73 20 5b 72 65 someone does [re
43b0: 74 75 72 6e 20 2d 65 72 72 6f 72 73 74 61 63 6b turn -errorstack
43c0: 20 5b 69 6e 66 6f 20 65 72 72 6f 72 73 74 61 63 [info errorstac
43d0: 6b 5d 5d 0a 2b 20 20 20 20 20 20 20 20 20 20 20 k]].+
43e0: 20 20 2a 2f 0a 2b 20 20 20 20 20 20 20 20 20 20 */.+
43f0: 20 20 69 66 20 28 54 63 6c 5f 4c 69 73 74 4f 62 if (Tcl_ListOb
4400: 6a 47 65 74 45 6c 65 6d 65 6e 74 73 28 69 6e 74 jGetElements(int
4410: 65 72 70 2c 20 76 61 6c 75 65 50 74 72 2c 20 26 erp, valuePtr, &
4420: 76 61 6c 75 65 4f 62 6a 63 2c 20 26 76 61 6c 75 valueObjc, &valu
4430: 65 4f 62 6a 76 29 20 3d 3d 20 54 43 4c 5f 45 52 eObjv) == TCL_ER
4440: 52 4f 52 29 20 7b 0a 2b 20 20 20 20 20 20 20 20 ROR) {.+
4450: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 54 return T
4460: 43 4c 5f 45 52 52 4f 52 3b 0a 2b 20 20 20 20 20 CL_ERROR;.+
4470: 20 20 20 20 20 20 20 7d 0a 2b 20 20 20 20 20 20 }.+
4480: 20 20 20 20 20 20 69 50 74 72 2d 3e 72 65 73 65 iPtr->rese
4490: 74 45 72 72 6f 72 53 74 61 63 6b 20 3d 20 30 3b tErrorStack = 0;
44a0: 0a 2b 20 20 20 20 20 20 20 20 20 20 20 20 54 63 .+ Tc
44b0: 6c 5f 4c 69 73 74 4f 62 6a 4c 65 6e 67 74 68 28 l_ListObjLength(
44c0: 69 6e 74 65 72 70 2c 20 69 50 74 72 2d 3e 65 72 interp, iPtr->er
44d0: 72 6f 72 53 74 61 63 6b 2c 20 26 6c 65 6e 29 3b rorStack, &len);
44e0: 0a 2b 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a .+ /*
44f0: 20 72 65 73 65 74 20 77 68 69 6c 65 20 6b 65 65 reset while kee
4500: 70 69 6e 67 20 74 68 65 20 6c 69 73 74 20 69 6e ping the list in
4510: 74 72 65 70 20 61 73 20 6d 75 63 68 20 61 73 20 trep as much as
4520: 70 6f 73 73 69 62 6c 65 20 2a 2f 0a 2b 20 20 20 possible */.+
4530: 20 20 20 20 20 20 20 20 20 54 63 6c 5f 4c 69 73 Tcl_Lis
4540: 74 4f 62 6a 52 65 70 6c 61 63 65 28 69 6e 74 65 tObjReplace(inte
4550: 72 70 2c 20 69 50 74 72 2d 3e 65 72 72 6f 72 53 rp, iPtr->errorS
4560: 74 61 63 6b 2c 20 30 2c 20 6c 65 6e 2c 20 76 61 tack, 0, len, va
4570: 6c 75 65 4f 62 6a 63 2c 20 76 61 6c 75 65 4f 62 lueObjc, valueOb
4580: 6a 76 29 3b 0a 2b 20 09 7d 0a 20 09 54 63 6c 5f jv);.+ .}. .Tcl_
4590: 44 69 63 74 4f 62 6a 47 65 74 28 4e 55 4c 4c 2c DictObjGet(NULL,
45a0: 20 69 50 74 72 2d 3e 72 65 74 75 72 6e 4f 70 74 iPtr->returnOpt
45b0: 73 2c 20 6b 65 79 73 5b 4b 45 59 5f 45 52 52 4f s, keys[KEY_ERRO
45c0: 52 43 4f 44 45 5d 2c 20 26 76 61 6c 75 65 50 74 RCODE], &valuePt
45d0: 72 29 3b 0a 20 09 69 66 20 28 76 61 6c 75 65 50 r);. .if (valueP
45e0: 74 72 20 21 3d 20 4e 55 4c 4c 29 20 7b 0a 20 09 tr != NULL) {. .
45f0: 20 20 20 20 54 63 6c 5f 53 65 74 4f 62 6a 45 72 Tcl_SetObjEr
4600: 72 6f 72 43 6f 64 65 28 69 6e 74 65 72 70 2c 20 rorCode(interp,
4610: 76 61 6c 75 65 50 74 72 29 3b 0a 40 40 20 2d 31 valuePtr);.@@ -1
4620: 34 32 39 2c 36 20 2b 31 34 37 34 2c 33 37 20 40 429,6 +1474,37 @
4630: 40 20 54 63 6c 4d 65 72 67 65 52 65 74 75 72 6e @ TclMergeReturn
4640: 4f 70 74 69 6f 6e 73 28 0a 20 20 20 20 20 7d 0a Options(. }.
4650: 20 0a 20 20 20 20 20 2f 2a 0a 2b 20 20 20 20 20 . /*.+
4660: 2a 20 43 68 65 63 6b 20 66 6f 72 20 62 6f 67 75 * Check for bogu
4670: 73 20 2d 65 72 72 6f 72 73 74 61 63 6b 20 76 61 s -errorstack va
4680: 6c 75 65 2e 0a 2b 20 20 20 20 20 2a 2f 0a 2b 0a lue..+ */.+.
4690: 2b 20 20 20 20 54 63 6c 5f 44 69 63 74 4f 62 6a + Tcl_DictObj
46a0: 47 65 74 28 4e 55 4c 4c 2c 20 72 65 74 75 72 6e Get(NULL, return
46b0: 4f 70 74 73 2c 20 6b 65 79 73 5b 4b 45 59 5f 45 Opts, keys[KEY_E
46c0: 52 52 4f 52 53 54 41 43 4b 5d 2c 20 26 76 61 6c RRORSTACK], &val
46d0: 75 65 50 74 72 29 3b 0a 2b 20 20 20 20 69 66 20 uePtr);.+ if
46e0: 28 76 61 6c 75 65 50 74 72 20 21 3d 20 4e 55 4c (valuePtr != NUL
46f0: 4c 29 20 7b 0a 2b 09 69 6e 74 20 6c 65 6e 67 74 L) {.+.int lengt
4700: 68 3b 0a 2b 0a 2b 09 69 66 20 28 54 43 4c 5f 45 h;.+.+.if (TCL_E
4710: 52 52 4f 52 20 3d 3d 20 54 63 6c 5f 4c 69 73 74 RROR == Tcl_List
4720: 4f 62 6a 4c 65 6e 67 74 68 28 4e 55 4c 4c 2c 20 ObjLength(NULL,
4730: 76 61 6c 75 65 50 74 72 2c 20 26 6c 65 6e 67 74 valuePtr, &lengt
4740: 68 20 29 29 20 7b 0a 2b 09 20 20 20 20 2f 2a 0a h )) {.+. /*.
4750: 2b 09 20 20 20 20 20 2a 20 56 61 6c 75 65 20 69 +. * Value i
4760: 73 20 6e 6f 74 20 61 20 6c 69 73 74 2c 20 77 68 s not a list, wh
4770: 69 63 68 20 69 73 20 69 6c 6c 65 67 61 6c 20 66 ich is illegal f
4780: 6f 72 20 2d 65 72 72 6f 72 73 74 61 63 6b 2e 0a or -errorstack..
4790: 2b 09 20 20 20 20 20 2a 2f 0a 2b 09 20 20 20 20 +. */.+.
47a0: 54 63 6c 5f 52 65 73 65 74 52 65 73 75 6c 74 28 Tcl_ResetResult(
47b0: 69 6e 74 65 72 70 29 3b 0a 2b 09 20 20 20 20 54 interp);.+. T
47c0: 63 6c 5f 41 70 70 65 6e 64 52 65 73 75 6c 74 28 cl_AppendResult(
47d0: 69 6e 74 65 72 70 2c 20 22 62 61 64 20 2d 65 72 interp, "bad -er
47e0: 72 6f 72 73 74 61 63 6b 20 76 61 6c 75 65 3a 20 rorstack value:
47f0: 22 0a 2b 09 09 09 20 20 20 20 20 22 65 78 70 65 ".+... "expe
4800: 63 74 65 64 20 61 20 6c 69 73 74 20 62 75 74 20 cted a list but
4810: 67 6f 74 20 5c 22 22 2c 0a 2b 09 09 09 20 20 20 got \"",.+...
4820: 20 20 54 63 6c 47 65 74 53 74 72 69 6e 67 28 76 TclGetString(v
4830: 61 6c 75 65 50 74 72 29 2c 20 22 5c 22 22 2c 20 aluePtr), "\"",
4840: 4e 55 4c 4c 29 3b 0a 2b 09 20 20 20 20 54 63 6c NULL);.+. Tcl
4850: 5f 53 65 74 45 72 72 6f 72 43 6f 64 65 28 69 6e _SetErrorCode(in
4860: 74 65 72 70 2c 20 22 54 43 4c 22 2c 20 22 52 45 terp, "TCL", "RE
4870: 53 55 4c 54 22 2c 20 22 4e 4f 4e 4c 49 53 54 5f SULT", "NONLIST_
4880: 45 52 52 4f 52 53 54 41 43 4b 22 2c 20 4e 55 4c ERRORSTACK", NUL
4890: 4c 29 3b 0a 2b 09 20 20 20 20 67 6f 74 6f 20 65 L);.+. goto e
48a0: 72 72 6f 72 3b 0a 2b 09 7d 0a 2b 20 20 20 20 20 rror;.+.}.+
48b0: 20 20 20 69 66 20 28 6c 65 6e 67 74 68 20 25 20 if (length %
48c0: 32 29 20 7b 0a 2b 20 20 20 20 20 20 20 20 20 20 2) {.+
48d0: 20 20 2f 2a 0a 2b 20 20 20 20 20 20 20 20 20 20 /*.+
48e0: 20 20 20 2a 20 45 72 72 6f 72 73 74 61 63 6b 20 * Errorstack
48f0: 6d 75 73 74 20 61 6c 77 61 79 73 20 62 65 20 61 must always be a
4900: 6e 20 65 76 65 6e 2d 73 69 7a 65 64 20 6c 69 73 n even-sized lis
4910: 74 0a 2b 20 20 20 20 20 20 20 20 20 20 20 20 20 t.+
4920: 2a 2f 0a 2b 20 20 20 20 20 20 20 20 20 20 20 20 */.+
4930: 54 63 6c 5f 52 65 73 65 74 52 65 73 75 6c 74 28 Tcl_ResetResult(
4940: 69 6e 74 65 72 70 29 3b 0a 2b 09 20 20 20 20 54 interp);.+. T
4950: 63 6c 5f 41 70 70 65 6e 64 52 65 73 75 6c 74 28 cl_AppendResult(
4960: 69 6e 74 65 72 70 2c 20 22 66 6f 72 62 69 64 64 interp, "forbidd
4970: 65 6e 20 6f 64 64 2d 73 69 7a 65 64 20 6c 69 73 en odd-sized lis
4980: 74 20 66 6f 72 20 2d 65 72 72 6f 72 73 74 61 63 t for -errorstac
4990: 6b 3a 20 5c 22 22 2c 0a 2b 09 09 09 20 20 20 20 k: \"",.+...
49a0: 20 54 63 6c 47 65 74 53 74 72 69 6e 67 28 76 61 TclGetString(va
49b0: 6c 75 65 50 74 72 29 2c 20 22 5c 22 22 2c 20 4e luePtr), "\"", N
49c0: 55 4c 4c 29 3b 0a 2b 09 20 20 20 20 54 63 6c 5f ULL);.+. Tcl_
49d0: 53 65 74 45 72 72 6f 72 43 6f 64 65 28 69 6e 74 SetErrorCode(int
49e0: 65 72 70 2c 20 22 54 43 4c 22 2c 20 22 52 45 53 erp, "TCL", "RES
49f0: 55 4c 54 22 2c 20 22 4f 44 44 53 49 5a 45 44 4c ULT", "ODDSIZEDL
4a00: 49 53 54 5f 45 52 52 4f 52 53 54 41 43 4b 22 2c IST_ERRORSTACK",
4a10: 20 4e 55 4c 4c 29 3b 0a 2b 09 20 20 20 20 67 6f NULL);.+. go
4a20: 74 6f 20 65 72 72 6f 72 3b 0a 2b 20 20 20 20 20 to error;.+
4a30: 20 20 20 7d 0a 2b 20 20 20 20 7d 0a 2b 0a 2b 20 }.+ }.+.+
4a40: 20 20 20 2f 2a 0a 20 20 20 20 20 20 2a 20 43 6f /*. * Co
4a50: 6e 76 65 72 74 20 5b 72 65 74 75 72 6e 20 2d 63 nvert [return -c
4a60: 6f 64 65 20 72 65 74 75 72 6e 20 2d 6c 65 76 65 ode return -leve
4a70: 6c 20 58 5d 20 74 6f 20 5b 72 65 74 75 72 6e 20 l X] to [return
4a80: 2d 63 6f 64 65 20 6f 6b 20 2d 6c 65 76 65 6c 20 -code ok -level
4a90: 58 2b 31 5d 0a 20 20 20 20 20 20 2a 2f 0a 20 0a X+1]. */. .
4aa0: 40 40 20 2d 31 35 30 35 2c 36 20 2b 31 35 38 31 @@ -1505,6 +1581
4ab0: 2c 37 20 40 40 20 54 63 6c 5f 47 65 74 52 65 74 ,7 @@ Tcl_GetRet
4ac0: 75 72 6e 4f 70 74 69 6f 6e 73 28 0a 20 0a 20 20 urnOptions(. .
4ad0: 20 20 20 69 66 20 28 72 65 73 75 6c 74 20 3d 3d if (result ==
4ae0: 20 54 43 4c 5f 45 52 52 4f 52 29 20 7b 0a 20 09 TCL_ERROR) {. .
4af0: 54 63 6c 5f 41 64 64 4f 62 6a 45 72 72 6f 72 49 Tcl_AddObjErrorI
4b00: 6e 66 6f 28 69 6e 74 65 72 70 2c 20 22 22 2c 20 nfo(interp, "",
4b10: 2d 31 29 3b 0a 2b 20 20 20 20 20 20 20 20 54 63 -1);.+ Tc
4b20: 6c 5f 44 69 63 74 4f 62 6a 50 75 74 28 4e 55 4c l_DictObjPut(NUL
4b30: 4c 2c 20 6f 70 74 69 6f 6e 73 2c 20 6b 65 79 73 L, options, keys
4b40: 5b 4b 45 59 5f 45 52 52 4f 52 53 54 41 43 4b 5d [KEY_ERRORSTACK]
4b50: 2c 20 69 50 74 72 2d 3e 65 72 72 6f 72 53 74 61 , iPtr->errorSta
4b60: 63 6b 29 3b 0a 20 20 20 20 20 7d 0a 20 20 20 20 ck);. }.
4b70: 20 69 66 20 28 69 50 74 72 2d 3e 65 72 72 6f 72 if (iPtr->error
4b80: 43 6f 64 65 29 20 7b 0a 20 09 54 63 6c 5f 44 69 Code) {. .Tcl_Di
4b90: 63 74 4f 62 6a 50 75 74 28 4e 55 4c 4c 2c 20 6f ctObjPut(NULL, o
4ba0: 70 74 69 6f 6e 73 2c 20 6b 65 79 73 5b 4b 45 59 ptions, keys[KEY
4bb0: 5f 45 52 52 4f 52 43 4f 44 45 5d 2c 20 69 50 74 _ERRORCODE], iPt
4bc0: 72 2d 3e 65 72 72 6f 72 43 6f 64 65 29 3b 0a 40 r->errorCode);.@
4bd0: 40 20 2d 31 36 33 36 2c 35 20 2b 31 37 31 33 2c @ -1636,5 +1713,
4be0: 37 20 40 40 20 54 63 6c 5f 54 72 61 6e 73 66 65 7 @@ Tcl_Transfe
4bf0: 72 52 65 73 75 6c 74 28 0a 20 20 2a 20 6d 6f 64 rResult(. * mod
4c00: 65 3a 20 63 0a 20 20 2a 20 63 2d 62 61 73 69 63 e: c. * c-basic
4c10: 2d 6f 66 66 73 65 74 3a 20 34 0a 20 20 2a 20 66 -offset: 4. * f
4c20: 69 6c 6c 2d 63 6f 6c 75 6d 6e 3a 20 37 38 0a 2b ill-column: 78.+
4c30: 20 2a 20 74 61 62 2d 77 69 64 74 68 3a 20 38 0a * tab-width: 8.
4c40: 2b 20 2a 20 69 6e 64 65 6e 74 2d 74 61 62 73 2d + * indent-tabs-
4c50: 6d 6f 64 65 3a 20 6e 69 6c 0a 20 20 2a 20 45 6e mode: nil. * En
4c60: 64 3a 0a 20 20 2a 2f 0a 49 6e 64 65 78 3a 20 74 d:. */.Index: t
4c70: 65 73 74 73 2f 63 6d 64 4d 5a 2e 74 65 73 74 0a ests/cmdMZ.test.
4c80: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
4c90: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
4ca0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
4cb0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
4cc0: 3d 3d 3d 0a 52 43 53 20 66 69 6c 65 3a 20 2f 63 ===.RCS file: /c
4cd0: 76 73 72 6f 6f 74 2f 74 63 6c 2f 74 63 6c 2f 74 vsroot/tcl/tcl/t
4ce0: 65 73 74 73 2f 63 6d 64 4d 5a 2e 74 65 73 74 2c ests/cmdMZ.test,
4cf0: 76 0a 72 65 74 72 69 65 76 69 6e 67 20 72 65 76 v.retrieving rev
4d00: 69 73 69 6f 6e 20 31 2e 32 38 0a 64 69 66 66 20 ision 1.28.diff
4d10: 2d 75 20 2d 70 20 2d 75 20 2d 70 20 2d 72 31 2e -u -p -u -p -r1.
4d20: 32 38 20 63 6d 64 4d 5a 2e 74 65 73 74 0a 2d 2d 28 cmdMZ.test.--
4d30: 2d 20 74 65 73 74 73 2f 63 6d 64 4d 5a 2e 74 65 - tests/cmdMZ.te
4d40: 73 74 09 31 36 20 4e 6f 76 20 32 30 30 39 20 31 st.16 Nov 2009 1
4d50: 38 3a 30 30 3a 31 31 20 2d 30 30 30 30 09 31 2e 8:00:11 -0000.1.
4d60: 32 38 0a 2b 2b 2b 20 74 65 73 74 73 2f 63 6d 64 28.+++ tests/cmd
4d70: 4d 5a 2e 74 65 73 74 09 33 31 20 4d 61 72 20 32 MZ.test.31 Mar 2
4d80: 30 31 30 20 31 34 3a 31 34 3a 34 31 20 2d 30 30 010 14:14:41 -00
4d90: 30 30 0a 40 40 20 2d 31 34 39 2c 31 31 20 2b 31 00.@@ -149,11 +1
4da0: 34 39 2c 31 31 20 40 40 20 74 65 73 74 20 63 6d 49,11 @@ test cm
4db0: 64 4d 5a 2d 72 65 74 75 72 6e 2d 32 2e 38 20 7b dMZ-return-2.8 {
4dc0: 72 65 74 75 72 6e 20 6f 70 74 69 6f 6e 20 68 61 return option ha
4dd0: 6e 0a 20 74 65 73 74 20 63 6d 64 4d 5a 2d 72 65 n. test cmdMZ-re
4de0: 74 75 72 6e 2d 32 2e 39 20 7b 72 65 74 75 72 6e turn-2.9 {return
4df0: 20 6f 70 74 69 6f 6e 20 68 61 6e 64 6c 69 6e 67 option handling
4e00: 7d 20 2d 62 6f 64 79 20 7b 0a 20 20 20 20 20 72 } -body {. r
4e10: 65 74 75 72 6e 20 2d 6c 65 76 65 6c 20 30 20 2d eturn -level 0 -
4e20: 63 6f 64 65 20 31 30 0a 20 7d 20 2d 72 65 74 75 code 10. } -retu
4e30: 72 6e 43 6f 64 65 73 20 31 30 20 2d 72 65 73 75 rnCodes 10 -resu
4e40: 6c 74 20 7b 7d 0a 2d 74 65 73 74 20 63 6d 64 4d lt {}.-test cmdM
4e50: 5a 2d 72 65 74 75 72 6e 2d 32 2e 31 30 20 7b 72 Z-return-2.10 {r
4e60: 65 74 75 72 6e 20 6f 70 74 69 6f 6e 20 68 61 6e eturn option han
4e70: 64 6c 69 6e 67 7d 20 7b 0a 2b 74 65 73 74 20 63 dling} {.+test c
4e80: 6d 64 4d 5a 2d 72 65 74 75 72 6e 2d 32 2e 31 30 mdMZ-return-2.10
4e90: 20 7b 72 65 74 75 72 6e 20 6f 70 74 69 6f 6e 20 {return option
4ea0: 68 61 6e 64 6c 69 6e 67 7d 20 2d 62 6f 64 79 20 handling} -body
4eb0: 7b 0a 20 20 20 20 20 6c 69 73 74 20 5b 63 61 74 {. list [cat
4ec0: 63 68 20 7b 72 65 74 75 72 6e 20 2d 6c 65 76 65 ch {return -leve
4ed0: 6c 20 30 20 2d 63 6f 64 65 20 65 72 72 6f 72 7d l 0 -code error}
4ee0: 20 2d 3e 20 66 6f 6f 5d 20 5b 64 69 63 74 53 6f -> foo] [dictSo
4ef0: 72 74 20 24 66 6f 6f 5d 0a 2d 7d 20 7b 31 20 7b rt $foo].-} {1 {
4f00: 2d 63 6f 64 65 20 31 20 2d 65 72 72 6f 72 63 6f -code 1 -errorco
4f10: 64 65 20 4e 4f 4e 45 20 2d 65 72 72 6f 72 69 6e de NONE -errorin
4f20: 66 6f 20 7b 0a 2b 7d 20 2d 6d 61 74 63 68 20 67 fo {.+} -match g
4f30: 6c 6f 62 20 2d 72 65 73 75 6c 74 20 7b 31 20 7b lob -result {1 {
4f40: 2d 63 6f 64 65 20 31 20 2d 65 72 72 6f 72 63 6f -code 1 -errorco
4f50: 64 65 20 4e 4f 4e 45 20 2d 65 72 72 6f 72 69 6e de NONE -errorin
4f60: 66 6f 20 7b 0a 20 20 20 20 20 77 68 69 6c 65 20 fo {. while
4f70: 65 78 65 63 75 74 69 6e 67 0a 2d 22 72 65 74 75 executing.-"retu
4f80: 72 6e 20 2d 6c 65 76 65 6c 20 30 20 2d 63 6f 64 rn -level 0 -cod
4f90: 65 20 65 72 72 6f 72 22 7d 20 2d 65 72 72 6f 72 e error"} -error
4fa0: 6c 69 6e 65 20 31 20 2d 6c 65 76 65 6c 20 30 7d line 1 -level 0}
4fb0: 7d 0a 2b 22 72 65 74 75 72 6e 20 2d 6c 65 76 65 }.+"return -leve
4fc0: 6c 20 30 20 2d 63 6f 64 65 20 65 72 72 6f 72 22 l 0 -code error"
4fd0: 7d 20 2d 65 72 72 6f 72 6c 69 6e 65 20 31 20 2d } -errorline 1 -
4fe0: 65 72 72 6f 72 73 74 61 63 6b 20 2a 20 2d 6c 65 errorstack * -le
4ff0: 76 65 6c 20 30 7d 7d 0a 20 74 65 73 74 20 63 6d vel 0}}. test cm
5000: 64 4d 5a 2d 72 65 74 75 72 6e 2d 32 2e 31 31 20 dMZ-return-2.11
5010: 7b 72 65 74 75 72 6e 20 6f 70 74 69 6f 6e 20 68 {return option h
5020: 61 6e 64 6c 69 6e 67 7d 20 7b 0a 20 20 20 20 20 andling} {.
5030: 6c 69 73 74 20 5b 63 61 74 63 68 20 7b 72 65 74 list [catch {ret
5040: 75 72 6e 20 2d 6c 65 76 65 6c 20 30 20 2d 63 6f urn -level 0 -co
5050: 64 65 20 62 72 65 61 6b 7d 20 2d 3e 20 66 6f 6f de break} -> foo
5060: 5d 20 5b 64 69 63 74 53 6f 72 74 20 24 66 6f 6f ] [dictSort $foo
5070: 5d 0a 20 7d 20 7b 33 20 7b 2d 63 6f 64 65 20 33 ]. } {3 {-code 3
5080: 20 2d 6c 65 76 65 6c 20 30 7d 7d 0a 40 40 20 2d -level 0}}.@@ -
5090: 31 39 33 2c 36 20 2b 31 39 33 2c 39 20 40 40 20 193,6 +193,9 @@
50a0: 74 65 73 74 20 63 6d 64 4d 5a 2d 72 65 74 75 72 test cmdMZ-retur
50b0: 6e 2d 32 2e 31 37 20 7b 72 65 74 75 72 6e 20 6f n-2.17 {return o
50c0: 70 74 6f 6e 20 68 61 6e 0a 20 7d 20 2d 63 6c 65 pton han. } -cle
50d0: 61 6e 75 70 20 7b 0a 20 20 20 20 20 72 65 6e 61 anup {. rena
50e0: 6d 65 20 70 20 7b 7d 0a 20 7d 20 2d 72 65 73 75 me p {}. } -resu
50f0: 6c 74 20 7b 31 20 63 20 7b 61 20 62 7d 7d 0a 2b lt {1 c {a b}}.+
5100: 74 65 73 74 20 63 6d 64 4d 5a 2d 72 65 74 75 72 test cmdMZ-retur
5110: 6e 2d 32 2e 31 38 20 7b 72 65 74 75 72 6e 20 6f n-2.18 {return o
5120: 70 74 69 6f 6e 20 68 61 6e 64 6c 69 6e 67 7d 20 ption handling}
5130: 7b 0a 2b 20 20 20 20 6c 69 73 74 20 5b 63 61 74 {.+ list [cat
5140: 63 68 20 7b 72 65 74 75 72 6e 20 2d 63 6f 64 65 ch {return -code
5150: 20 65 72 72 6f 72 20 2d 65 72 72 6f 72 73 74 61 error -errorsta
5160: 63 6b 20 5b 6c 69 73 74 20 43 41 4c 4c 20 61 20 ck [list CALL a
5170: 43 41 4c 4c 20 62 5d 20 79 6f 7d 20 2d 3e 20 66 CALL b] yo} -> f
5180: 6f 6f 5d 20 5b 64 69 63 74 53 6f 72 74 20 24 66 oo] [dictSort $f
5190: 6f 6f 5d 20 5b 69 6e 66 6f 20 65 72 72 6f 72 73 oo] [info errors
51a0: 74 61 63 6b 5d 0a 2b 7d 20 7b 32 20 7b 2d 63 6f tack].+} {2 {-co
51b0: 64 65 20 31 20 2d 65 72 72 6f 72 63 6f 64 65 20 de 1 -errorcode
51c0: 4e 4f 4e 45 20 2d 65 72 72 6f 72 73 74 61 63 6b NONE -errorstack
51d0: 20 7b 43 41 4c 4c 20 61 20 43 41 4c 4c 20 62 7d {CALL a CALL b}
51e0: 20 2d 6c 65 76 65 6c 20 31 7d 20 7b 43 41 4c 4c -level 1} {CALL
51f0: 20 61 20 43 41 4c 4c 20 62 7d 7d 0a 20 0a 20 23 a CALL b}}. . #
5200: 20 43 68 65 63 6b 20 74 68 61 74 20 74 68 65 20 Check that the
5210: 72 65 73 75 6c 74 20 6f 66 20 61 20 5b 72 65 74 result of a [ret
5220: 75 72 6e 20 2d 6f 70 74 69 6f 6e 73 20 24 6f 70 urn -options $op
5230: 74 73 20 24 72 65 73 75 6c 74 5d 20 69 73 0a 20 ts $result] is.
5240: 23 20 69 6e 64 69 73 74 69 6e 67 75 69 73 68 61 # indistinguisha
5250: 62 6c 65 20 66 72 6f 6d 20 74 68 61 74 20 6f 66 ble from that of
5260: 20 74 68 65 20 6f 72 69 67 69 6e 61 6c 6c 79 20 the originally
5270: 63 61 75 67 68 74 20 73 63 72 69 70 74 2c 20 6e caught script, n
5280: 6f 20 6d 61 74 74 65 72 20 77 68 61 74 0a 40 40 o matter what.@@
5290: 20 2d 32 31 31 2c 36 20 2b 32 31 34 2c 37 20 40 -211,6 +214,7 @
52a0: 40 20 66 6f 72 65 61 63 68 20 7b 74 65 73 74 69 @ foreach {testi
52b0: 64 20 73 63 72 69 70 74 7d 20 7b 0a 20 20 20 20 d script} {.
52c0: 20 63 6d 64 4d 5a 2d 72 65 74 75 72 6e 2d 33 2e cmdMZ-return-3.
52d0: 31 30 20 7b 72 65 74 75 72 6e 20 2d 63 6f 64 65 10 {return -code
52e0: 20 65 72 72 6f 72 20 2d 65 72 72 6f 72 69 6e 66 error -errorinf
52f0: 6f 20 66 6f 6f 7d 0a 20 20 20 20 20 63 6d 64 4d o foo}. cmdM
5300: 5a 2d 72 65 74 75 72 6e 2d 33 2e 31 31 20 7b 72 Z-return-3.11 {r
5310: 65 74 75 72 6e 20 2d 63 6f 64 65 20 65 72 72 6f eturn -code erro
5320: 72 20 2d 65 72 72 6f 72 69 6e 66 6f 20 66 6f 6f r -errorinfo foo
5330: 20 2d 65 72 72 6f 72 63 6f 64 65 20 62 61 72 7d -errorcode bar}
5340: 0a 20 20 20 20 20 63 6d 64 4d 5a 2d 72 65 74 75 . cmdMZ-retu
5350: 72 6e 2d 33 2e 31 32 20 7b 72 65 74 75 72 6e 20 rn-3.12 {return
5360: 2d 63 6f 64 65 20 65 72 72 6f 72 20 2d 65 72 72 -code error -err
5370: 6f 72 69 6e 66 6f 20 66 6f 6f 20 2d 65 72 72 6f orinfo foo -erro
5380: 72 63 6f 64 65 20 62 61 72 20 2d 65 72 72 6f 72 rcode bar -error
5390: 6c 69 6e 65 20 31 30 7d 0a 2b 20 20 20 20 63 6d line 10}.+ cm
53a0: 64 4d 5a 2d 72 65 74 75 72 6e 2d 33 2e 31 32 2e dMZ-return-3.12.
53b0: 31 20 7b 72 65 74 75 72 6e 20 2d 63 6f 64 65 20 1 {return -code
53c0: 65 72 72 6f 72 20 2d 65 72 72 6f 72 69 6e 66 6f error -errorinfo
53d0: 20 66 6f 6f 20 2d 65 72 72 6f 72 63 6f 64 65 20 foo -errorcode
53e0: 62 61 72 20 2d 65 72 72 6f 72 6c 69 6e 65 20 31 bar -errorline 1
53f0: 30 20 2d 65 72 72 6f 72 73 74 61 63 6b 20 62 61 0 -errorstack ba
5400: 7a 7d 0a 20 20 20 20 20 63 6d 64 4d 5a 2d 72 65 z}. cmdMZ-re
5410: 74 75 72 6e 2d 33 2e 31 33 20 7b 72 65 74 75 72 turn-3.13 {retur
5420: 6e 20 2d 6f 70 74 69 6f 6e 73 20 7b 78 20 79 20 n -options {x y
5430: 7a 20 32 7d 7d 0a 20 20 20 20 20 63 6d 64 4d 5a z 2}}. cmdMZ
5440: 2d 72 65 74 75 72 6e 2d 33 2e 31 34 20 7b 72 65 -return-3.14 {re
5450: 74 75 72 6e 20 2d 6c 65 76 65 6c 20 33 20 2d 63 turn -level 3 -c
5460: 6f 64 65 20 62 72 65 61 6b 20 73 64 66 7d 0a 20 ode break sdf}.
5470: 7d 20 7b 0a 49 6e 64 65 78 3a 20 74 65 73 74 73 } {.Index: tests
5480: 2f 65 72 72 6f 72 2e 74 65 73 74 0a 3d 3d 3d 3d /error.test.====
5490: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
54a0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
54b0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
54c0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a ===============.
54d0: 52 43 53 20 66 69 6c 65 3a 20 2f 63 76 73 72 6f RCS file: /cvsro
54e0: 6f 74 2f 74 63 6c 2f 74 63 6c 2f 74 65 73 74 73 ot/tcl/tcl/tests
54f0: 2f 65 72 72 6f 72 2e 74 65 73 74 2c 76 0a 72 65 /error.test,v.re
5500: 74 72 69 65 76 69 6e 67 20 72 65 76 69 73 69 6f trieving revisio
5510: 6e 20 31 2e 32 38 0a 64 69 66 66 20 2d 75 20 2d n 1.28.diff -u -
5520: 70 20 2d 75 20 2d 70 20 2d 72 31 2e 32 38 20 65 p -u -p -r1.28 e
5530: 72 72 6f 72 2e 74 65 73 74 0a 2d 2d 2d 20 74 65 rror.test.--- te
5540: 73 74 73 2f 65 72 72 6f 72 2e 74 65 73 74 09 32 sts/error.test.2
5550: 33 20 4d 61 72 20 32 30 31 30 20 31 32 3a 35 38 3 Mar 2010 12:58
5560: 3a 33 39 20 2d 30 30 30 30 09 31 2e 32 38 0a 2b :39 -0000.1.28.+
5570: 2b 2b 20 74 65 73 74 73 2f 65 72 72 6f 72 2e 74 ++ tests/error.t
5580: 65 73 74 09 33 31 20 4d 61 72 20 32 30 31 30 20 est.31 Mar 2010
5590: 31 34 3a 31 34 3a 34 31 20 2d 30 30 30 30 0a 40 14:14:41 -0000.@
55a0: 40 20 2d 31 36 39 2c 36 20 2b 31 36 39 2c 31 39 @ -169,6 +169,19
55b0: 20 40 40 20 74 65 73 74 20 65 72 72 6f 72 2d 34 @@ test error-4
55c0: 2e 35 20 7b 65 72 72 6f 72 49 6e 66 6f 20 61 6e .5 {errorInfo an
55d0: 64 20 65 72 72 6f 72 43 6f 64 65 20 0a 20 20 20 d errorCode .
55e0: 20 20 6c 69 73 74 20 5b 63 61 74 63 68 20 7b 65 list [catch {e
55f0: 72 72 6f 72 20 6d 73 67 31 20 6d 73 67 32 20 7b rror msg1 msg2 {
5600: 7d 7d 20 6d 73 67 5d 20 24 6d 73 67 20 24 3a 3a }} msg] $msg $::
5610: 65 72 72 6f 72 49 6e 66 6f 20 24 3a 3a 65 72 72 errorInfo $::err
5620: 6f 72 43 6f 64 65 0a 20 7d 20 7b 31 20 6d 73 67 orCode. } {1 msg
5630: 31 20 6d 73 67 32 20 7b 7d 7d 0a 20 0a 2b 74 65 1 msg2 {}}. .+te
5640: 73 74 20 65 72 72 6f 72 2d 34 2e 36 20 7b 65 72 st error-4.6 {er
5650: 72 6f 72 73 74 61 63 6b 20 76 69 61 20 69 6e 66 rorstack via inf
5660: 6f 20 7d 20 2d 62 6f 64 79 20 7b 0a 2b 20 20 20 o } -body {.+
5670: 20 70 72 6f 63 20 66 20 78 20 7b 67 20 24 78 24 proc f x {g $x$
5680: 78 7d 0a 2b 20 20 20 20 70 72 6f 63 20 67 20 78 x}.+ proc g x
5690: 20 7b 65 72 72 6f 72 20 47 3a 24 78 7d 0a 2b 20 {error G:$x}.+
56a0: 20 20 20 63 61 74 63 68 20 7b 66 20 31 32 7d 0a catch {f 12}.
56b0: 2b 20 20 20 20 69 6e 66 6f 20 65 72 72 6f 72 73 + info errors
56c0: 74 61 63 6b 0a 2b 7d 20 2d 6d 61 74 63 68 20 67 tack.+} -match g
56d0: 6c 6f 62 20 2d 72 65 73 75 6c 74 20 7b 43 41 4c lob -result {CAL
56e0: 4c 20 7b 67 20 31 32 31 32 7d 20 43 41 4c 4c 20 L {g 1212} CALL
56f0: 7b 66 20 31 32 7d 20 55 50 20 31 7d 0a 2b 74 65 {f 12} UP 1}.+te
5700: 73 74 20 65 72 72 6f 72 2d 34 2e 37 20 7b 65 72 st error-4.7 {er
5710: 72 6f 72 73 74 61 63 6b 20 76 69 61 20 6f 70 74 rorstack via opt
5720: 69 6f 6e 73 20 64 69 63 74 20 7d 20 2d 62 6f 64 ions dict } -bod
5730: 79 20 7b 0a 2b 20 20 20 20 70 72 6f 63 20 66 20 y {.+ proc f
5740: 78 20 7b 67 20 24 78 24 78 7d 0a 2b 20 20 20 20 x {g $x$x}.+
5750: 70 72 6f 63 20 67 20 78 20 7b 65 72 72 6f 72 20 proc g x {error
5760: 47 3a 24 78 7d 0a 2b 20 20 20 20 63 61 74 63 68 G:$x}.+ catch
5770: 20 7b 66 20 31 32 7d 20 6d 20 64 0a 2b 20 20 20 {f 12} m d.+
5780: 20 64 69 63 74 20 67 65 74 20 24 64 20 2d 65 72 dict get $d -er
5790: 72 6f 72 73 74 61 63 6b 0a 2b 7d 20 2d 6d 61 74 rorstack.+} -mat
57a0: 63 68 20 67 6c 6f 62 20 2d 72 65 73 75 6c 74 20 ch glob -result
57b0: 7b 43 41 4c 4c 20 7b 67 20 31 32 31 32 7d 20 43 {CALL {g 1212} C
57c0: 41 4c 4c 20 7b 66 20 31 32 7d 20 55 50 20 31 7d ALL {f 12} UP 1}
57d0: 0a 2b 0a 20 23 20 45 72 72 6f 72 73 20 69 6e 20 .+. # Errors in
57e0: 65 72 72 6f 72 20 63 6f 6d 6d 61 6e 64 20 69 74 error command it
57f0: 73 65 6c 66 0a 20 0a 20 74 65 73 74 20 65 72 72 self. . test err
5800: 6f 72 2d 35 2e 31 20 7b 65 72 72 6f 72 73 20 69 or-5.1 {errors i
5810: 6e 20 65 72 72 6f 72 20 63 6f 6d 6d 61 6e 64 7d n error command}
5820: 20 7b 0a 40 40 20 2d 32 32 33 2c 36 20 2b 32 33 {.@@ -223,6 +23
5830: 36 2c 31 35 20 40 40 20 74 65 73 74 20 65 72 72 6,15 @@ test err
5840: 6f 72 2d 36 2e 39 20 7b 63 61 74 63 68 20 6d 75 or-6.9 {catch mu
5850: 73 74 20 72 65 73 65 74 20 65 72 72 6f 72 20 73 st reset error s
5860: 0a 20 20 20 20 20 63 61 74 63 68 20 66 6f 6f 0a . catch foo.
5870: 20 20 20 20 20 6c 69 73 74 20 24 3a 3a 65 72 72 list $::err
5880: 6f 72 43 6f 64 65 0a 20 7d 20 7b 4e 4f 4e 45 7d orCode. } {NONE}
5890: 0a 2b 74 65 73 74 20 65 72 72 6f 72 2d 36 2e 31 .+test error-6.1
58a0: 30 20 7b 63 61 74 63 68 20 6d 75 73 74 20 72 65 0 {catch must re
58b0: 73 65 74 20 65 72 72 6f 72 73 74 61 63 6b 7d 20 set errorstack}
58c0: 2d 62 6f 64 79 20 7b 0a 2b 09 70 72 6f 63 20 66 -body {.+.proc f
58d0: 20 78 20 7b 67 20 24 78 24 78 7d 0a 2b 09 70 72 x {g $x$x}.+.pr
58e0: 6f 63 20 67 20 78 20 7b 65 72 72 6f 72 20 47 3a oc g x {error G:
58f0: 24 78 7d 0a 2b 09 63 61 74 63 68 20 7b 66 20 31 $x}.+.catch {f 1
5900: 32 7d 0a 2b 09 73 65 74 20 65 31 20 5b 69 6e 66 2}.+.set e1 [inf
5910: 6f 20 65 72 72 6f 72 73 74 61 63 6b 5d 0a 2b 09 o errorstack].+.
5920: 63 61 74 63 68 20 7b 66 20 31 33 7d 0a 2b 09 73 catch {f 13}.+.s
5930: 65 74 20 65 32 20 5b 69 6e 66 6f 20 65 72 72 6f et e2 [info erro
5940: 72 73 74 61 63 6b 5d 0a 2b 09 6c 69 73 74 20 24 rstack].+.list $
5950: 65 31 20 24 65 32 0a 2b 7d 20 2d 6d 61 74 63 68 e1 $e2.+} -match
5960: 20 67 6c 6f 62 20 2d 72 65 73 75 6c 74 20 7b 7b glob -result {{
5970: 43 41 4c 4c 20 7b 67 20 31 32 31 32 7d 20 43 41 CALL {g 1212} CA
5980: 4c 4c 20 7b 66 20 31 32 7d 20 55 50 20 31 7d 20 LL {f 12} UP 1}
5990: 7b 43 41 4c 4c 20 7b 67 20 31 33 31 33 7d 20 43 {CALL {g 1313} C
59a0: 41 4c 4c 20 7b 66 20 31 33 7d 20 55 50 20 31 7d ALL {f 13} UP 1}
59b0: 7d 0a 20 0a 20 74 65 73 74 20 65 72 72 6f 72 2d }. . test error-
59c0: 37 2e 31 20 7b 42 75 67 20 31 33 39 37 38 34 33 7.1 {Bug 1397843
59d0: 7d 20 2d 62 6f 64 79 20 7b 0a 20 20 20 20 20 76 } -body {. v
59e0: 61 72 69 61 62 6c 65 20 63 6d 64 73 0a 49 6e 64 ariable cmds.Ind
59f0: 65 78 3a 20 74 65 73 74 73 2f 65 78 65 63 75 74 ex: tests/execut
5a00: 65 2e 74 65 73 74 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d e.test.=========
5a10: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
5a20: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
5a30: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
5a40: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 52 43 53 20 66 ==========.RCS f
5a50: 69 6c 65 3a 20 2f 63 76 73 72 6f 6f 74 2f 74 63 ile: /cvsroot/tc
5a60: 6c 2f 74 63 6c 2f 74 65 73 74 73 2f 65 78 65 63 l/tcl/tests/exec
5a70: 75 74 65 2e 74 65 73 74 2c 76 0a 72 65 74 72 69 ute.test,v.retri
5a80: 65 76 69 6e 67 20 72 65 76 69 73 69 6f 6e 20 31 eving revision 1
5a90: 2e 33 34 0a 64 69 66 66 20 2d 75 20 2d 70 20 2d .34.diff -u -p -
5aa0: 75 20 2d 70 20 2d 72 31 2e 33 34 20 65 78 65 63 u -p -r1.34 exec
5ab0: 75 74 65 2e 74 65 73 74 0a 2d 2d 2d 20 74 65 73 ute.test.--- tes
5ac0: 74 73 2f 65 78 65 63 75 74 65 2e 74 65 73 74 09 ts/execute.test.
5ad0: 31 36 20 4e 6f 76 20 32 30 30 39 20 31 38 3a 30 16 Nov 2009 18:0
5ae0: 30 3a 31 31 20 2d 30 30 30 30 09 31 2e 33 34 0a 0:11 -0000.1.34.
5af0: 2b 2b 2b 20 74 65 73 74 73 2f 65 78 65 63 75 74 +++ tests/execut
5b00: 65 2e 74 65 73 74 09 33 31 20 4d 61 72 20 32 30 e.test.31 Mar 20
5b10: 31 30 20 31 34 3a 31 34 3a 34 31 20 2d 30 30 30 10 14:14:41 -000
5b20: 30 0a 40 40 20 2d 39 35 36 2c 31 31 20 2b 39 35 0.@@ -956,11 +95
5b30: 36 2c 31 31 20 40 40 20 74 65 73 74 20 65 78 65 6,11 @@ test exe
5b40: 63 75 74 65 2d 38 2e 35 20 7b 42 75 67 20 32 30 cute-8.5 {Bug 20
5b50: 33 38 30 36 39 7d 20 2d 73 65 74 75 70 20 7b 0a 38069} -setup {.
5b60: 20 20 20 20 20 64 65 6d 6f 0a 20 7d 20 2d 63 6c demo. } -cl
5b70: 65 61 6e 75 70 20 7b 0a 20 20 20 20 20 72 65 6e eanup {. ren
5b80: 61 6d 65 20 64 65 6d 6f 20 7b 7d 0a 2d 7d 20 2d ame demo {}.-} -
5b90: 72 65 73 75 6c 74 20 7b 2d 63 6f 64 65 20 31 20 result {-code 1
5ba0: 2d 6c 65 76 65 6c 20 30 20 2d 65 72 72 6f 72 63 -level 0 -errorc
5bb0: 6f 64 65 20 4e 4f 4e 45 20 2d 65 72 72 6f 72 69 ode NONE -errori
5bc0: 6e 66 6f 20 7b 46 4f 4f 0a 2b 7d 20 2d 6d 61 74 nfo {FOO.+} -mat
5bd0: 63 68 20 67 6c 6f 62 20 2d 72 65 73 75 6c 74 20 ch glob -result
5be0: 7b 2d 63 6f 64 65 20 31 20 2d 6c 65 76 65 6c 20 {-code 1 -level
5bf0: 30 20 2d 65 72 72 6f 72 73 74 61 63 6b 20 2a 20 0 -errorstack *
5c00: 2d 65 72 72 6f 72 63 6f 64 65 20 4e 4f 4e 45 20 -errorcode NONE
5c10: 2d 65 72 72 6f 72 69 6e 66 6f 20 7b 46 4f 4f 0a -errorinfo {FOO.
5c20: 20 20 20 20 20 77 68 69 6c 65 20 65 78 65 63 75 while execu
5c30: 74 69 6e 67 0a 20 22 65 72 72 6f 72 20 46 4f 4f ting. "error FOO
5c40: 22 0a 20 20 20 20 20 69 6e 76 6f 6b 65 64 20 66 ". invoked f
5c50: 72 6f 6d 20 77 69 74 68 69 6e 0a 2d 22 63 61 74 rom within.-"cat
5c60: 63 68 20 5b 6c 69 73 74 20 65 72 72 6f 72 20 46 ch [list error F
5c70: 4f 4f 5d 20 6d 20 6f 22 7d 20 2d 65 72 72 6f 72 OO] m o"} -error
5c80: 6c 69 6e 65 20 32 7d 0a 2b 22 63 61 74 63 68 20 line 2}.+"catch
5c90: 5c 5b 6c 69 73 74 20 65 72 72 6f 72 20 46 4f 4f \[list error FOO
5ca0: 5c 5d 20 6d 20 6f 22 7d 20 2d 65 72 72 6f 72 6c \] m o"} -errorl
5cb0: 69 6e 65 20 32 7d 0a 20 0a 20 74 65 73 74 20 65 ine 2}. . test e
5cc0: 78 65 63 75 74 65 2d 39 2e 31 20 7b 49 6e 74 65 xecute-9.1 {Inte
5cd0: 72 70 20 72 65 73 75 6c 74 20 72 65 73 65 74 74 rp result resett
5ce0: 69 6e 67 20 5b 42 75 67 20 31 35 32 32 38 30 33 ing [Bug 1522803
5cf0: 5d 7d 20 7b 0a 20 20 20 20 20 73 65 74 20 63 20 ]} {. set c
5d00: 30 0a 49 6e 64 65 78 3a 20 74 65 73 74 73 2f 69 0.Index: tests/i
5d10: 6e 66 6f 2e 74 65 73 74 0a 3d 3d 3d 3d 3d 3d 3d nfo.test.=======
5d20: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
5d30: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
5d40: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
5d50: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 52 43 53 ============.RCS
5d60: 20 66 69 6c 65 3a 20 2f 63 76 73 72 6f 6f 74 2f file: /cvsroot/
5d70: 74 63 6c 2f 74 63 6c 2f 74 65 73 74 73 2f 69 6e tcl/tcl/tests/in
5d80: 66 6f 2e 74 65 73 74 2c 76 0a 72 65 74 72 69 65 fo.test,v.retrie
5d90: 76 69 6e 67 20 72 65 76 69 73 69 6f 6e 20 31 2e ving revision 1.
5da0: 37 35 0a 64 69 66 66 20 2d 75 20 2d 70 20 2d 75 75.diff -u -p -u
5db0: 20 2d 70 20 2d 72 31 2e 37 35 20 69 6e 66 6f 2e -p -r1.75 info.
5dc0: 74 65 73 74 0a 2d 2d 2d 20 74 65 73 74 73 2f 69 test.--- tests/i
5dd0: 6e 66 6f 2e 74 65 73 74 09 31 30 20 46 65 62 20 nfo.test.10 Feb
5de0: 32 30 31 30 20 32 33 3a 32 34 3a 32 35 20 2d 30 2010 23:24:25 -0
5df0: 30 30 30 09 31 2e 37 35 0a 2b 2b 2b 20 74 65 73 000.1.75.+++ tes
5e00: 74 73 2f 69 6e 66 6f 2e 74 65 73 74 09 33 31 20 ts/info.test.31
5e10: 4d 61 72 20 32 30 31 30 20 31 34 3a 31 34 3a 34 Mar 2010 14:14:4
5e20: 31 20 2d 30 30 30 30 0a 40 40 20 2d 36 37 36 2c 1 -0000.@@ -676,
5e30: 31 36 20 2b 36 37 36 2c 31 36 20 40 40 20 74 65 16 +676,16 @@ te
5e40: 73 74 20 69 6e 66 6f 2d 32 31 2e 31 20 7b 6d 69 st info-21.1 {mi
5e50: 73 63 65 6c 6c 61 6e 65 6f 75 73 20 65 72 72 6f scellaneous erro
5e60: 72 20 63 6f 6e 64 0a 20 7d 20 2d 72 65 73 75 6c r cond. } -resul
5e70: 74 20 7b 77 72 6f 6e 67 20 23 20 61 72 67 73 3a t {wrong # args:
5e80: 20 73 68 6f 75 6c 64 20 62 65 20 22 69 6e 66 6f should be "info
5e90: 20 73 75 62 63 6f 6d 6d 61 6e 64 20 3f 61 72 67 subcommand ?arg
5ea0: 20 2e 2e 2e 3f 22 7d 0a 20 74 65 73 74 20 69 6e ...?"}. test in
5eb0: 66 6f 2d 32 31 2e 32 20 7b 6d 69 73 63 65 6c 6c fo-21.2 {miscell
5ec0: 61 6e 65 6f 75 73 20 65 72 72 6f 72 20 63 6f 6e aneous error con
5ed0: 64 69 74 69 6f 6e 73 7d 20 2d 72 65 74 75 72 6e ditions} -return
5ee0: 43 6f 64 65 73 20 65 72 72 6f 72 20 2d 62 6f 64 Codes error -bod
5ef0: 79 20 7b 0a 20 20 20 20 20 69 6e 66 6f 20 67 6f y {. info go
5f00: 72 70 0a 2d 7d 20 2d 72 65 73 75 6c 74 20 7b 75 rp.-} -result {u
5f10: 6e 6b 6e 6f 77 6e 20 6f 72 20 61 6d 62 69 67 75 nknown or ambigu
5f20: 6f 75 73 20 73 75 62 63 6f 6d 6d 61 6e 64 20 22 ous subcommand "
5f30: 67 6f 72 70 22 3a 20 6d 75 73 74 20 62 65 20 61 gorp": must be a
5f40: 72 67 73 2c 20 62 6f 64 79 2c 20 63 6c 61 73 73 rgs, body, class
5f50: 2c 20 63 6d 64 63 6f 75 6e 74 2c 20 63 6f 6d 6d , cmdcount, comm
5f60: 61 6e 64 73 2c 20 63 6f 6d 70 6c 65 74 65 2c 20 ands, complete,
5f70: 63 6f 72 6f 75 74 69 6e 65 2c 20 64 65 66 61 75 coroutine, defau
5f80: 6c 74 2c 20 65 78 69 73 74 73 2c 20 66 72 61 6d lt, exists, fram
5f90: 65 2c 20 66 75 6e 63 74 69 6f 6e 73 2c 20 67 6c e, functions, gl
5fa0: 6f 62 61 6c 73 2c 20 68 6f 73 74 6e 61 6d 65 2c obals, hostname,
5fb0: 20 6c 65 76 65 6c 2c 20 6c 69 62 72 61 72 79 2c level, library,
5fc0: 20 6c 6f 61 64 65 64 2c 20 6c 6f 63 61 6c 73 2c loaded, locals,
5fd0: 20 6e 61 6d 65 6f 66 65 78 65 63 75 74 61 62 6c nameofexecutabl
5fe0: 65 2c 20 6f 62 6a 65 63 74 2c 20 70 61 74 63 68 e, object, patch
5ff0: 6c 65 76 65 6c 2c 20 70 72 6f 63 73 2c 20 73 63 level, procs, sc
6000: 72 69 70 74 2c 20 73 68 61 72 65 64 6c 69 62 65 ript, sharedlibe
6010: 78 74 65 6e 73 69 6f 6e 2c 20 74 63 6c 76 65 72 xtension, tclver
6020: 73 69 6f 6e 2c 20 6f 72 20 76 61 72 73 7d 0a 2b sion, or vars}.+
6030: 7d 20 2d 72 65 73 75 6c 74 20 7b 75 6e 6b 6e 6f } -result {unkno
6040: 77 6e 20 6f 72 20 61 6d 62 69 67 75 6f 75 73 20 wn or ambiguous
6050: 73 75 62 63 6f 6d 6d 61 6e 64 20 22 67 6f 72 70 subcommand "gorp
6060: 22 3a 20 6d 75 73 74 20 62 65 20 61 72 67 73 2c ": must be args,
6070: 20 62 6f 64 79 2c 20 63 6c 61 73 73 2c 20 63 6d body, class, cm
6080: 64 63 6f 75 6e 74 2c 20 63 6f 6d 6d 61 6e 64 73 dcount, commands
6090: 2c 20 63 6f 6d 70 6c 65 74 65 2c 20 63 6f 72 6f , complete, coro
60a0: 75 74 69 6e 65 2c 20 64 65 66 61 75 6c 74 2c 20 utine, default,
60b0: 65 72 72 6f 72 73 74 61 63 6b 2c 20 65 78 69 73 errorstack, exis
60c0: 74 73 2c 20 66 72 61 6d 65 2c 20 66 75 6e 63 74 ts, frame, funct
60d0: 69 6f 6e 73 2c 20 67 6c 6f 62 61 6c 73 2c 20 68 ions, globals, h
60e0: 6f 73 74 6e 61 6d 65 2c 20 6c 65 76 65 6c 2c 20 ostname, level,
60f0: 6c 69 62 72 61 72 79 2c 20 6c 6f 61 64 65 64 2c library, loaded,
6100: 20 6c 6f 63 61 6c 73 2c 20 6e 61 6d 65 6f 66 65 locals, nameofe
6110: 78 65 63 75 74 61 62 6c 65 2c 20 6f 62 6a 65 63 xecutable, objec
6120: 74 2c 20 70 61 74 63 68 6c 65 76 65 6c 2c 20 70 t, patchlevel, p
6130: 72 6f 63 73 2c 20 73 63 72 69 70 74 2c 20 73 68 rocs, script, sh
6140: 61 72 65 64 6c 69 62 65 78 74 65 6e 73 69 6f 6e aredlibextension
6150: 2c 20 74 63 6c 76 65 72 73 69 6f 6e 2c 20 6f 72 , tclversion, or
6160: 20 76 61 72 73 7d 0a 20 74 65 73 74 20 69 6e 66 vars}. test inf
6170: 6f 2d 32 31 2e 33 20 7b 6d 69 73 63 65 6c 6c 61 o-21.3 {miscella
6180: 6e 65 6f 75 73 20 65 72 72 6f 72 20 63 6f 6e 64 neous error cond
6190: 69 74 69 6f 6e 73 7d 20 2d 72 65 74 75 72 6e 43 itions} -returnC
61a0: 6f 64 65 73 20 65 72 72 6f 72 20 2d 62 6f 64 79 odes error -body
61b0: 20 7b 0a 20 20 20 20 20 69 6e 66 6f 20 63 0a 2d {. info c.-
61c0: 7d 20 2d 72 65 73 75 6c 74 20 7b 75 6e 6b 6e 6f } -result {unkno
61d0: 77 6e 20 6f 72 20 61 6d 62 69 67 75 6f 75 73 20 wn or ambiguous
61e0: 73 75 62 63 6f 6d 6d 61 6e 64 20 22 63 22 3a 20 subcommand "c":
61f0: 6d 75 73 74 20 62 65 20 61 72 67 73 2c 20 62 6f must be args, bo
6200: 64 79 2c 20 63 6c 61 73 73 2c 20 63 6d 64 63 6f dy, class, cmdco
6210: 75 6e 74 2c 20 63 6f 6d 6d 61 6e 64 73 2c 20 63 unt, commands, c
6220: 6f 6d 70 6c 65 74 65 2c 20 63 6f 72 6f 75 74 69 omplete, corouti
6230: 6e 65 2c 20 64 65 66 61 75 6c 74 2c 20 65 78 69 ne, default, exi
6240: 73 74 73 2c 20 66 72 61 6d 65 2c 20 66 75 6e 63 sts, frame, func
6250: 74 69 6f 6e 73 2c 20 67 6c 6f 62 61 6c 73 2c 20 tions, globals,
6260: 68 6f 73 74 6e 61 6d 65 2c 20 6c 65 76 65 6c 2c hostname, level,
6270: 20 6c 69 62 72 61 72 79 2c 20 6c 6f 61 64 65 64 library, loaded
6280: 2c 20 6c 6f 63 61 6c 73 2c 20 6e 61 6d 65 6f 66 , locals, nameof
6290: 65 78 65 63 75 74 61 62 6c 65 2c 20 6f 62 6a 65 executable, obje
62a0: 63 74 2c 20 70 61 74 63 68 6c 65 76 65 6c 2c 20 ct, patchlevel,
62b0: 70 72 6f 63 73 2c 20 73 63 72 69 70 74 2c 20 73 procs, script, s
62c0: 68 61 72 65 64 6c 69 62 65 78 74 65 6e 73 69 6f haredlibextensio
62d0: 6e 2c 20 74 63 6c 76 65 72 73 69 6f 6e 2c 20 6f n, tclversion, o
62e0: 72 20 76 61 72 73 7d 0a 2b 7d 20 2d 72 65 73 75 r vars}.+} -resu
62f0: 6c 74 20 7b 75 6e 6b 6e 6f 77 6e 20 6f 72 20 61 lt {unknown or a
6300: 6d 62 69 67 75 6f 75 73 20 73 75 62 63 6f 6d 6d mbiguous subcomm
6310: 61 6e 64 20 22 63 22 3a 20 6d 75 73 74 20 62 65 and "c": must be
6320: 20 61 72 67 73 2c 20 62 6f 64 79 2c 20 63 6c 61 args, body, cla
6330: 73 73 2c 20 63 6d 64 63 6f 75 6e 74 2c 20 63 6f ss, cmdcount, co
6340: 6d 6d 61 6e 64 73 2c 20 63 6f 6d 70 6c 65 74 65 mmands, complete
6350: 2c 20 63 6f 72 6f 75 74 69 6e 65 2c 20 64 65 66 , coroutine, def
6360: 61 75 6c 74 2c 20 65 72 72 6f 72 73 74 61 63 6b ault, errorstack
6370: 2c 20 65 78 69 73 74 73 2c 20 66 72 61 6d 65 2c , exists, frame,
6380: 20 66 75 6e 63 74 69 6f 6e 73 2c 20 67 6c 6f 62 functions, glob
6390: 61 6c 73 2c 20 68 6f 73 74 6e 61 6d 65 2c 20 6c als, hostname, l
63a0: 65 76 65 6c 2c 20 6c 69 62 72 61 72 79 2c 20 6c evel, library, l
63b0: 6f 61 64 65 64 2c 20 6c 6f 63 61 6c 73 2c 20 6e oaded, locals, n
63c0: 61 6d 65 6f 66 65 78 65 63 75 74 61 62 6c 65 2c ameofexecutable,
63d0: 20 6f 62 6a 65 63 74 2c 20 70 61 74 63 68 6c 65 object, patchle
63e0: 76 65 6c 2c 20 70 72 6f 63 73 2c 20 73 63 72 69 vel, procs, scri
63f0: 70 74 2c 20 73 68 61 72 65 64 6c 69 62 65 78 74 pt, sharedlibext
6400: 65 6e 73 69 6f 6e 2c 20 74 63 6c 76 65 72 73 69 ension, tclversi
6410: 6f 6e 2c 20 6f 72 20 76 61 72 73 7d 0a 20 74 65 on, or vars}. te
6420: 73 74 20 69 6e 66 6f 2d 32 31 2e 34 20 7b 6d 69 st info-21.4 {mi
6430: 73 63 65 6c 6c 61 6e 65 6f 75 73 20 65 72 72 6f scellaneous erro
6440: 72 20 63 6f 6e 64 69 74 69 6f 6e 73 7d 20 2d 72 r conditions} -r
6450: 65 74 75 72 6e 43 6f 64 65 73 20 65 72 72 6f 72 eturnCodes error
6460: 20 2d 62 6f 64 79 20 7b 0a 20 20 20 20 20 69 6e -body {. in
6470: 66 6f 20 6c 0a 2d 7d 20 2d 72 65 73 75 6c 74 20 fo l.-} -result
6480: 7b 75 6e 6b 6e 6f 77 6e 20 6f 72 20 61 6d 62 69 {unknown or ambi
6490: 67 75 6f 75 73 20 73 75 62 63 6f 6d 6d 61 6e 64 guous subcommand
64a0: 20 22 6c 22 3a 20 6d 75 73 74 20 62 65 20 61 72 "l": must be ar
64b0: 67 73 2c 20 62 6f 64 79 2c 20 63 6c 61 73 73 2c gs, body, class,
64c0: 20 63 6d 64 63 6f 75 6e 74 2c 20 63 6f 6d 6d 61 cmdcount, comma
64d0: 6e 64 73 2c 20 63 6f 6d 70 6c 65 74 65 2c 20 63 nds, complete, c
64e0: 6f 72 6f 75 74 69 6e 65 2c 20 64 65 66 61 75 6c oroutine, defaul
64f0: 74 2c 20 65 78 69 73 74 73 2c 20 66 72 61 6d 65 t, exists, frame
6500: 2c 20 66 75 6e 63 74 69 6f 6e 73 2c 20 67 6c 6f , functions, glo
6510: 62 61 6c 73 2c 20 68 6f 73 74 6e 61 6d 65 2c 20 bals, hostname,
6520: 6c 65 76 65 6c 2c 20 6c 69 62 72 61 72 79 2c 20 level, library,
6530: 6c 6f 61 64 65 64 2c 20 6c 6f 63 61 6c 73 2c 20 loaded, locals,
6540: 6e 61 6d 65 6f 66 65 78 65 63 75 74 61 62 6c 65 nameofexecutable
6550: 2c 20 6f 62 6a 65 63 74 2c 20 70 61 74 63 68 6c , object, patchl
6560: 65 76 65 6c 2c 20 70 72 6f 63 73 2c 20 73 63 72 evel, procs, scr
6570: 69 70 74 2c 20 73 68 61 72 65 64 6c 69 62 65 78 ipt, sharedlibex
6580: 74 65 6e 73 69 6f 6e 2c 20 74 63 6c 76 65 72 73 tension, tclvers
6590: 69 6f 6e 2c 20 6f 72 20 76 61 72 73 7d 0a 2b 7d ion, or vars}.+}
65a0: 20 2d 72 65 73 75 6c 74 20 7b 75 6e 6b 6e 6f 77 -result {unknow
65b0: 6e 20 6f 72 20 61 6d 62 69 67 75 6f 75 73 20 73 n or ambiguous s
65c0: 75 62 63 6f 6d 6d 61 6e 64 20 22 6c 22 3a 20 6d ubcommand "l": m
65d0: 75 73 74 20 62 65 20 61 72 67 73 2c 20 62 6f 64 ust be args, bod
65e0: 79 2c 20 63 6c 61 73 73 2c 20 63 6d 64 63 6f 75 y, class, cmdcou
65f0: 6e 74 2c 20 63 6f 6d 6d 61 6e 64 73 2c 20 63 6f nt, commands, co
6600: 6d 70 6c 65 74 65 2c 20 63 6f 72 6f 75 74 69 6e mplete, coroutin
6610: 65 2c 20 64 65 66 61 75 6c 74 2c 20 65 72 72 6f e, default, erro
6620: 72 73 74 61 63 6b 2c 20 65 78 69 73 74 73 2c 20 rstack, exists,
6630: 66 72 61 6d 65 2c 20 66 75 6e 63 74 69 6f 6e 73 frame, functions
6640: 2c 20 67 6c 6f 62 61 6c 73 2c 20 68 6f 73 74 6e , globals, hostn
6650: 61 6d 65 2c 20 6c 65 76 65 6c 2c 20 6c 69 62 72 ame, level, libr
6660: 61 72 79 2c 20 6c 6f 61 64 65 64 2c 20 6c 6f 63 ary, loaded, loc
6670: 61 6c 73 2c 20 6e 61 6d 65 6f 66 65 78 65 63 75 als, nameofexecu
6680: 74 61 62 6c 65 2c 20 6f 62 6a 65 63 74 2c 20 70 table, object, p
6690: 61 74 63 68 6c 65 76 65 6c 2c 20 70 72 6f 63 73 atchlevel, procs
66a0: 2c 20 73 63 72 69 70 74 2c 20 73 68 61 72 65 64 , script, shared
66b0: 6c 69 62 65 78 74 65 6e 73 69 6f 6e 2c 20 74 63 libextension, tc
66c0: 6c 76 65 72 73 69 6f 6e 2c 20 6f 72 20 76 61 72 lversion, or var
66d0: 73 7d 0a 20 74 65 73 74 20 69 6e 66 6f 2d 32 31 s}. test info-21
66e0: 2e 35 20 7b 6d 69 73 63 65 6c 6c 61 6e 65 6f 75 .5 {miscellaneou
66f0: 73 20 65 72 72 6f 72 20 63 6f 6e 64 69 74 69 6f s error conditio
6700: 6e 73 7d 20 2d 72 65 74 75 72 6e 43 6f 64 65 73 ns} -returnCodes
6710: 20 65 72 72 6f 72 20 2d 62 6f 64 79 20 7b 0a 20 error -body {.
6720: 20 20 20 20 69 6e 66 6f 20 73 0a 2d 7d 20 2d 72 info s.-} -r
6730: 65 73 75 6c 74 20 7b 75 6e 6b 6e 6f 77 6e 20 6f esult {unknown o
6740: 72 20 61 6d 62 69 67 75 6f 75 73 20 73 75 62 63 r ambiguous subc
6750: 6f 6d 6d 61 6e 64 20 22 73 22 3a 20 6d 75 73 74 ommand "s": must
6760: 20 62 65 20 61 72 67 73 2c 20 62 6f 64 79 2c 20 be args, body,
6770: 63 6c 61 73 73 2c 20 63 6d 64 63 6f 75 6e 74 2c class, cmdcount,
6780: 20 63 6f 6d 6d 61 6e 64 73 2c 20 63 6f 6d 70 6c commands, compl
6790: 65 74 65 2c 20 63 6f 72 6f 75 74 69 6e 65 2c 20 ete, coroutine,
67a0: 64 65 66 61 75 6c 74 2c 20 65 78 69 73 74 73 2c default, exists,
67b0: 20 66 72 61 6d 65 2c 20 66 75 6e 63 74 69 6f 6e frame, function
67c0: 73 2c 20 67 6c 6f 62 61 6c 73 2c 20 68 6f 73 74 s, globals, host
67d0: 6e 61 6d 65 2c 20 6c 65 76 65 6c 2c 20 6c 69 62 name, level, lib
67e0: 72 61 72 79 2c 20 6c 6f 61 64 65 64 2c 20 6c 6f rary, loaded, lo
67f0: 63 61 6c 73 2c 20 6e 61 6d 65 6f 66 65 78 65 63 cals, nameofexec
6800: 75 74 61 62 6c 65 2c 20 6f 62 6a 65 63 74 2c 20 utable, object,
6810: 70 61 74 63 68 6c 65 76 65 6c 2c 20 70 72 6f 63 patchlevel, proc
6820: 73 2c 20 73 63 72 69 70 74 2c 20 73 68 61 72 65 s, script, share
6830: 64 6c 69 62 65 78 74 65 6e 73 69 6f 6e 2c 20 74 dlibextension, t
6840: 63 6c 76 65 72 73 69 6f 6e 2c 20 6f 72 20 76 61 clversion, or va
6850: 72 73 7d 0a 2b 7d 20 2d 72 65 73 75 6c 74 20 7b rs}.+} -result {
6860: 75 6e 6b 6e 6f 77 6e 20 6f 72 20 61 6d 62 69 67 unknown or ambig
6870: 75 6f 75 73 20 73 75 62 63 6f 6d 6d 61 6e 64 20 uous subcommand
6880: 22 73 22 3a 20 6d 75 73 74 20 62 65 20 61 72 67 "s": must be arg
6890: 73 2c 20 62 6f 64 79 2c 20 63 6c 61 73 73 2c 20 s, body, class,
68a0: 63 6d 64 63 6f 75 6e 74 2c 20 63 6f 6d 6d 61 6e cmdcount, comman
68b0: 64 73 2c 20 63 6f 6d 70 6c 65 74 65 2c 20 63 6f ds, complete, co
68c0: 72 6f 75 74 69 6e 65 2c 20 64 65 66 61 75 6c 74 routine, default
68d0: 2c 20 65 72 72 6f 72 73 74 61 63 6b 2c 20 65 78 , errorstack, ex
68e0: 69 73 74 73 2c 20 66 72 61 6d 65 2c 20 66 75 6e ists, frame, fun
68f0: 63 74 69 6f 6e 73 2c 20 67 6c 6f 62 61 6c 73 2c ctions, globals,
6900: 20 68 6f 73 74 6e 61 6d 65 2c 20 6c 65 76 65 6c hostname, level
6910: 2c 20 6c 69 62 72 61 72 79 2c 20 6c 6f 61 64 65 , library, loade
6920: 64 2c 20 6c 6f 63 61 6c 73 2c 20 6e 61 6d 65 6f d, locals, nameo
6930: 66 65 78 65 63 75 74 61 62 6c 65 2c 20 6f 62 6a fexecutable, obj
6940: 65 63 74 2c 20 70 61 74 63 68 6c 65 76 65 6c 2c ect, patchlevel,
6950: 20 70 72 6f 63 73 2c 20 73 63 72 69 70 74 2c 20 procs, script,
6960: 73 68 61 72 65 64 6c 69 62 65 78 74 65 6e 73 69 sharedlibextensi
6970: 6f 6e 2c 20 74 63 6c 76 65 72 73 69 6f 6e 2c 20 on, tclversion,
6980: 6f 72 20 76 61 72 73 7d 0a 20 0a 20 23 23 0a 20 or vars}. . ##.
6990: 23 20 23 23 23 20 23 23 23 20 23 23 23 20 23 23 # ### ### ### ##
69a0: 23 23 23 23 23 23 23 20 23 23 23 23 23 23 23 23 ####### ########
69b0: 23 20 23 23 23 23 23 23 23 23 23 0a 49 6e 64 65 # #########.Inde
69c0: 78 3a 20 74 65 73 74 73 2f 69 6e 69 74 2e 74 65 x: tests/init.te
69d0: 73 74 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d st.=============
69e0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
69f0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
6a00: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
6a10: 3d 3d 3d 3d 3d 3d 0a 52 43 53 20 66 69 6c 65 3a ======.RCS file:
6a20: 20 2f 63 76 73 72 6f 6f 74 2f 74 63 6c 2f 74 63 /cvsroot/tcl/tc
6a30: 6c 2f 74 65 73 74 73 2f 69 6e 69 74 2e 74 65 73 l/tests/init.tes
6a40: 74 2c 76 0a 72 65 74 72 69 65 76 69 6e 67 20 72 t,v.retrieving r
6a50: 65 76 69 73 69 6f 6e 20 31 2e 32 31 0a 64 69 66 evision 1.21.dif
6a60: 66 20 2d 75 20 2d 70 20 2d 75 20 2d 70 20 2d 72 f -u -p -u -p -r
6a70: 31 2e 32 31 20 69 6e 69 74 2e 74 65 73 74 0a 2d 1.21 init.test.-
6a80: 2d 2d 20 74 65 73 74 73 2f 69 6e 69 74 2e 74 65 -- tests/init.te
6a90: 73 74 09 31 36 20 4e 6f 76 20 32 30 30 39 20 31 st.16 Nov 2009 1
6aa0: 38 3a 30 30 3a 31 31 20 2d 30 30 30 30 09 31 2e 8:00:11 -0000.1.
6ab0: 32 31 0a 2b 2b 2b 20 74 65 73 74 73 2f 69 6e 69 21.+++ tests/ini
6ac0: 74 2e 74 65 73 74 09 33 31 20 4d 61 72 20 32 30 t.test.31 Mar 20
6ad0: 31 30 20 31 34 3a 31 34 3a 34 31 20 2d 30 30 30 10 14:14:41 -000
6ae0: 30 0a 40 40 20 2d 31 38 31 2c 37 20 2b 31 38 31 0.@@ -181,7 +181
6af0: 2c 37 20 40 40 20 74 65 73 74 20 69 6e 69 74 2d ,7 @@ test init-
6b00: 35 2e 30 20 7b 72 65 74 75 72 6e 20 6f 70 74 69 5.0 {return opti
6b10: 6f 6e 73 20 70 61 73 73 65 64 20 74 68 72 0a 20 ons passed thr.
6b20: 20 20 20 20 6c 69 73 74 20 24 63 6f 64 65 20 24 list $code $
6b30: 66 6f 6f 20 24 62 61 72 20 24 63 6f 64 65 32 20 foo $bar $code2
6b40: 24 66 6f 6f 32 20 24 62 61 72 32 0a 20 7d 20 2d $foo2 $bar2. } -
6b50: 63 6c 65 61 6e 75 70 20 7b 0a 20 20 20 20 20 75 cleanup {. u
6b60: 6e 73 65 74 20 3a 3a 61 75 74 6f 5f 69 6e 64 65 nset ::auto_inde
6b70: 78 28 3a 3a 78 78 78 29 0a 2d 7d 20 2d 72 65 73 x(::xxx).-} -res
6b80: 75 6c 74 20 7b 32 20 78 78 78 20 7b 2d 65 72 72 ult {2 xxx {-err
6b90: 6f 72 63 6f 64 65 20 4e 4f 4e 45 20 2d 63 6f 64 orcode NONE -cod
6ba0: 65 20 31 20 2d 6c 65 76 65 6c 20 31 7d 20 32 20 e 1 -level 1} 2
6bb0: 78 78 78 20 7b 2d 63 6f 64 65 20 31 20 2d 6c 65 xxx {-code 1 -le
6bc0: 76 65 6c 20 31 20 2d 65 72 72 6f 72 63 6f 64 65 vel 1 -errorcode
6bd0: 20 4e 4f 4e 45 7d 7d 0a 2b 7d 20 2d 6d 61 74 63 NONE}}.+} -matc
6be0: 68 20 67 6c 6f 62 20 2d 72 65 73 75 6c 74 20 7b h glob -result {
6bf0: 32 20 78 78 78 20 7b 2d 65 72 72 6f 72 63 6f 64 2 xxx {-errorcod
6c00: 65 20 4e 4f 4e 45 20 2d 63 6f 64 65 20 31 20 2d e NONE -code 1 -
6c10: 6c 65 76 65 6c 20 31 7d 20 32 20 78 78 78 20 7b level 1} 2 xxx {
6c20: 2d 63 6f 64 65 20 31 20 2d 6c 65 76 65 6c 20 31 -code 1 -level 1
6c30: 20 2d 65 72 72 6f 72 63 6f 64 65 20 4e 4f 4e 45 -errorcode NONE
6c40: 7d 7d 0a 20 0c 0a 20 63 6c 65 61 6e 75 70 54 65 }}. .. cleanupTe
6c50: 73 74 73 0a 20 7d 09 3b 23 20 20 45 6e 64 20 6f sts. }.;# End o
6c60: 66 20 5b 69 6e 74 65 72 70 20 65 76 61 6c 20 24 f [interp eval $
6c70: 74 65 73 74 49 6e 74 65 72 70 5d 0a 49 6e 64 65 testInterp].Inde
6c80: 78 3a 20 74 65 73 74 73 2f 72 65 73 75 6c 74 2e x: tests/result.
6c90: 74 65 73 74 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d test.===========
6ca0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
6cb0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
6cc0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
6cd0: 3d 3d 3d 3d 3d 3d 3d 3d 0a 52 43 53 20 66 69 6c ========.RCS fil
6ce0: 65 3a 20 2f 63 76 73 72 6f 6f 74 2f 74 63 6c 2f e: /cvsroot/tcl/
6cf0: 74 63 6c 2f 74 65 73 74 73 2f 72 65 73 75 6c 74 tcl/tests/result
6d00: 2e 74 65 73 74 2c 76 0a 72 65 74 72 69 65 76 69 .test,v.retrievi
6d10: 6e 67 20 72 65 76 69 73 69 6f 6e 20 31 2e 31 36 ng revision 1.16
6d20: 0a 64 69 66 66 20 2d 75 20 2d 70 20 2d 75 20 2d .diff -u -p -u -
6d30: 70 20 2d 72 31 2e 31 36 20 72 65 73 75 6c 74 2e p -r1.16 result.
6d40: 74 65 73 74 0a 2d 2d 2d 20 74 65 73 74 73 2f 72 test.--- tests/r
6d50: 65 73 75 6c 74 2e 74 65 73 74 09 32 34 20 4d 61 esult.test.24 Ma
6d60: 72 20 32 30 31 30 20 31 35 3a 33 33 3a 31 34 20 r 2010 15:33:14
6d70: 2d 30 30 30 30 09 31 2e 31 36 0a 2b 2b 2b 20 74 -0000.1.16.+++ t
6d80: 65 73 74 73 2f 72 65 73 75 6c 74 2e 74 65 73 74 ests/result.test
6d90: 09 33 31 20 4d 61 72 20 32 30 31 30 20 31 34 3a .31 Mar 2010 14:
6da0: 31 34 3a 34 31 20 2d 30 30 30 30 0a 40 40 20 2d 14:41 -0000.@@ -
6db0: 31 33 35 2c 36 20 2b 31 33 35 2c 31 34 20 40 40 135,6 +135,14 @@
6dc0: 20 74 65 73 74 20 72 65 73 75 6c 74 2d 36 2e 33 test result-6.3
6dd0: 20 7b 42 75 67 20 32 33 38 33 30 30 35 7d 20 7b {Bug 2383005} {
6de0: 0a 20 20 20 20 20 20 63 61 74 63 68 20 7b 72 65 . catch {re
6df0: 74 75 72 6e 20 2d 63 6f 64 65 20 65 72 72 6f 72 turn -code error
6e00: 20 2d 65 72 72 6f 72 63 6f 64 65 20 7b 7b 7d 61 -errorcode {{}a
6e10: 7d 20 65 65 6b 7d 20 6d 0a 20 20 20 20 20 20 73 } eek} m. s
6e20: 65 74 20 6d 0a 20 7d 20 7b 62 61 64 20 2d 65 72 et m. } {bad -er
6e30: 72 6f 72 63 6f 64 65 20 76 61 6c 75 65 3a 20 65 rorcode value: e
6e40: 78 70 65 63 74 65 64 20 61 20 6c 69 73 74 20 62 xpected a list b
6e50: 75 74 20 67 6f 74 20 22 7b 7d 61 22 7d 0a 2b 74 ut got "{}a"}.+t
6e60: 65 73 74 20 72 65 73 75 6c 74 2d 36 2e 34 20 7b est result-6.4 {
6e70: 6e 6f 6e 2d 6c 69 73 74 20 2d 65 72 72 6f 72 73 non-list -errors
6e80: 74 61 63 6b 7d 20 7b 0a 2b 20 20 20 20 20 63 61 tack} {.+ ca
6e90: 74 63 68 20 7b 72 65 74 75 72 6e 20 2d 63 6f 64 tch {return -cod
6ea0: 65 20 65 72 72 6f 72 20 2d 65 72 72 6f 72 73 74 e error -errorst
6eb0: 61 63 6b 20 7b 7b 7d 61 7d 20 65 65 6b 7d 20 6d ack {{}a} eek} m
6ec0: 20 6f 0a 2b 20 20 20 20 20 6c 69 73 74 20 24 6d o.+ list $m
6ed0: 20 5b 64 69 63 74 20 67 65 74 20 24 6f 20 2d 65 [dict get $o -e
6ee0: 72 72 6f 72 63 6f 64 65 5d 20 5b 64 69 63 74 20 rrorcode] [dict
6ef0: 67 65 74 20 24 6f 20 2d 65 72 72 6f 72 73 74 61 get $o -errorsta
6f00: 63 6b 5d 0a 2b 7d 20 7b 7b 62 61 64 20 2d 65 72 ck].+} {{bad -er
6f10: 72 6f 72 73 74 61 63 6b 20 76 61 6c 75 65 3a 20 rorstack value:
6f20: 65 78 70 65 63 74 65 64 20 61 20 6c 69 73 74 20 expected a list
6f30: 62 75 74 20 67 6f 74 20 22 7b 7d 61 22 7d 20 7b but got "{}a"} {
6f40: 54 43 4c 20 52 45 53 55 4c 54 20 4e 4f 4e 4c 49 TCL RESULT NONLI
6f50: 53 54 5f 45 52 52 4f 52 53 54 41 43 4b 7d 20 7b ST_ERRORSTACK} {
6f60: 55 50 20 31 7d 7d 0a 2b 74 65 73 74 20 72 65 73 UP 1}}.+test res
6f70: 75 6c 74 2d 36 2e 35 20 7b 6f 64 64 2d 73 69 7a ult-6.5 {odd-siz
6f80: 65 64 2d 6c 69 73 74 20 2d 65 72 72 6f 72 73 74 ed-list -errorst
6f90: 61 63 6b 7d 20 7b 0a 2b 20 20 20 20 20 63 61 74 ack} {.+ cat
6fa0: 63 68 20 7b 72 65 74 75 72 6e 20 2d 63 6f 64 65 ch {return -code
6fb0: 20 65 72 72 6f 72 20 2d 65 72 72 6f 72 73 74 61 error -errorsta
6fc0: 63 6b 20 61 20 65 65 6b 7d 20 6d 20 6f 0a 2b 20 ck a eek} m o.+
6fd0: 20 20 20 20 6c 69 73 74 20 24 6d 20 5b 64 69 63 list $m [dic
6fe0: 74 20 67 65 74 20 24 6f 20 2d 65 72 72 6f 72 63 t get $o -errorc
6ff0: 6f 64 65 5d 20 5b 64 69 63 74 20 67 65 74 20 24 ode] [dict get $
7000: 6f 20 2d 65 72 72 6f 72 73 74 61 63 6b 5d 0a 2b o -errorstack].+
7010: 7d 20 7b 7b 66 6f 72 62 69 64 64 65 6e 20 6f 64 } {{forbidden od
7020: 64 2d 73 69 7a 65 64 20 6c 69 73 74 20 66 6f 72 d-sized list for
7030: 20 2d 65 72 72 6f 72 73 74 61 63 6b 3a 20 22 61 -errorstack: "a
7040: 22 7d 20 7b 54 43 4c 20 52 45 53 55 4c 54 20 4f "} {TCL RESULT O
7050: 44 44 53 49 5a 45 44 4c 49 53 54 5f 45 52 52 4f DDSIZEDLIST_ERRO
7060: 52 53 54 41 43 4b 7d 20 7b 55 50 20 31 7d 7d 0a RSTACK} {UP 1}}.
7070: 20 23 20 63 6c 65 61 6e 75 70 0a 20 63 6c 65 61 # cleanup. clea
7080: 6e 75 70 54 65 73 74 73 0a 20 72 65 74 75 72 6e nupTests. return
7090: 0a .