Tcl Source Code

Hex Artifact Content
Login

Artifact 1f9c2fe9efcc28f5453f3852df3f5ca789164047:

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.