summaryrefslogtreecommitdiffstats
path: root/generic/tclTest.c
diff options
context:
space:
mode:
authordgp <dgp@users.sourceforge.net>2004-03-01 17:33:45 (GMT)
committerdgp <dgp@users.sourceforge.net>2004-03-01 17:33:45 (GMT)
commit35da23f80f35ffde79b635c74c0a31b1a6b9b181 (patch)
tree86e6a76aafdf522e161a414c96b16659f1cf2956 /generic/tclTest.c
parent23b1014c0fb8387895fe3b847999ea8b17572bee (diff)
downloadtcl-35da23f80f35ffde79b635c74c0a31b1a6b9b181.zip
tcl-35da23f80f35ffde79b635c74c0a31b1a6b9b181.tar.gz
tcl-35da23f80f35ffde79b635c74c0a31b1a6b9b181.tar.bz2
* generic/tclTrace.c (TclCheckInterpTraces): The TIP 62
* generic/tclTest.c (TestcmdtraceCmd): implementation introduced a * tests/trace.test (trace-29.10): bug by testing the CallFrame level instead of the iPtr->numLevels level when deciding what traces created by Tcl_Create(Obj)Trace to call. Added test to expose the error, and made fix. [Request 462580]
Diffstat (limited to 'generic/tclTest.c')
-rw-r--r--generic/tclTest.c14
1 files changed, 13 insertions, 1 deletions
diff --git a/generic/tclTest.c b/generic/tclTest.c
index 7709bb9..473cb21 100644
--- a/generic/tclTest.c
+++ b/generic/tclTest.c
@@ -14,7 +14,7 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tclTest.c,v 1.76 2004/01/29 10:28:20 vincentdarley Exp $
+ * RCS: @(#) $Id: tclTest.c,v 1.77 2004/03/01 17:33:45 dgp Exp $
*/
#define TCL_TEST
@@ -1200,6 +1200,18 @@ TestcmdtraceCmd(dummy, interp, argc, argv)
cmdTrace = Tcl_CreateTrace(interp, 50000,
(Tcl_CmdTraceProc *) CmdTraceDeleteProc, (ClientData) NULL);
Tcl_Eval(interp, argv[2]);
+ } else if (strcmp(argv[1], "leveltest") == 0) {
+ Interp *iPtr = (Interp *) interp;
+ Tcl_DStringInit(&buffer);
+ cmdTrace = Tcl_CreateTrace(interp, iPtr->numLevels + 4,
+ (Tcl_CmdTraceProc *) CmdTraceProc, (ClientData) &buffer);
+ result = Tcl_Eval(interp, argv[2]);
+ if (result == TCL_OK) {
+ Tcl_ResetResult(interp);
+ Tcl_AppendResult(interp, Tcl_DStringValue(&buffer), NULL);
+ }
+ Tcl_DeleteTrace(interp, cmdTrace);
+ Tcl_DStringFree(&buffer);
} else if ( strcmp(argv[1], "resulttest" ) == 0 ) {
/* Create an object-based trace, then eval a script. This is used
* to test return codes other than TCL_OK from the trace engine.