Attachment "errorstack3.patch" to
ticket [2868499fff]
added by
ferrieux
2009-10-23 07:56:29.
0000: 49 6e 64 65 78 3a 20 67 65 6e 65 72 69 63 2f 74 Index: generic/t
0010: 63 6c 42 61 73 69 63 2e 63 0a 3d 3d 3d 3d 3d 3d clBasic.c.======
0020: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0030: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0040: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0050: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 52 43 =============.RC
0060: 53 20 66 69 6c 65 3a 20 2f 63 76 73 72 6f 6f 74 S file: /cvsroot
0070: 2f 74 63 6c 2f 74 63 6c 2f 67 65 6e 65 72 69 63 /tcl/tcl/generic
0080: 2f 74 63 6c 42 61 73 69 63 2e 63 2c 76 0a 72 65 /tclBasic.c,v.re
0090: 74 72 69 65 76 69 6e 67 20 72 65 76 69 73 69 6f trieving revisio
00a0: 6e 20 31 2e 34 30 34 0a 64 69 66 66 20 2d 75 20 n 1.404.diff -u
00b0: 2d 72 31 2e 34 30 34 20 74 63 6c 42 61 73 69 63 -r1.404 tclBasic
00c0: 2e 63 0a 2d 2d 2d 20 67 65 6e 65 72 69 63 2f 74 .c.--- generic/t
00d0: 63 6c 42 61 73 69 63 2e 63 09 31 31 20 53 65 70 clBasic.c.11 Sep
00e0: 20 32 30 30 39 20 32 30 3a 31 33 3a 32 37 20 2d 2009 20:13:27 -
00f0: 30 30 30 30 09 31 2e 34 30 34 0a 2b 2b 2b 20 67 0000.1.404.+++ g
0100: 65 6e 65 72 69 63 2f 74 63 6c 42 61 73 69 63 2e eneric/tclBasic.
0110: 63 09 32 33 20 4f 63 74 20 32 30 30 39 20 30 30 c.23 Oct 2009 00
0120: 3a 35 31 3a 31 38 20 2d 30 30 30 30 0a 40 40 20 :51:18 -0000.@@
0130: 2d 35 33 30 2c 36 20 2b 35 33 30 2c 31 30 20 40 -530,6 +530,10 @
0140: 40 0a 20 20 20 20 20 69 50 74 72 2d 3e 65 72 72 @. iPtr->err
0150: 6f 72 49 6e 66 6f 20 3d 20 4e 55 4c 4c 3b 0a 20 orInfo = NULL;.
0160: 20 20 20 20 54 63 6c 4e 65 77 4c 69 74 65 72 61 TclNewLitera
0170: 6c 53 74 72 69 6e 67 4f 62 6a 28 69 50 74 72 2d lStringObj(iPtr-
0180: 3e 65 69 56 61 72 2c 20 22 3a 3a 65 72 72 6f 72 >eiVar, "::error
0190: 49 6e 66 6f 22 29 3b 0a 20 20 20 20 20 54 63 6c Info");. Tcl
01a0: 5f 49 6e 63 72 52 65 66 43 6f 75 6e 74 28 69 50 _IncrRefCount(iP
01b0: 74 72 2d 3e 65 69 56 61 72 29 3b 0a 2b 20 20 20 tr->eiVar);.+
01c0: 20 69 50 74 72 2d 3e 65 72 72 6f 72 53 74 61 63 iPtr->errorStac
01d0: 6b 20 3d 20 54 63 6c 5f 4e 65 77 4c 69 73 74 4f k = Tcl_NewListO
01e0: 62 6a 28 30 2c 20 4e 55 4c 4c 29 3b 0a 2b 20 20 bj(0, NULL);.+
01f0: 20 20 54 63 6c 5f 49 6e 63 72 52 65 66 43 6f 75 Tcl_IncrRefCou
0200: 6e 74 28 69 50 74 72 2d 3e 65 72 72 6f 72 53 74 nt(iPtr->errorSt
0210: 61 63 6b 29 3b 0a 2b 20 20 20 20 69 50 74 72 2d ack);.+ iPtr-
0220: 3e 75 73 65 45 72 72 6f 72 53 74 61 63 6b 3d 30 >useErrorStack=0
0230: 3b 0a 2b 20 20 20 20 69 50 74 72 2d 3e 72 65 73 ;.+ iPtr->res
0240: 65 74 45 72 72 6f 72 53 74 61 63 6b 20 3d 20 31 etErrorStack = 1
0250: 3b 0a 20 20 20 20 20 69 50 74 72 2d 3e 65 72 72 ;. iPtr->err
0260: 6f 72 43 6f 64 65 20 3d 20 4e 55 4c 4c 3b 0a 20 orCode = NULL;.
0270: 20 20 20 20 54 63 6c 4e 65 77 4c 69 74 65 72 61 TclNewLitera
0280: 6c 53 74 72 69 6e 67 4f 62 6a 28 69 50 74 72 2d lStringObj(iPtr-
0290: 3e 65 63 56 61 72 2c 20 22 3a 3a 65 72 72 6f 72 >ecVar, "::error
02a0: 43 6f 64 65 22 29 3b 0a 20 20 20 20 20 54 63 6c Code");. Tcl
02b0: 5f 49 6e 63 72 52 65 66 43 6f 75 6e 74 28 69 50 _IncrRefCount(iP
02c0: 74 72 2d 3e 65 63 56 61 72 29 3b 0a 40 40 20 2d tr->ecVar);.@@ -
02d0: 37 39 32 2c 36 20 2b 37 39 36 2c 31 34 20 40 40 792,6 +796,14 @@
02e0: 0a 20 09 20 20 20 20 54 63 6c 5f 52 65 70 72 65 . . Tcl_Repre
02f0: 73 65 6e 74 61 74 69 6f 6e 43 6d 64 2c 20 4e 55 sentationCmd, NU
0300: 4c 4c 2c 20 4e 55 4c 4c 29 3b 0a 20 0a 20 20 20 LL, NULL);. .
0310: 20 20 2f 2a 0a 2b 20 20 20 20 20 2a 20 54 49 50 /*.+ * TIP
0320: 20 33 34 38 0a 2b 20 20 20 20 20 2a 2f 0a 2b 0a 348.+ */.+.
0330: 2b 20 20 20 20 54 63 6c 5f 4c 69 6e 6b 56 61 72 + Tcl_LinkVar
0340: 28 69 6e 74 65 72 70 2c 20 22 3a 3a 74 63 6c 3a (interp, "::tcl:
0350: 3a 75 73 65 45 72 72 6f 72 53 74 61 63 6b 22 2c :useErrorStack",
0360: 0a 2b 09 09 28 63 68 61 72 20 2a 29 20 26 69 50 .+..(char *) &iP
0370: 74 72 2d 3e 75 73 65 45 72 72 6f 72 53 74 61 63 tr->useErrorStac
0380: 6b 2c 0a 2b 09 09 54 43 4c 5f 4c 49 4e 4b 5f 49 k,.+..TCL_LINK_I
0390: 4e 54 29 3b 0a 2b 0a 2b 20 20 20 20 2f 2a 0a 20 NT);.+.+ /*.
03a0: 20 20 20 20 20 2a 20 43 72 65 61 74 65 20 74 68 * Create th
03b0: 65 20 27 74 61 69 6c 63 61 6c 6c 27 20 63 6f 6d e 'tailcall' com
03c0: 6d 61 6e 64 0a 20 20 20 20 20 20 2a 2f 0a 20 0a mand. */. .
03d0: 40 40 20 2d 31 34 37 30 2c 36 20 2b 31 34 38 32 @@ -1470,6 +1482
03e0: 2c 37 20 40 40 0a 20 09 54 63 6c 5f 44 65 63 72 ,7 @@. .Tcl_Decr
03f0: 52 65 66 43 6f 75 6e 74 28 69 50 74 72 2d 3e 65 RefCount(iPtr->e
0400: 72 72 6f 72 49 6e 66 6f 29 3b 0a 20 09 69 50 74 rrorInfo);. .iPt
0410: 72 2d 3e 65 72 72 6f 72 49 6e 66 6f 20 3d 20 4e r->errorInfo = N
0420: 55 4c 4c 3b 0a 20 20 20 20 20 7d 0a 2b 20 20 20 ULL;. }.+
0430: 20 54 63 6c 5f 44 65 63 72 52 65 66 43 6f 75 6e Tcl_DecrRefCoun
0440: 74 28 69 50 74 72 2d 3e 65 72 72 6f 72 53 74 61 t(iPtr->errorSta
0450: 63 6b 29 3b 0a 20 20 20 20 20 69 66 20 28 69 50 ck);. if (iP
0460: 74 72 2d 3e 72 65 74 75 72 6e 4f 70 74 73 29 20 tr->returnOpts)
0470: 7b 0a 20 09 54 63 6c 5f 44 65 63 72 52 65 66 43 {. .Tcl_DecrRefC
0480: 6f 75 6e 74 28 69 50 74 72 2d 3e 72 65 74 75 72 ount(iPtr->retur
0490: 6e 4f 70 74 73 29 3b 0a 20 20 20 20 20 7d 0a 40 nOpts);. }.@
04a0: 40 20 2d 38 38 32 31 2c 35 20 2b 38 38 33 34 2c @ -8821,5 +8834,
04b0: 37 20 40 40 0a 20 20 2a 20 6d 6f 64 65 3a 20 63 7 @@. * mode: c
04c0: 0a 20 20 2a 20 63 2d 62 61 73 69 63 2d 6f 66 66 . * c-basic-off
04d0: 73 65 74 3a 20 34 0a 20 20 2a 20 66 69 6c 6c 2d set: 4. * fill-
04e0: 63 6f 6c 75 6d 6e 3a 20 37 38 0a 2b 20 2a 20 74 column: 78.+ * t
04f0: 61 62 2d 77 69 64 74 68 3a 20 38 0a 2b 20 2a 20 ab-width: 8.+ *
0500: 69 6e 64 65 6e 74 2d 74 61 62 73 2d 6d 6f 64 65 indent-tabs-mode
0510: 3a 20 6e 69 6c 0a 20 20 2a 20 45 6e 64 3a 0a 20 : nil. * End:.
0520: 20 2a 2f 0a 49 6e 64 65 78 3a 20 67 65 6e 65 72 */.Index: gener
0530: 69 63 2f 74 63 6c 43 6d 64 49 4c 2e 63 0a 3d 3d ic/tclCmdIL.c.==
0540: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0550: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0560: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0570: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0580: 3d 0a 52 43 53 20 66 69 6c 65 3a 20 2f 63 76 73 =.RCS file: /cvs
0590: 72 6f 6f 74 2f 74 63 6c 2f 74 63 6c 2f 67 65 6e root/tcl/tcl/gen
05a0: 65 72 69 63 2f 74 63 6c 43 6d 64 49 4c 2e 63 2c eric/tclCmdIL.c,
05b0: 76 0a 72 65 74 72 69 65 76 69 6e 67 20 72 65 76 v.retrieving rev
05c0: 69 73 69 6f 6e 20 31 2e 31 37 31 0a 64 69 66 66 ision 1.171.diff
05d0: 20 2d 75 20 2d 72 31 2e 31 37 31 20 74 63 6c 43 -u -r1.171 tclC
05e0: 6d 64 49 4c 2e 63 0a 2d 2d 2d 20 67 65 6e 65 72 mdIL.c.--- gener
05f0: 69 63 2f 74 63 6c 43 6d 64 49 4c 2e 63 09 32 30 ic/tclCmdIL.c.20
0600: 20 41 75 67 20 32 30 30 39 20 31 30 3a 35 36 3a Aug 2009 10:56:
0610: 35 35 20 2d 30 30 30 30 09 31 2e 31 37 31 0a 2b 55 -0000.1.171.+
0620: 2b 2b 20 67 65 6e 65 72 69 63 2f 74 63 6c 43 6d ++ generic/tclCm
0630: 64 49 4c 2e 63 09 32 33 20 4f 63 74 20 32 30 30 dIL.c.23 Oct 200
0640: 39 20 30 30 3a 35 31 3a 33 31 20 2d 30 30 30 30 9 00:51:31 -0000
0650: 0a 40 40 20 2d 31 31 38 2c 36 20 2b 31 31 38 2c .@@ -118,6 +118,
0660: 39 20 40 40 0a 20 09 09 09 20 20 20 20 69 6e 74 9 @@. ... int
0670: 20 6f 62 6a 63 2c 20 54 63 6c 5f 4f 62 6a 20 2a objc, Tcl_Obj *
0680: 63 6f 6e 73 74 20 6f 62 6a 76 5b 5d 29 3b 0a 20 const objv[]);.
0690: 73 74 61 74 69 63 20 69 6e 74 09 09 49 6e 66 6f static int..Info
06a0: 44 65 66 61 75 6c 74 43 6d 64 28 43 6c 69 65 6e DefaultCmd(Clien
06b0: 74 44 61 74 61 20 64 75 6d 6d 79 2c 20 54 63 6c tData dummy, Tcl
06c0: 5f 49 6e 74 65 72 70 20 2a 69 6e 74 65 72 70 2c _Interp *interp,
06d0: 0a 20 09 09 09 20 20 20 20 69 6e 74 20 6f 62 6a . ... int obj
06e0: 63 2c 20 54 63 6c 5f 4f 62 6a 20 2a 63 6f 6e 73 c, Tcl_Obj *cons
06f0: 74 20 6f 62 6a 76 5b 5d 29 3b 0a 2b 2f 2a 20 54 t objv[]);.+/* T
0700: 49 50 20 23 33 34 38 20 2d 20 4e 65 77 20 27 69 IP #348 - New 'i
0710: 6e 66 6f 27 20 73 75 62 63 6f 6d 6d 61 6e 64 20 nfo' subcommand
0720: 27 65 72 72 6f 72 73 74 61 63 6b 27 20 2a 2f 0a 'errorstack' */.
0730: 2b 73 74 61 74 69 63 20 69 6e 74 09 09 49 6e 66 +static int..Inf
0740: 6f 45 72 72 6f 72 53 74 61 63 6b 43 6d 64 28 43 oErrorStackCmd(C
0750: 6c 69 65 6e 74 44 61 74 61 20 64 75 6d 6d 79 2c lientData dummy,
0760: 20 54 63 6c 5f 49 6e 74 65 72 70 20 2a 69 6e 74 Tcl_Interp *int
0770: 65 72 70 2c 0a 2b 09 09 09 20 20 20 20 69 6e 74 erp,.+... int
0780: 20 6f 62 6a 63 2c 20 54 63 6c 5f 4f 62 6a 20 2a objc, Tcl_Obj *
0790: 63 6f 6e 73 74 20 6f 62 6a 76 5b 5d 29 3b 0a 20 const objv[]);.
07a0: 2f 2a 20 54 49 50 20 23 32 38 30 20 2d 20 4e 65 /* TIP #280 - Ne
07b0: 77 20 27 69 6e 66 6f 27 20 73 75 62 63 6f 6d 6d w 'info' subcomm
07c0: 61 6e 64 20 27 66 72 61 6d 65 27 20 2a 2f 0a 20 and 'frame' */.
07d0: 73 74 61 74 69 63 20 69 6e 74 09 09 49 6e 66 6f static int..Info
07e0: 46 72 61 6d 65 43 6d 64 28 43 6c 69 65 6e 74 44 FrameCmd(ClientD
07f0: 61 74 61 20 64 75 6d 6d 79 2c 20 54 63 6c 5f 49 ata dummy, Tcl_I
0800: 6e 74 65 72 70 20 2a 69 6e 74 65 72 70 2c 0a 20 nterp *interp,.
0810: 09 09 09 20 20 20 20 69 6e 74 20 6f 62 6a 63 2c ... int objc,
0820: 20 54 63 6c 5f 4f 62 6a 20 2a 63 6f 6e 73 74 20 Tcl_Obj *const
0830: 6f 62 6a 76 5b 5d 29 3b 0a 40 40 20 2d 31 36 34 objv[]);.@@ -164
0840: 2c 36 20 2b 31 36 37 2c 37 20 40 40 0a 20 20 20 ,6 +167,7 @@.
0850: 20 20 7b 22 63 6f 6d 70 6c 65 74 65 22 2c 09 20 {"complete",.
0860: 20 20 49 6e 66 6f 43 6f 6d 70 6c 65 74 65 43 6d InfoCompleteCm
0870: 64 2c 09 20 20 20 20 4e 55 4c 4c 7d 2c 0a 20 20 d,. NULL},.
0880: 20 20 20 7b 22 63 6f 72 6f 75 74 69 6e 65 22 2c {"coroutine",
0890: 09 20 20 20 54 63 6c 49 6e 66 6f 43 6f 72 6f 75 . TclInfoCorou
08a0: 74 69 6e 65 43 6d 64 2c 20 20 20 20 20 4e 55 4c tineCmd, NUL
08b0: 4c 7d 2c 0a 20 20 20 20 20 7b 22 64 65 66 61 75 L},. {"defau
08c0: 6c 74 22 2c 09 09 20 20 20 49 6e 66 6f 44 65 66 lt",.. InfoDef
08d0: 61 75 6c 74 43 6d 64 2c 09 20 20 20 20 4e 55 4c aultCmd,. NUL
08e0: 4c 7d 2c 0a 2b 20 20 20 20 7b 22 65 72 72 6f 72 L},.+ {"error
08f0: 73 74 61 63 6b 22 2c 09 20 20 20 49 6e 66 6f 45 stack",. InfoE
0900: 72 72 6f 72 53 74 61 63 6b 43 6d 64 2c 09 20 20 rrorStackCmd,.
0910: 20 20 4e 55 4c 4c 7d 2c 0a 20 20 20 20 20 7b 22 NULL},. {"
0920: 65 78 69 73 74 73 22 2c 09 09 20 20 20 54 63 6c exists",.. Tcl
0930: 49 6e 66 6f 45 78 69 73 74 73 43 6d 64 2c 09 20 InfoExistsCmd,.
0940: 20 20 20 54 63 6c 43 6f 6d 70 69 6c 65 49 6e 66 TclCompileInf
0950: 6f 45 78 69 73 74 73 43 6d 64 7d 2c 0a 20 20 20 oExistsCmd},.
0960: 20 20 7b 22 66 72 61 6d 65 22 2c 09 09 20 20 20 {"frame",..
0970: 49 6e 66 6f 46 72 61 6d 65 43 6d 64 2c 09 20 20 InfoFrameCmd,.
0980: 20 20 4e 55 4c 4c 7d 2c 0a 20 20 20 20 20 7b 22 NULL},. {"
0990: 66 75 6e 63 74 69 6f 6e 73 22 2c 09 20 20 20 49 functions",. I
09a0: 6e 66 6f 46 75 6e 63 74 69 6f 6e 73 43 6d 64 2c nfoFunctionsCmd,
09b0: 09 20 20 20 20 4e 55 4c 4c 7d 2c 0a 40 40 20 2d . NULL},.@@ -
09c0: 31 30 31 37 2c 36 20 2b 31 30 32 31 2c 35 35 20 1017,6 +1021,55
09d0: 40 40 0a 20 2f 2a 0a 20 20 2a 2d 2d 2d 2d 2d 2d @@. /*. *------
09e0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
09f0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0a00: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0a10: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0a20: 0a 20 20 2a 0a 2b 20 2a 20 49 6e 66 6f 45 72 72 . *.+ * InfoErr
0a30: 6f 72 53 74 61 63 6b 43 6d 64 20 2d 2d 0a 2b 20 orStackCmd --.+
0a40: 2a 0a 2b 20 2a 09 43 61 6c 6c 65 64 20 74 6f 20 *.+ *.Called to
0a50: 69 6d 70 6c 65 6d 65 6e 74 20 74 68 65 20 22 69 implement the "i
0a60: 6e 66 6f 20 65 72 72 6f 72 73 74 61 63 6b 22 20 nfo errorstack"
0a70: 63 6f 6d 6d 61 6e 64 20 74 68 61 74 20 72 65 74 command that ret
0a80: 75 72 6e 73 20 69 6e 66 6f 72 6d 61 74 69 6f 6e urns information
0a90: 0a 2b 20 2a 09 61 62 6f 75 74 20 74 68 65 20 6c .+ *.about the l
0aa0: 61 73 74 20 65 72 72 6f 72 27 73 20 63 61 6c 6c ast error's call
0ab0: 20 73 74 61 63 6b 2e 20 48 61 6e 64 6c 65 73 20 stack. Handles
0ac0: 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 73 79 the following sy
0ad0: 6e 74 61 78 3a 0a 2b 20 2a 0a 2b 20 2a 09 20 20 ntax:.+ *.+ *.
0ae0: 20 20 69 6e 66 6f 20 65 72 72 6f 72 73 74 61 63 info errorstac
0af0: 6b 20 3f 69 6e 74 65 72 70 3f 0a 2b 20 2a 0a 2b k ?interp?.+ *.+
0b00: 20 2a 20 52 65 73 75 6c 74 73 3a 0a 2b 20 2a 09 * Results:.+ *.
0b10: 52 65 74 75 72 6e 73 20 54 43 4c 5f 4f 4b 20 69 Returns TCL_OK i
0b20: 66 20 73 75 63 63 65 73 73 66 75 6c 20 61 6e 64 f successful and
0b30: 20 54 43 4c 5f 45 52 52 4f 52 20 69 66 20 74 68 TCL_ERROR if th
0b40: 65 72 65 20 69 73 20 61 6e 20 65 72 72 6f 72 2e ere is an error.
0b50: 0a 2b 20 2a 0a 2b 20 2a 20 53 69 64 65 20 65 66 .+ *.+ * Side ef
0b60: 66 65 63 74 73 3a 0a 2b 20 2a 09 52 65 74 75 72 fects:.+ *.Retur
0b70: 6e 73 20 61 20 72 65 73 75 6c 74 20 69 6e 20 74 ns a result in t
0b80: 68 65 20 69 6e 74 65 72 70 72 65 74 65 72 27 73 he interpreter's
0b90: 20 72 65 73 75 6c 74 20 6f 62 6a 65 63 74 2e 20 result object.
0ba0: 49 66 20 74 68 65 72 65 20 69 73 20 61 6e 0a 2b If there is an.+
0bb0: 20 2a 09 65 72 72 6f 72 2c 20 74 68 65 20 72 65 *.error, the re
0bc0: 73 75 6c 74 20 69 73 20 61 6e 20 65 72 72 6f 72 sult is an error
0bd0: 20 6d 65 73 73 61 67 65 2e 0a 2b 20 2a 0a 2b 20 message..+ *.+
0be0: 2a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d *---------------
0bf0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0c00: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0c10: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0c20: 2d 2d 2d 2d 2d 2d 2d 0a 2b 20 2a 2f 0a 2b 0a 2b -------.+ */.+.+
0c30: 73 74 61 74 69 63 20 69 6e 74 0a 2b 49 6e 66 6f static int.+Info
0c40: 45 72 72 6f 72 53 74 61 63 6b 43 6d 64 28 0a 2b ErrorStackCmd(.+
0c50: 20 20 20 20 43 6c 69 65 6e 74 44 61 74 61 20 64 ClientData d
0c60: 75 6d 6d 79 2c 09 09 2f 2a 20 4e 6f 74 20 75 73 ummy,../* Not us
0c70: 65 64 2e 20 2a 2f 0a 2b 20 20 20 20 54 63 6c 5f ed. */.+ Tcl_
0c80: 49 6e 74 65 72 70 20 2a 69 6e 74 65 72 70 2c 09 Interp *interp,.
0c90: 09 2f 2a 20 43 75 72 72 65 6e 74 20 69 6e 74 65 ./* Current inte
0ca0: 72 70 72 65 74 65 72 2e 20 2a 2f 0a 2b 20 20 20 rpreter. */.+
0cb0: 20 69 6e 74 20 6f 62 6a 63 2c 09 09 09 2f 2a 20 int objc,.../*
0cc0: 4e 75 6d 62 65 72 20 6f 66 20 61 72 67 75 6d 65 Number of argume
0cd0: 6e 74 73 2e 20 2a 2f 0a 2b 20 20 20 20 54 63 6c nts. */.+ Tcl
0ce0: 5f 4f 62 6a 20 2a 63 6f 6e 73 74 20 6f 62 6a 76 _Obj *const objv
0cf0: 5b 5d 29 09 2f 2a 20 41 72 67 75 6d 65 6e 74 20 [])./* Argument
0d00: 6f 62 6a 65 63 74 73 2e 20 2a 2f 0a 2b 7b 0a 2b objects. */.+{.+
0d10: 20 20 20 20 54 63 6c 5f 49 6e 74 65 72 70 20 2a Tcl_Interp *
0d20: 74 61 72 67 65 74 3b 0a 2b 20 20 20 20 49 6e 74 target;.+ Int
0d30: 65 72 70 20 2a 69 50 74 72 3b 0a 2b 0a 2b 20 20 erp *iPtr;.+.+
0d40: 20 20 69 66 20 28 28 6f 62 6a 63 20 21 3d 20 31 if ((objc != 1
0d50: 29 20 26 26 20 28 6f 62 6a 63 20 21 3d 20 32 29 ) && (objc != 2)
0d60: 29 20 7b 0a 2b 09 54 63 6c 5f 57 72 6f 6e 67 4e ) {.+.Tcl_WrongN
0d70: 75 6d 41 72 67 73 28 69 6e 74 65 72 70 2c 20 31 umArgs(interp, 1
0d80: 2c 20 6f 62 6a 76 2c 20 22 3f 69 6e 74 65 72 70 , objv, "?interp
0d90: 3f 22 29 3b 0a 2b 09 72 65 74 75 72 6e 20 54 43 ?");.+.return TC
0da0: 4c 5f 45 52 52 4f 52 3b 0a 2b 20 20 20 20 7d 0a L_ERROR;.+ }.
0db0: 2b 20 20 20 20 0a 2b 20 20 20 20 74 61 72 67 65 + .+ targe
0dc0: 74 20 3d 20 69 6e 74 65 72 70 3b 0a 2b 20 20 20 t = interp;.+
0dd0: 20 69 66 20 28 6f 62 6a 63 20 3d 3d 20 32 29 20 if (objc == 2)
0de0: 7b 0a 2b 20 20 20 20 20 20 20 20 74 61 72 67 65 {.+ targe
0df0: 74 20 3d 20 54 63 6c 5f 47 65 74 53 6c 61 76 65 t = Tcl_GetSlave
0e00: 28 69 6e 74 65 72 70 2c 20 54 63 6c 5f 47 65 74 (interp, Tcl_Get
0e10: 53 74 72 69 6e 67 28 6f 62 6a 76 5b 31 5d 29 29 String(objv[1]))
0e20: 3b 0a 2b 20 20 20 20 20 20 20 20 69 66 20 28 74 ;.+ if (t
0e30: 61 72 67 65 74 20 3d 3d 20 4e 55 4c 4c 29 20 7b arget == NULL) {
0e40: 0a 2b 20 20 20 20 20 20 20 20 20 20 20 20 72 65 .+ re
0e50: 74 75 72 6e 20 54 43 4c 5f 45 52 52 4f 52 3b 0a turn TCL_ERROR;.
0e60: 2b 20 20 20 20 20 20 20 20 7d 0a 2b 20 20 20 20 + }.+
0e70: 7d 0a 2b 0a 2b 20 20 20 20 69 50 74 72 20 3d 20 }.+.+ iPtr =
0e80: 28 49 6e 74 65 72 70 20 2a 29 20 74 61 72 67 65 (Interp *) targe
0e90: 74 3b 0a 2b 20 20 20 20 54 63 6c 5f 53 65 74 4f t;.+ Tcl_SetO
0ea0: 62 6a 52 65 73 75 6c 74 28 69 6e 74 65 72 70 2c bjResult(interp,
0eb0: 20 69 50 74 72 2d 3e 65 72 72 6f 72 53 74 61 63 iPtr->errorStac
0ec0: 6b 29 3b 0a 2b 20 20 20 20 0a 2b 20 20 20 20 72 k);.+ .+ r
0ed0: 65 74 75 72 6e 20 54 43 4c 5f 4f 4b 3b 0a 2b 7d eturn TCL_OK;.+}
0ee0: 0a 2b 0c 0a 2b 2f 2a 0a 2b 20 2a 2d 2d 2d 2d 2d .+..+/*.+ *-----
0ef0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0f00: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0f10: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0f20: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0f30: 2d 0a 2b 20 2a 0a 20 20 2a 20 54 63 6c 49 6e 66 -.+ *. * TclInf
0f40: 6f 45 78 69 73 74 73 43 6d 64 20 2d 2d 0a 20 20 oExistsCmd --.
0f50: 2a 0a 20 20 2a 09 43 61 6c 6c 65 64 20 74 6f 20 *. *.Called to
0f60: 69 6d 70 6c 65 6d 65 6e 74 20 74 68 65 20 22 69 implement the "i
0f70: 6e 66 6f 20 65 78 69 73 74 73 22 20 63 6f 6d 6d nfo exists" comm
0f80: 61 6e 64 20 74 68 61 74 20 64 65 74 65 72 6d 69 and that determi
0f90: 6e 65 73 20 77 68 65 74 68 65 72 0a 40 40 20 2d nes whether.@@ -
0fa0: 34 33 38 38 2c 35 20 2b 34 34 34 31 2c 37 20 40 4388,5 +4441,7 @
0fb0: 40 0a 20 20 2a 20 6d 6f 64 65 3a 20 63 0a 20 20 @. * mode: c.
0fc0: 2a 20 63 2d 62 61 73 69 63 2d 6f 66 66 73 65 74 * c-basic-offset
0fd0: 3a 20 34 0a 20 20 2a 20 66 69 6c 6c 2d 63 6f 6c : 4. * fill-col
0fe0: 75 6d 6e 3a 20 37 38 0a 2b 20 2a 20 74 61 62 2d umn: 78.+ * tab-
0ff0: 77 69 64 74 68 3a 20 38 0a 2b 20 2a 20 69 6e 64 width: 8.+ * ind
1000: 65 6e 74 2d 74 61 62 73 2d 6d 6f 64 65 3a 20 6e ent-tabs-mode: n
1010: 69 6c 0a 20 20 2a 20 45 6e 64 3a 0a 20 20 2a 2f il. * End:. */
1020: 0a 49 6e 64 65 78 3a 20 67 65 6e 65 72 69 63 2f .Index: generic/
1030: 74 63 6c 49 6e 74 2e 68 0a 3d 3d 3d 3d 3d 3d 3d tclInt.h.=======
1040: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
1050: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
1060: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
1070: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 52 43 53 ============.RCS
1080: 20 66 69 6c 65 3a 20 2f 63 76 73 72 6f 6f 74 2f file: /cvsroot/
1090: 74 63 6c 2f 74 63 6c 2f 67 65 6e 65 72 69 63 2f tcl/tcl/generic/
10a0: 74 63 6c 49 6e 74 2e 68 2c 76 0a 72 65 74 72 69 tclInt.h,v.retri
10b0: 65 76 69 6e 67 20 72 65 76 69 73 69 6f 6e 20 31 eving revision 1
10c0: 2e 34 34 35 0a 64 69 66 66 20 2d 75 20 2d 72 31 .445.diff -u -r1
10d0: 2e 34 34 35 20 74 63 6c 49 6e 74 2e 68 0a 2d 2d .445 tclInt.h.--
10e0: 2d 20 67 65 6e 65 72 69 63 2f 74 63 6c 49 6e 74 - generic/tclInt
10f0: 2e 68 09 33 30 20 53 65 70 20 32 30 30 39 20 30 .h.30 Sep 2009 0
1100: 33 3a 31 31 3a 32 36 20 2d 30 30 30 30 09 31 2e 3:11:26 -0000.1.
1110: 34 34 35 0a 2b 2b 2b 20 67 65 6e 65 72 69 63 2f 445.+++ generic/
1120: 74 63 6c 49 6e 74 2e 68 09 32 33 20 4f 63 74 20 tclInt.h.23 Oct
1130: 32 30 30 39 20 30 30 3a 35 31 3a 34 37 20 2d 30 2009 00:51:47 -0
1140: 30 30 30 0a 40 40 20 2d 31 38 39 35 2c 36 20 2b 000.@@ -1895,6 +
1150: 31 38 39 35 2c 39 20 40 40 0a 20 20 20 20 20 54 1895,9 @@. T
1160: 63 6c 5f 4f 62 6a 20 2a 65 69 56 61 72 3b 09 09 cl_Obj *eiVar;..
1170: 2f 2a 20 63 61 63 68 65 64 20 72 65 66 20 74 6f /* cached ref to
1180: 20 3a 3a 65 72 72 6f 72 49 6e 66 6f 20 76 61 72 ::errorInfo var
1190: 69 61 62 6c 65 2e 20 2a 2f 0a 20 20 20 20 20 54 iable. */. T
11a0: 63 6c 5f 4f 62 6a 20 2a 65 72 72 6f 72 43 6f 64 cl_Obj *errorCod
11b0: 65 3b 09 09 2f 2a 20 65 72 72 6f 72 43 6f 64 65 e;../* errorCode
11c0: 20 76 61 6c 75 65 20 28 6e 6f 77 20 61 73 20 61 value (now as a
11d0: 20 54 63 6c 5f 4f 62 6a 29 2e 20 2a 2f 0a 20 20 Tcl_Obj). */.
11e0: 20 20 20 54 63 6c 5f 4f 62 6a 20 2a 65 63 56 61 Tcl_Obj *ecVa
11f0: 72 3b 09 09 2f 2a 20 63 61 63 68 65 64 20 72 65 r;../* cached re
1200: 66 20 74 6f 20 3a 3a 65 72 72 6f 72 49 6e 66 6f f to ::errorInfo
1210: 20 76 61 72 69 61 62 6c 65 2e 20 2a 2f 0a 2b 20 variable. */.+
1220: 20 20 20 54 63 6c 5f 4f 62 6a 20 2a 65 72 72 6f Tcl_Obj *erro
1230: 72 53 74 61 63 6b 3b 09 2f 2a 20 3a 3a 74 63 6c rStack;./* ::tcl
1240: 3a 3a 65 72 72 6f 72 53 74 61 63 6b 20 76 61 6c ::errorStack val
1250: 75 65 20 28 61 73 20 61 20 54 63 6c 5f 4f 62 6a ue (as a Tcl_Obj
1260: 29 2e 20 2a 2f 0a 2b 20 20 20 20 69 6e 74 20 72 ). */.+ int r
1270: 65 73 65 74 45 72 72 6f 72 53 74 61 63 6b 3b 20 esetErrorStack;
1280: 20 20 20 20 20 20 20 2f 2a 20 63 6f 6e 74 72 6f /* contro
1290: 6c 73 20 63 6c 65 61 6e 69 6e 67 20 75 70 20 6f ls cleaning up o
12a0: 66 20 3a 3a 65 72 72 6f 72 53 74 61 63 6b 20 2a f ::errorStack *
12b0: 2f 0a 2b 20 20 20 20 69 6e 74 20 75 73 65 45 72 /.+ int useEr
12c0: 72 6f 72 53 74 61 63 6b 3b 20 20 20 20 20 20 20 rorStack;
12d0: 20 20 20 2f 2a 20 6c 69 6e 6b 65 64 20 76 61 72 /* linked var
12e0: 20 67 61 74 69 6e 67 20 3a 3a 65 72 72 6f 72 53 gating ::errorS
12f0: 74 61 63 6b 20 6f 76 65 72 68 65 61 64 20 2a 2f tack overhead */
1300: 0a 20 20 20 20 20 69 6e 74 20 72 65 74 75 72 6e . int return
1310: 4c 65 76 65 6c 3b 09 09 2f 2a 20 5b 72 65 74 75 Level;../* [retu
1320: 72 6e 20 2d 6c 65 76 65 6c 5d 20 70 61 72 61 6d rn -level] param
1330: 65 74 65 72 2e 20 2a 2f 0a 20 0a 20 20 20 20 20 eter. */. .
1340: 2f 2a 0a 49 6e 64 65 78 3a 20 67 65 6e 65 72 69 /*.Index: generi
1350: 63 2f 74 63 6c 4e 61 6d 65 73 70 2e 63 0a 3d 3d c/tclNamesp.c.==
1360: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
1370: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
1380: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
1390: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
13a0: 3d 0a 52 43 53 20 66 69 6c 65 3a 20 2f 63 76 73 =.RCS file: /cvs
13b0: 72 6f 6f 74 2f 74 63 6c 2f 74 63 6c 2f 67 65 6e root/tcl/tcl/gen
13c0: 65 72 69 63 2f 74 63 6c 4e 61 6d 65 73 70 2e 63 eric/tclNamesp.c
13d0: 2c 76 0a 72 65 74 72 69 65 76 69 6e 67 20 72 65 ,v.retrieving re
13e0: 76 69 73 69 6f 6e 20 31 2e 31 39 33 0a 64 69 66 vision 1.193.dif
13f0: 66 20 2d 75 20 2d 72 31 2e 31 39 33 20 74 63 6c f -u -r1.193 tcl
1400: 4e 61 6d 65 73 70 2e 63 0a 2d 2d 2d 20 67 65 6e Namesp.c.--- gen
1410: 65 72 69 63 2f 74 63 6c 4e 61 6d 65 73 70 2e 63 eric/tclNamesp.c
1420: 09 33 30 20 53 65 70 20 32 30 30 39 20 30 33 3a .30 Sep 2009 03:
1430: 31 31 3a 32 36 20 2d 30 30 30 30 09 31 2e 31 39 11:26 -0000.1.19
1440: 33 0a 2b 2b 2b 20 67 65 6e 65 72 69 63 2f 74 63 3.+++ generic/tc
1450: 6c 4e 61 6d 65 73 70 2e 63 09 32 33 20 4f 63 74 lNamesp.c.23 Oct
1460: 20 32 30 30 39 20 30 30 3a 35 32 3a 30 30 20 2d 2009 00:52:00 -
1470: 30 30 30 30 0a 40 40 20 2d 37 36 33 33 2c 36 20 0000.@@ -7633,6
1480: 2b 37 36 33 33 2c 34 39 20 40 40 0a 20 09 09 20 +7633,49 @@. ..
1490: 20 20 20 54 43 4c 5f 47 4c 4f 42 41 4c 5f 4f 4e TCL_GLOBAL_ON
14a0: 4c 59 29 3b 0a 20 09 7d 0a 20 20 20 20 20 7d 0a LY);. .}. }.
14b0: 2b 0a 2b 20 20 20 20 2f 2a 0a 2b 20 20 20 20 20 +.+ /*.+
14c0: 2a 20 54 49 50 20 23 33 34 38 0a 2b 20 20 20 20 * TIP #348.+
14d0: 20 2a 2f 0a 2b 0a 2b 20 20 20 20 69 66 20 28 69 */.+.+ if (i
14e0: 50 74 72 2d 3e 75 73 65 45 72 72 6f 72 53 74 61 Ptr->useErrorSta
14f0: 63 6b 29 20 7b 0a 2b 09 69 6e 74 20 6c 65 6e 3b ck) {.+.int len;
1500: 0a 2b 20 20 20 20 20 20 20 0a 2b 09 69 66 20 28 .+ .+.if (
1510: 54 63 6c 5f 49 73 53 68 61 72 65 64 28 69 50 74 Tcl_IsShared(iPt
1520: 72 2d 3e 65 72 72 6f 72 53 74 61 63 6b 29 29 20 r->errorStack))
1530: 7b 0a 2b 09 20 20 20 20 54 63 6c 5f 4f 62 6a 20 {.+. Tcl_Obj
1540: 2a 6e 65 77 4f 62 6a 3b 0a 2b 20 20 20 20 20 20 *newObj;.+
1550: 20 20 20 20 20 20 0a 2b 09 20 20 20 20 6e 65 77 .+. new
1560: 4f 62 6a 20 3d 20 54 63 6c 5f 44 75 70 6c 69 63 Obj = Tcl_Duplic
1570: 61 74 65 4f 62 6a 28 69 50 74 72 2d 3e 65 72 72 ateObj(iPtr->err
1580: 6f 72 53 74 61 63 6b 29 3b 0a 2b 09 20 20 20 20 orStack);.+.
1590: 54 63 6c 5f 44 65 63 72 52 65 66 43 6f 75 6e 74 Tcl_DecrRefCount
15a0: 28 69 50 74 72 2d 3e 65 72 72 6f 72 53 74 61 63 (iPtr->errorStac
15b0: 6b 29 3b 0a 2b 09 20 20 20 20 54 63 6c 5f 49 6e k);.+. Tcl_In
15c0: 63 72 52 65 66 43 6f 75 6e 74 28 6e 65 77 4f 62 crRefCount(newOb
15d0: 6a 29 3b 0a 2b 09 20 20 20 20 69 50 74 72 2d 3e j);.+. iPtr->
15e0: 65 72 72 6f 72 53 74 61 63 6b 20 3d 20 6e 65 77 errorStack = new
15f0: 4f 62 6a 3b 0a 2b 09 7d 0a 2b 20 20 20 20 20 20 Obj;.+.}.+
1600: 20 20 54 63 6c 5f 4c 69 73 74 4f 62 6a 4c 65 6e Tcl_ListObjLen
1610: 67 74 68 28 69 6e 74 65 72 70 2c 20 69 50 74 72 gth(interp, iPtr
1620: 2d 3e 65 72 72 6f 72 53 74 61 63 6b 2c 20 26 6c ->errorStack, &l
1630: 65 6e 29 3b 0a 2b 09 69 66 20 28 69 50 74 72 2d en);.+.if (iPtr-
1640: 3e 72 65 73 65 74 45 72 72 6f 72 53 74 61 63 6b >resetErrorStack
1650: 29 20 7b 0a 2b 09 20 20 20 20 69 50 74 72 2d 3e ) {.+. iPtr->
1660: 72 65 73 65 74 45 72 72 6f 72 53 74 61 63 6b 20 resetErrorStack
1670: 3d 20 30 3b 0a 2b 09 20 20 20 20 2f 2a 20 72 65 = 0;.+. /* re
1680: 73 65 74 20 77 68 69 6c 65 20 6b 65 65 70 69 6e set while keepin
1690: 67 20 74 68 65 20 6c 69 73 74 20 69 6e 74 72 65 g the list intre
16a0: 70 20 61 73 20 6d 75 63 68 20 61 73 20 70 6f 73 p as much as pos
16b0: 73 69 62 6c 65 20 2a 2f 0a 2b 09 20 20 20 20 54 sible */.+. T
16c0: 63 6c 5f 4c 69 73 74 4f 62 6a 52 65 70 6c 61 63 cl_ListObjReplac
16d0: 65 28 69 6e 74 65 72 70 2c 20 69 50 74 72 2d 3e e(interp, iPtr->
16e0: 65 72 72 6f 72 53 74 61 63 6b 2c 20 30 2c 20 6c errorStack, 0, l
16f0: 65 6e 2c 20 30 2c 20 4e 55 4c 4c 29 3b 0a 2b 09 en, 0, NULL);.+.
1700: 20 20 20 20 6c 65 6e 3d 30 3b 0a 2b 09 7d 20 0a len=0;.+.} .
1710: 2b 09 69 66 20 28 69 50 74 72 2d 3e 76 61 72 46 +.if (iPtr->varF
1720: 72 61 6d 65 50 74 72 20 21 3d 20 69 50 74 72 2d ramePtr != iPtr-
1730: 3e 72 6f 6f 74 46 72 61 6d 65 50 74 72 29 20 7b >rootFramePtr) {
1740: 0a 2b 09 20 20 20 20 54 63 6c 5f 4f 62 6a 20 2a .+. Tcl_Obj *
1750: 6c 69 73 74 50 74 72 3b 0a 2b 09 20 20 20 20 69 listPtr;.+. i
1760: 6e 74 20 72 65 73 75 6c 74 3b 0a 2b 20 20 20 20 nt result;.+
1770: 20 20 20 20 20 20 20 20 0a 2b 20 20 20 20 20 20 .+
1780: 20 20 20 20 20 20 69 66 20 28 69 50 74 72 2d 3e if (iPtr->
1790: 75 73 65 45 72 72 6f 72 53 74 61 63 6b 20 26 20 useErrorStack &
17a0: 34 29 20 7b 0a 2b 20 20 20 20 20 20 20 20 20 20 4) {.+
17b0: 20 20 20 20 20 20 54 63 6c 5f 4f 62 6a 20 2a 63 Tcl_Obj *c
17c0: 6f 75 6e 74 4f 62 6a 3b 0a 2b 0a 2b 20 20 20 20 ountObj;.+.+
17d0: 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 75 6e coun
17e0: 74 4f 62 6a 3d 54 63 6c 5f 4e 65 77 49 6e 74 4f tObj=Tcl_NewIntO
17f0: 62 6a 28 69 50 74 72 2d 3e 76 61 72 46 72 61 6d bj(iPtr->varFram
1800: 65 50 74 72 2d 3e 6f 62 6a 63 29 3b 0a 2b 20 20 ePtr->objc);.+
1810: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54 63 Tc
1820: 6c 5f 4c 69 73 74 4f 62 6a 52 65 70 6c 61 63 65 l_ListObjReplace
1830: 28 69 6e 74 65 72 70 2c 20 69 50 74 72 2d 3e 65 (interp, iPtr->e
1840: 72 72 6f 72 53 74 61 63 6b 2c 20 6c 65 6e 2c 20 rrorStack, len,
1850: 30 2c 20 31 2c 20 26 63 6f 75 6e 74 4f 62 6a 29 0, 1, &countObj)
1860: 3b 0a 2b 20 20 20 20 20 20 20 20 20 20 20 20 20 ;.+
1870: 20 20 20 72 65 73 75 6c 74 20 3d 20 54 63 6c 5f result = Tcl_
1880: 4c 69 73 74 4f 62 6a 52 65 70 6c 61 63 65 28 69 ListObjReplace(i
1890: 6e 74 65 72 70 2c 20 69 50 74 72 2d 3e 65 72 72 nterp, iPtr->err
18a0: 6f 72 53 74 61 63 6b 2c 20 6c 65 6e 20 2b 20 31 orStack, len + 1
18b0: 2c 20 30 2c 20 69 50 74 72 2d 3e 76 61 72 46 72 , 0, iPtr->varFr
18c0: 61 6d 65 50 74 72 2d 3e 6f 62 6a 63 2c 20 69 50 amePtr->objc, iP
18d0: 74 72 2d 3e 76 61 72 46 72 61 6d 65 50 74 72 2d tr->varFramePtr-
18e0: 3e 6f 62 6a 76 29 3b 0a 2b 20 20 20 20 20 20 20 >objv);.+
18f0: 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 2b 20 } else {.+
1900: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c l
1910: 69 73 74 50 74 72 3d 54 63 6c 5f 4e 65 77 4c 69 istPtr=Tcl_NewLi
1920: 73 74 4f 62 6a 28 69 50 74 72 2d 3e 76 61 72 46 stObj(iPtr->varF
1930: 72 61 6d 65 50 74 72 2d 3e 6f 62 6a 63 2c 0a 2b ramePtr->objc,.+
1940: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
1950: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
1960: 20 20 20 20 20 20 20 69 50 74 72 2d 3e 76 61 72 iPtr->var
1970: 46 72 61 6d 65 50 74 72 2d 3e 6f 62 6a 76 29 3b FramePtr->objv);
1980: 0a 2b 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .+
1990: 20 20 72 65 73 75 6c 74 20 3d 20 54 63 6c 5f 4c result = Tcl_L
19a0: 69 73 74 4f 62 6a 52 65 70 6c 61 63 65 28 69 6e istObjReplace(in
19b0: 74 65 72 70 2c 20 69 50 74 72 2d 3e 65 72 72 6f terp, iPtr->erro
19c0: 72 53 74 61 63 6b 2c 20 6c 65 6e 2c 20 30 2c 20 rStack, len, 0,
19d0: 31 2c 20 26 6c 69 73 74 50 74 72 29 3b 0a 2b 20 1, &listPtr);.+
19e0: 20 20 20 20 20 20 20 20 20 20 20 7d 0a 2b 09 20 }.+.
19f0: 20 20 20 69 66 20 28 72 65 73 75 6c 74 20 21 3d if (result !=
1a00: 20 54 43 4c 5f 4f 4b 29 20 7b 0a 2b 09 09 54 63 TCL_OK) {.+..Tc
1a10: 6c 5f 44 65 63 72 52 65 66 43 6f 75 6e 74 28 6c l_DecrRefCount(l
1a20: 69 73 74 50 74 72 29 3b 0a 2b 09 20 20 20 20 7d istPtr);.+. }
1a30: 0a 2b 09 7d 0a 2b 20 20 20 20 7d 0a 20 7d 0a 20 .+.}.+ }. }.
1a40: 0c 0a 20 2f 2a 0a 40 40 20 2d 37 36 34 30 2c 35 .. /*.@@ -7640,5
1a50: 20 2b 37 36 38 33 2c 37 20 40 40 0a 20 20 2a 20 +7683,7 @@. *
1a60: 6d 6f 64 65 3a 20 63 0a 20 20 2a 20 63 2d 62 61 mode: c. * c-ba
1a70: 73 69 63 2d 6f 66 66 73 65 74 3a 20 34 0a 20 20 sic-offset: 4.
1a80: 2a 20 66 69 6c 6c 2d 63 6f 6c 75 6d 6e 3a 20 37 * fill-column: 7
1a90: 38 0a 2b 20 2a 20 74 61 62 2d 77 69 64 74 68 3a 8.+ * tab-width:
1aa0: 20 38 0a 2b 20 2a 20 69 6e 64 65 6e 74 2d 74 61 8.+ * indent-ta
1ab0: 62 73 2d 6d 6f 64 65 3a 20 6e 69 6c 0a 20 20 2a bs-mode: nil. *
1ac0: 20 45 6e 64 3a 0a 20 20 2a 2f 0a 49 6e 64 65 78 End:. */.Index
1ad0: 3a 20 67 65 6e 65 72 69 63 2f 74 63 6c 52 65 73 : generic/tclRes
1ae0: 75 6c 74 2e 63 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ult.c.==========
1af0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
1b00: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
1b10: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
1b20: 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 52 43 53 20 66 69 =========.RCS fi
1b30: 6c 65 3a 20 2f 63 76 73 72 6f 6f 74 2f 74 63 6c le: /cvsroot/tcl
1b40: 2f 74 63 6c 2f 67 65 6e 65 72 69 63 2f 74 63 6c /tcl/generic/tcl
1b50: 52 65 73 75 6c 74 2e 63 2c 76 0a 72 65 74 72 69 Result.c,v.retri
1b60: 65 76 69 6e 67 20 72 65 76 69 73 69 6f 6e 20 31 eving revision 1
1b70: 2e 35 34 0a 64 69 66 66 20 2d 75 20 2d 72 31 2e .54.diff -u -r1.
1b80: 35 34 20 74 63 6c 52 65 73 75 6c 74 2e 63 0a 2d 54 tclResult.c.-
1b90: 2d 2d 20 67 65 6e 65 72 69 63 2f 74 63 6c 52 65 -- generic/tclRe
1ba0: 73 75 6c 74 2e 63 09 31 37 20 44 65 63 20 32 30 sult.c.17 Dec 20
1bb0: 30 38 20 31 36 3a 34 37 3a 33 38 20 2d 30 30 30 08 16:47:38 -000
1bc0: 30 09 31 2e 35 34 0a 2b 2b 2b 20 67 65 6e 65 72 0.1.54.+++ gener
1bd0: 69 63 2f 74 63 6c 52 65 73 75 6c 74 2e 63 09 32 ic/tclResult.c.2
1be0: 33 20 4f 63 74 20 32 30 30 39 20 30 30 3a 35 32 3 Oct 2009 00:52
1bf0: 3a 30 31 20 2d 30 30 30 30 0a 40 40 20 2d 31 39 :01 -0000.@@ -19
1c00: 2c 37 20 2b 31 39 2c 37 20 40 40 0a 20 0a 20 65 ,7 +19,7 @@. . e
1c10: 6e 75 6d 20 72 65 74 75 72 6e 4b 65 79 73 20 7b num returnKeys {
1c20: 0a 20 20 20 20 20 4b 45 59 5f 43 4f 44 45 2c 09 . KEY_CODE,.
1c30: 4b 45 59 5f 45 52 52 4f 52 43 4f 44 45 2c 09 4b KEY_ERRORCODE,.K
1c40: 45 59 5f 45 52 52 4f 52 49 4e 46 4f 2c 09 4b 45 EY_ERRORINFO,.KE
1c50: 59 5f 45 52 52 4f 52 4c 49 4e 45 2c 0a 2d 20 20 Y_ERRORLINE,.-
1c60: 20 20 4b 45 59 5f 4c 45 56 45 4c 2c 09 4b 45 59 KEY_LEVEL,.KEY
1c70: 5f 4f 50 54 49 4f 4e 53 2c 09 4b 45 59 5f 4c 41 _OPTIONS,.KEY_LA
1c80: 53 54 0a 2b 20 20 20 20 4b 45 59 5f 4c 45 56 45 ST.+ KEY_LEVE
1c90: 4c 2c 09 4b 45 59 5f 4f 50 54 49 4f 4e 53 2c 09 L,.KEY_OPTIONS,.
1ca0: 4b 45 59 5f 45 52 52 4f 52 53 54 41 43 4b 2c 09 KEY_ERRORSTACK,.
1cb0: 4b 45 59 5f 4c 41 53 54 0a 20 7d 3b 0a 20 0a 20 KEY_LAST. };. .
1cc0: 2f 2a 0a 40 40 20 2d 39 32 32 2c 36 20 2b 39 32 /*.@@ -922,6 +92
1cd0: 32 2c 37 20 40 40 0a 20 09 54 63 6c 5f 44 65 63 2,7 @@. .Tcl_Dec
1ce0: 72 52 65 66 43 6f 75 6e 74 28 69 50 74 72 2d 3e rRefCount(iPtr->
1cf0: 65 72 72 6f 72 49 6e 66 6f 29 3b 0a 20 09 69 50 errorInfo);. .iP
1d00: 74 72 2d 3e 65 72 72 6f 72 49 6e 66 6f 20 3d 20 tr->errorInfo =
1d10: 4e 55 4c 4c 3b 0a 20 20 20 20 20 7d 0a 2b 20 20 NULL;. }.+
1d20: 20 20 69 50 74 72 2d 3e 72 65 73 65 74 45 72 72 iPtr->resetErr
1d30: 6f 72 53 74 61 63 6b 20 3d 20 31 3b 0a 20 20 20 orStack = 1;.
1d40: 20 20 69 50 74 72 2d 3e 72 65 74 75 72 6e 4c 65 iPtr->returnLe
1d50: 76 65 6c 20 3d 20 31 3b 0a 20 20 20 20 20 69 50 vel = 1;. iP
1d60: 74 72 2d 3e 72 65 74 75 72 6e 43 6f 64 65 20 3d tr->returnCode =
1d70: 20 54 43 4c 5f 4f 4b 3b 0a 20 20 20 20 20 69 66 TCL_OK;. if
1d80: 20 28 69 50 74 72 2d 3e 72 65 74 75 72 6e 4f 70 (iPtr->returnOp
1d90: 74 73 29 20 7b 0a 40 40 20 2d 31 31 35 38 2c 36 ts) {.@@ -1158,6
1da0: 20 2b 31 31 35 39 2c 37 20 40 40 0a 20 09 54 63 +1159,7 @@. .Tc
1db0: 6c 4e 65 77 4c 69 74 65 72 61 6c 53 74 72 69 6e lNewLiteralStrin
1dc0: 67 4f 62 6a 28 6b 65 79 73 5b 4b 45 59 5f 45 52 gObj(keys[KEY_ER
1dd0: 52 4f 52 43 4f 44 45 5d 2c 20 22 2d 65 72 72 6f RORCODE], "-erro
1de0: 72 63 6f 64 65 22 29 3b 0a 20 09 54 63 6c 4e 65 rcode");. .TclNe
1df0: 77 4c 69 74 65 72 61 6c 53 74 72 69 6e 67 4f 62 wLiteralStringOb
1e00: 6a 28 6b 65 79 73 5b 4b 45 59 5f 45 52 52 4f 52 j(keys[KEY_ERROR
1e10: 49 4e 46 4f 5d 2c 20 22 2d 65 72 72 6f 72 69 6e INFO], "-errorin
1e20: 66 6f 22 29 3b 0a 20 09 54 63 6c 4e 65 77 4c 69 fo");. .TclNewLi
1e30: 74 65 72 61 6c 53 74 72 69 6e 67 4f 62 6a 28 6b teralStringObj(k
1e40: 65 79 73 5b 4b 45 59 5f 45 52 52 4f 52 4c 49 4e eys[KEY_ERRORLIN
1e50: 45 5d 2c 20 22 2d 65 72 72 6f 72 6c 69 6e 65 22 E], "-errorline"
1e60: 29 3b 0a 2b 09 54 63 6c 4e 65 77 4c 69 74 65 72 );.+.TclNewLiter
1e70: 61 6c 53 74 72 69 6e 67 4f 62 6a 28 6b 65 79 73 alStringObj(keys
1e80: 5b 4b 45 59 5f 45 52 52 4f 52 53 54 41 43 4b 5d [KEY_ERRORSTACK]
1e90: 2c 22 2d 65 72 72 6f 72 73 74 61 63 6b 22 29 3b ,"-errorstack");
1ea0: 0a 20 09 54 63 6c 4e 65 77 4c 69 74 65 72 61 6c . .TclNewLiteral
1eb0: 53 74 72 69 6e 67 4f 62 6a 28 6b 65 79 73 5b 4b StringObj(keys[K
1ec0: 45 59 5f 4c 45 56 45 4c 5d 2c 09 20 20 20 20 22 EY_LEVEL],. "
1ed0: 2d 6c 65 76 65 6c 22 29 3b 0a 20 09 54 63 6c 4e -level");. .TclN
1ee0: 65 77 4c 69 74 65 72 61 6c 53 74 72 69 6e 67 4f ewLiteralStringO
1ef0: 62 6a 28 6b 65 79 73 5b 4b 45 59 5f 4f 50 54 49 bj(keys[KEY_OPTI
1f00: 4f 4e 53 5d 2c 20 20 20 22 2d 6f 70 74 69 6f 6e ONS], "-option
1f10: 73 22 29 3b 0a 20 0a 40 40 20 2d 31 35 30 33 2c s");. .@@ -1503,
1f20: 36 20 2b 31 35 30 35 2c 39 20 40 40 0a 20 09 54 6 +1505,9 @@. .T
1f30: 63 6c 5f 44 69 63 74 4f 62 6a 50 75 74 28 4e 55 cl_DictObjPut(NU
1f40: 4c 4c 2c 20 6f 70 74 69 6f 6e 73 2c 20 6b 65 79 LL, options, key
1f50: 73 5b 4b 45 59 5f 45 52 52 4f 52 4c 49 4e 45 5d s[KEY_ERRORLINE]
1f60: 2c 0a 20 09 09 54 63 6c 5f 4e 65 77 49 6e 74 4f ,. ..Tcl_NewIntO
1f70: 62 6a 28 69 50 74 72 2d 3e 65 72 72 6f 72 4c 69 bj(iPtr->errorLi
1f80: 6e 65 29 29 3b 0a 20 20 20 20 20 7d 0a 2b 20 20 ne));. }.+
1f90: 20 20 69 66 20 28 69 50 74 72 2d 3e 75 73 65 45 if (iPtr->useE
1fa0: 72 72 6f 72 53 74 61 63 6b 20 26 20 32 29 20 7b rrorStack & 2) {
1fb0: 0a 2b 09 54 63 6c 5f 44 69 63 74 4f 62 6a 50 75 .+.Tcl_DictObjPu
1fc0: 74 28 4e 55 4c 4c 2c 20 6f 70 74 69 6f 6e 73 2c t(NULL, options,
1fd0: 20 6b 65 79 73 5b 4b 45 59 5f 45 52 52 4f 52 53 keys[KEY_ERRORS
1fe0: 54 41 43 4b 5d 2c 20 69 50 74 72 2d 3e 65 72 72 TACK], iPtr->err
1ff0: 6f 72 53 74 61 63 6b 29 3b 0a 2b 20 20 20 20 7d orStack);.+ }
2000: 0a 20 20 20 20 20 72 65 74 75 72 6e 20 6f 70 74 . return opt
2010: 69 6f 6e 73 3b 0a 20 7d 0a 20 0c 0a 40 40 20 2d ions;. }. ..@@ -
2020: 31 36 32 34 2c 35 20 2b 31 36 32 39 2c 37 20 40 1624,5 +1629,7 @
2030: 40 0a 20 20 2a 20 6d 6f 64 65 3a 20 63 0a 20 20 @. * mode: c.
2040: 2a 20 63 2d 62 61 73 69 63 2d 6f 66 66 73 65 74 * c-basic-offset
2050: 3a 20 34 0a 20 20 2a 20 66 69 6c 6c 2d 63 6f 6c : 4. * fill-col
2060: 75 6d 6e 3a 20 37 38 0a 2b 20 2a 20 74 61 62 2d umn: 78.+ * tab-
2070: 77 69 64 74 68 3a 20 38 0a 2b 20 2a 20 69 6e 64 width: 8.+ * ind
2080: 65 6e 74 2d 74 61 62 73 2d 6d 6f 64 65 3a 20 6e ent-tabs-mode: n
2090: 69 6c 0a 20 20 2a 20 45 6e 64 3a 0a 20 20 2a 2f il. * End:. */
20a0: 0a 49 6e 64 65 78 3a 20 74 65 73 74 73 2f 65 72 .Index: tests/er
20b0: 72 6f 72 2e 74 65 73 74 0a 3d 3d 3d 3d 3d 3d 3d ror.test.=======
20c0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
20d0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
20e0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
20f0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 52 43 53 ============.RCS
2100: 20 66 69 6c 65 3a 20 2f 63 76 73 72 6f 6f 74 2f file: /cvsroot/
2110: 74 63 6c 2f 74 63 6c 2f 74 65 73 74 73 2f 65 72 tcl/tcl/tests/er
2120: 72 6f 72 2e 74 65 73 74 2c 76 0a 72 65 74 72 69 ror.test,v.retri
2130: 65 76 69 6e 67 20 72 65 76 69 73 69 6f 6e 20 31 eving revision 1
2140: 2e 32 32 0a 64 69 66 66 20 2d 75 20 2d 72 31 2e .22.diff -u -r1.
2150: 32 32 20 65 72 72 6f 72 2e 74 65 73 74 0a 2d 2d 22 error.test.--
2160: 2d 20 74 65 73 74 73 2f 65 72 72 6f 72 2e 74 65 - tests/error.te
2170: 73 74 09 32 38 20 53 65 70 20 32 30 30 39 20 31 st.28 Sep 2009 1
2180: 38 3a 30 32 3a 32 30 20 2d 30 30 30 30 09 31 2e 8:02:20 -0000.1.
2190: 32 32 0a 2b 2b 2b 20 74 65 73 74 73 2f 65 72 72 22.+++ tests/err
21a0: 6f 72 2e 74 65 73 74 09 32 33 20 4f 63 74 20 32 or.test.23 Oct 2
21b0: 30 30 39 20 30 30 3a 35 32 3a 30 35 20 2d 30 30 009 00:52:05 -00
21c0: 30 30 0a 40 40 20 2d 31 35 32 2c 36 20 2b 31 35 00.@@ -152,6 +15
21d0: 32 2c 33 33 20 40 40 0a 20 20 20 20 20 73 65 74 2,33 @@. set
21e0: 20 3a 3a 65 72 72 6f 72 43 6f 64 65 20 62 6f 67 ::errorCode bog
21f0: 75 73 0a 20 20 20 20 20 6c 69 73 74 20 5b 63 61 us. list [ca
2200: 74 63 68 20 7b 65 72 72 6f 72 20 6d 73 67 31 20 tch {error msg1
2210: 6d 73 67 32 20 7b 7d 7d 20 6d 73 67 5d 20 24 6d msg2 {}} msg] $m
2220: 73 67 20 24 3a 3a 65 72 72 6f 72 49 6e 66 6f 20 sg $::errorInfo
2230: 24 3a 3a 65 72 72 6f 72 43 6f 64 65 0a 20 7d 20 $::errorCode. }
2240: 7b 31 20 6d 73 67 31 20 6d 73 67 32 20 7b 7d 7d {1 msg1 msg2 {}}
2250: 0a 2b 74 65 73 74 20 65 72 72 6f 72 2d 34 2e 36 .+test error-4.6
2260: 20 7b 65 72 72 6f 72 53 74 61 63 6b 20 64 69 73 {errorStack dis
2270: 61 62 6c 65 64 20 62 79 20 64 65 66 61 75 6c 74 abled by default
2280: 7d 20 7b 0a 2b 09 70 72 6f 63 20 66 20 78 20 7b } {.+.proc f x {
2290: 67 20 24 78 24 78 7d 0a 2b 09 70 72 6f 63 20 67 g $x$x}.+.proc g
22a0: 20 78 20 7b 65 72 72 6f 72 20 47 3a 24 78 7d 0a x {error G:$x}.
22b0: 2b 09 63 61 74 63 68 20 7b 66 20 31 32 7d 0a 2b +.catch {f 12}.+
22c0: 20 20 20 20 69 6e 66 6f 20 65 72 72 6f 72 73 74 info errorst
22d0: 61 63 6b 0a 2b 7d 20 7b 7d 0a 2b 74 65 73 74 20 ack.+} {}.+test
22e0: 65 72 72 6f 72 2d 34 2e 37 20 7b 65 72 72 6f 72 error-4.7 {error
22f0: 53 74 61 63 6b 20 64 69 73 61 62 6c 65 64 20 62 Stack disabled b
2300: 79 20 75 73 65 45 72 72 6f 72 53 74 61 63 6b 7d y useErrorStack}
2310: 20 7b 0a 2b 09 73 65 74 20 3a 3a 74 63 6c 3a 3a {.+.set ::tcl::
2320: 75 73 65 45 72 72 6f 72 53 74 61 63 6b 20 30 0a useErrorStack 0.
2330: 2b 09 70 72 6f 63 20 66 20 78 20 7b 67 20 24 78 +.proc f x {g $x
2340: 24 78 7d 0a 2b 09 70 72 6f 63 20 67 20 78 20 7b $x}.+.proc g x {
2350: 65 72 72 6f 72 20 47 3a 24 78 7d 0a 2b 09 63 61 error G:$x}.+.ca
2360: 74 63 68 20 7b 66 20 31 32 7d 0a 2b 09 69 6e 66 tch {f 12}.+.inf
2370: 6f 20 65 72 72 6f 72 73 74 61 63 6b 0a 2b 7d 20 o errorstack.+}
2380: 7b 7d 0a 2b 74 65 73 74 20 65 72 72 6f 72 2d 34 {}.+test error-4
2390: 2e 38 20 7b 65 72 72 6f 72 53 74 61 63 6b 20 65 .8 {errorStack e
23a0: 6e 61 62 6c 65 64 20 62 79 20 75 73 65 45 72 72 nabled by useErr
23b0: 6f 72 53 74 61 63 6b 7d 20 2d 62 6f 64 79 20 7b orStack} -body {
23c0: 0a 2b 09 73 65 74 20 3a 3a 74 63 6c 3a 3a 75 73 .+.set ::tcl::us
23d0: 65 45 72 72 6f 72 53 74 61 63 6b 20 31 0a 2b 09 eErrorStack 1.+.
23e0: 70 72 6f 63 20 66 20 78 20 7b 67 20 24 78 24 78 proc f x {g $x$x
23f0: 7d 0a 2b 09 70 72 6f 63 20 67 20 78 20 7b 65 72 }.+.proc g x {er
2400: 72 6f 72 20 47 3a 24 78 7d 0a 2b 09 63 61 74 63 ror G:$x}.+.catc
2410: 68 20 7b 66 20 31 32 7d 0a 2b 20 20 20 20 69 6e h {f 12}.+ in
2420: 66 6f 20 65 72 72 6f 72 73 74 61 63 6b 0a 2b 7d fo errorstack.+}
2430: 20 2d 6d 61 74 63 68 20 67 6c 6f 62 20 2d 72 65 -match glob -re
2440: 73 75 6c 74 20 7b 7b 67 20 31 32 31 32 7d 20 7b sult {{g 1212} {
2450: 66 20 31 32 7d 20 7b 6e 61 6d 65 73 70 61 63 65 f 12} {namespace
2460: 20 65 76 61 6c 20 2a 7d 7d 0a 2b 74 65 73 74 20 eval *}}.+test
2470: 65 72 72 6f 72 2d 34 2e 39 20 7b 6f 70 74 69 6f error-4.9 {optio
2480: 6e 73 20 64 69 63 74 20 2d 65 72 72 6f 72 73 74 ns dict -errorst
2490: 61 63 6b 20 6b 65 79 20 65 6e 61 62 6c 65 64 20 ack key enabled
24a0: 62 79 20 75 73 65 45 72 72 6f 72 53 74 61 63 6b by useErrorStack
24b0: 7d 20 2d 62 6f 64 79 20 7b 0a 2b 09 73 65 74 20 } -body {.+.set
24c0: 3a 3a 74 63 6c 3a 3a 75 73 65 45 72 72 6f 72 53 ::tcl::useErrorS
24d0: 74 61 63 6b 20 32 0a 2b 09 70 72 6f 63 20 66 20 tack 2.+.proc f
24e0: 78 20 7b 67 20 24 78 24 78 7d 0a 2b 09 70 72 6f x {g $x$x}.+.pro
24f0: 63 20 67 20 78 20 7b 65 72 72 6f 72 20 47 3a 24 c g x {error G:$
2500: 78 7d 0a 2b 09 63 61 74 63 68 20 7b 66 20 31 32 x}.+.catch {f 12
2510: 7d 20 6d 20 64 0a 2b 20 20 20 20 64 69 63 74 20 } m d.+ dict
2520: 67 65 74 20 24 64 20 2d 65 72 72 6f 72 73 74 61 get $d -errorsta
2530: 63 6b 0a 2b 7d 20 2d 6d 61 74 63 68 20 67 6c 6f ck.+} -match glo
2540: 62 20 2d 72 65 73 75 6c 74 20 7b 7b 67 20 31 32 b -result {{g 12
2550: 31 32 7d 20 7b 66 20 31 32 7d 20 7b 6e 61 6d 65 12} {f 12} {name
2560: 73 70 61 63 65 20 65 76 61 6c 20 2a 7d 7d 0a 20 space eval *}}.
2570: 0a 20 23 20 45 72 72 6f 72 73 20 69 6e 20 65 72 . # Errors in er
2580: 72 6f 72 20 63 6f 6d 6d 61 6e 64 20 69 74 73 65 ror command itse
2590: 6c 66 0a 20 0a 40 40 20 2d 32 30 37 2c 36 20 2b lf. .@@ -207,6 +
25a0: 32 33 34 2c 31 36 20 40 40 0a 20 20 20 20 20 63 234,16 @@. c
25b0: 61 74 63 68 20 66 6f 6f 0a 20 20 20 20 20 6c 69 atch foo. li
25c0: 73 74 20 24 3a 3a 65 72 72 6f 72 43 6f 64 65 0a st $::errorCode.
25d0: 20 7d 20 7b 4e 4f 4e 45 7d 0a 2b 74 65 73 74 20 } {NONE}.+test
25e0: 65 72 72 6f 72 2d 36 2e 31 30 20 7b 63 61 74 63 error-6.10 {catc
25f0: 68 20 6d 75 73 74 20 72 65 73 65 74 20 65 72 72 h must reset err
2600: 6f 72 53 74 61 63 6b 7d 20 2d 62 6f 64 79 20 7b orStack} -body {
2610: 0a 2b 09 73 65 74 20 3a 3a 74 63 6c 3a 3a 75 73 .+.set ::tcl::us
2620: 65 45 72 72 6f 72 53 74 61 63 6b 20 31 0a 2b 09 eErrorStack 1.+.
2630: 70 72 6f 63 20 66 20 78 20 7b 67 20 24 78 24 78 proc f x {g $x$x
2640: 7d 0a 2b 09 70 72 6f 63 20 67 20 78 20 7b 65 72 }.+.proc g x {er
2650: 72 6f 72 20 47 3a 24 78 7d 0a 2b 09 63 61 74 63 ror G:$x}.+.catc
2660: 68 20 7b 66 20 31 32 7d 0a 2b 09 73 65 74 20 65 h {f 12}.+.set e
2670: 31 20 5b 69 6e 66 6f 20 65 72 72 6f 72 73 74 61 1 [info errorsta
2680: 63 6b 5d 0a 2b 09 63 61 74 63 68 20 7b 66 20 31 ck].+.catch {f 1
2690: 33 7d 0a 2b 09 73 65 74 20 65 32 20 5b 69 6e 66 3}.+.set e2 [inf
26a0: 6f 20 65 72 72 6f 72 73 74 61 63 6b 5d 0a 2b 09 o errorstack].+.
26b0: 6c 69 73 74 20 24 65 31 20 24 65 32 0a 2b 7d 20 list $e1 $e2.+}
26c0: 2d 6d 61 74 63 68 20 67 6c 6f 62 20 2d 72 65 73 -match glob -res
26d0: 75 6c 74 20 7b 7b 7b 67 20 31 32 31 32 7d 20 7b ult {{{g 1212} {
26e0: 66 20 31 32 7d 20 7b 6e 61 6d 65 73 70 61 63 65 f 12} {namespace
26f0: 20 65 76 61 6c 20 2a 7d 7d 20 7b 7b 67 20 31 33 eval *}} {{g 13
2700: 31 33 7d 20 7b 66 20 31 33 7d 20 7b 6e 61 6d 65 13} {f 13} {name
2710: 73 70 61 63 65 20 65 76 61 6c 20 2a 7d 7d 7d 0a space eval *}}}.
2720: 20 0a 20 74 65 73 74 20 65 72 72 6f 72 2d 37 2e . test error-7.
2730: 31 20 7b 42 75 67 20 31 33 39 37 38 34 33 7d 20 1 {Bug 1397843}
2740: 2d 62 6f 64 79 20 7b 0a 20 20 20 20 20 76 61 72 -body {. var
2750: 69 61 62 6c 65 20 63 6d 64 73 0a iable cmds.