Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Changes In Branch tip-543-9 Excluding Merge-Ins
This is equivalent to a diff from ef1b22987a to a989de7067
2020-01-21
| ||
22:14 | Implement TIp 543. check-in: 83d7bff763 user: dgp tags: trunk | |
2020-01-13
| ||
12:11 | Merge 8.7 check-in: 4a9636c39a user: jan.nijtmans tags: trunk | |
2020-01-10
| ||
17:40 | merge trunk Closed-Leaf check-in: a989de7067 user: dgp tags: tip-543-9 | |
15:27 | Merge 8.7 check-in: ef1b22987a user: jan.nijtmans tags: trunk | |
15:18 | tommath_private.h : Remove special C4146 handling: already done in tclWinPort.h too. tcl.pc.in: Mak... check-in: 106e92e2ad user: jan.nijtmans tags: core-8-branch | |
2020-01-09
| ||
09:28 | Merge 8.7 check-in: 3f43192979 user: jan.nijtmans tags: trunk | |
2019-12-30
| ||
21:29 | merge trunk check-in: b42beff8ef user: dgp tags: tip-543-9 | |
Changes to doc/TraceVar.3.
1 2 3 4 5 6 7 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | - + | '\" '\" Copyright (c) 1989-1993 The Regents of the University of California. '\" Copyright (c) 1994-1996 Sun Microsystems, Inc. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" |
︙ | |||
91 92 93 94 95 96 97 | 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 | - + | \fBTCL_TRACE_WRITES\fR Invoke \fIproc\fR whenever an attempt is made to modify the variable. .TP \fBTCL_TRACE_UNSETS\fR Invoke \fIproc\fR whenever the variable is unset. A variable may be unset either explicitly by an \fBunset\fR command, or implicitly when a procedure returns (its local variables are |
︙ | |||
156 157 158 159 160 161 162 | 156 157 158 159 160 161 162 163 164 165 166 167 168 169 | - - - - | procedure call: the trace procedure will need to pass this flag back to variable-related procedures like \fBTcl_GetVar\fR if it attempts to access the variable. The bit \fBTCL_TRACE_DESTROYED\fR will be set in \fIflags\fR if the trace is about to be destroyed; this information may be useful to \fIproc\fR so that it can clean up its own internal data structures (see the section \fBTCL_TRACE_DESTROYED\fR below for more details). |
︙ | |||
325 326 327 328 329 330 331 332 333 334 335 336 337 338 | 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 | + + + + + + + + + + | value). .PP The return value from \fIproc\fR is only used during read and write tracing. During unset traces, the return value is ignored and all relevant trace procedures will always be invoked. .SH "RESTRICTIONS" .PP Because operations on variables may take place as part of the deletion of the interp that contains them, \fIproc\fR must be careful about checking what the \fIinterp\fR parameter can be used to do. The routine \fBTcl_InterpDeleted\fR is an important tool for this. When \fBTcl_InterpDeleted\fR returns 1, \fIproc\fR will not be able to invoke any scripts in \fIinterp\fR. You may encounter old code using a deprecated flag value \fBTCL_INTERP_DESTROYED\fR to signal this condition, but Tcl 9 no longer supports this. Any supported code must be converted to stop using it. .PP A trace procedure can be called at any time, even when there are partially formed results stored in the interpreter. If the trace procedure does anything that could damage this result (such as calling \fBTcl_Eval\fR) then it must use the \fBTcl_SaveInterpState\fR and related routines to save and restore the original state of the interpreter before it returns. |
︙ | |||
350 351 352 353 354 355 356 | 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 | - - - - - - - - - - - - - - - - | In an unset callback to \fIproc\fR, the \fBTCL_TRACE_DESTROYED\fR bit is set in \fIflags\fR if the trace is being removed as part of the deletion. Traces on a variable are always removed whenever the variable is deleted; the only time \fBTCL_TRACE_DESTROYED\fR is not set is for a whole-array trace invoked when only a single element of an array is unset. |
Changes to generic/tcl.h.
︙ | |||
870 871 872 873 874 875 876 | 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 | - + | #define TCL_NAMESPACE_ONLY 2 #define TCL_APPEND_VALUE 4 #define TCL_LIST_ELEMENT 8 #define TCL_TRACE_READS 0x10 #define TCL_TRACE_WRITES 0x20 #define TCL_TRACE_UNSETS 0x40 #define TCL_TRACE_DESTROYED 0x80 |
︙ |
Changes to generic/tclTrace.c.
︙ | |||
75 76 77 78 79 80 81 | 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 | - - + | * TCL_TRACE_ANY_EXEC - OR'd combination of all EXEC flags. * TCL_TRACE_EXEC_IN_PROGRESS - The callback function on this trace is * currently executing. Therefore we don't let * further traces execute. * TCL_TRACE_EXEC_DIRECT - This execution trace is triggered directly * by the command being traced, not because of * an internal trace. |
︙ | |||
2640 2641 2642 2643 2644 2645 2646 | 2639 2640 2641 2642 2643 2644 2645 2646 2647 2648 2649 2650 2651 2652 | - - - - - - - | copiedName = 1; } break; } } } |
︙ | |||
2669 2670 2671 2672 2673 2674 2675 | 2661 2662 2663 2664 2665 2666 2667 2668 2669 2670 2671 2672 2673 2674 | - - - | if (!(tracePtr->flags & flags)) { continue; } Tcl_Preserve(tracePtr); if (state == NULL) { state = Tcl_SaveInterpState((Tcl_Interp *) iPtr, code); } |
︙ | |||
2713 2714 2715 2716 2717 2718 2719 | 2702 2703 2704 2705 2706 2707 2708 2709 2710 2711 2712 2713 2714 2715 | - - - | if (!(tracePtr->flags & flags)) { continue; } Tcl_Preserve(tracePtr); if (state == NULL) { state = Tcl_SaveInterpState((Tcl_Interp *) iPtr, code); } |
︙ |