Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | merge trunk |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | dkf-notifier-poll |
Files: | files | file ages | folders |
SHA1: |
8db26d2e11f7cb365db910361b2e8e9f |
User & Date: | dkf 2012-02-09 15:28:00 |
Context
2012-02-17
| ||
09:06 | merge trunk check-in: 6ef0534927 user: dkf tags: dkf-notifier-poll | |
2012-02-09
| ||
15:28 | merge trunk check-in: 8db26d2e11 user: dkf tags: dkf-notifier-poll | |
15:23 | Converted the memcpy() calls in append operations to memmove() calls. This adds safety in the case o... check-in: 3bb4751c4e user: dgp tags: trunk | |
2012-02-04
| ||
17:48 | merge trunk check-in: 1ea7dfcf2c user: dkf tags: dkf-notifier-poll | |
Changes
Changes to ChangeLog.
1 2 3 4 5 6 7 | 2012-02-02 Jan Nijtmans <[email protected]> * generic/tclUniData.c: [Frq 3464401] Support Unicode 6.1 * generic/regc_locale.c: 2012-02-02 Don Porter <[email protected]> | > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | 2012-02-09 Don Porter <[email protected]> * generic/tclStringObj.c: Converted the memcpy() calls in append operations to memmove() calls. This adds safety in the case of overlapping copies, and improves performance on some benchmarks. 2012-02-06 Don Porter <[email protected]> * generic/tclEnsemble.c: [Bug 3485022] TclCompileEnsemble() avoid * tests/trace.test: compile when exec traces set. 2012-02-06 Miguel Sofer <[email protected]> * generic/tclTrace.c: Fix for [Bug 3484621]: insure that * tests/trace.test: execution traces on bytecoded commands bump the interp's compile epoch. 2012-02-02 Jan Nijtmans <[email protected]> * generic/tclUniData.c: [Frq 3464401] Support Unicode 6.1 * generic/regc_locale.c: 2012-02-02 Don Porter <[email protected]> |
︙ | ︙ |
Changes to generic/tclEnsemble.c.
︙ | ︙ | |||
2885 2886 2887 2888 2889 2890 2891 | return TCL_ERROR; } targetCmdObj = elems[0]; Tcl_IncrRefCount(targetCmdObj); cmdPtr = (Command *) Tcl_GetCommandFromObj(interp, targetCmdObj); TclDecrRefCount(targetCmdObj); | | > > > | 2885 2886 2887 2888 2889 2890 2891 2892 2893 2894 2895 2896 2897 2898 2899 2900 2901 2902 | return TCL_ERROR; } targetCmdObj = elems[0]; Tcl_IncrRefCount(targetCmdObj); cmdPtr = (Command *) Tcl_GetCommandFromObj(interp, targetCmdObj); TclDecrRefCount(targetCmdObj); if (cmdPtr == NULL || cmdPtr->compileProc == NULL || cmdPtr->nsPtr->flags & NS_SUPPRESS_COMPILATION || cmdPtr->flags * CMD_HAS_EXEC_TRACES || ((Interp *)interp)->flags & DONT_COMPILE_CMDS_INLINE) { /* * Maps to an undefined command or a command without a compiler. * Cannot compile. */ return TCL_ERROR; } |
︙ | ︙ |
Changes to generic/tclStringObj.c.
︙ | ︙ | |||
1433 1434 1435 1436 1437 1438 1439 | } /* * Copy the new string onto the end of the old string, then add the * trailing null. */ | | | 1433 1434 1435 1436 1437 1438 1439 1440 1441 1442 1443 1444 1445 1446 1447 | } /* * Copy the new string onto the end of the old string, then add the * trailing null. */ memmove(stringPtr->unicode + stringPtr->numChars, unicode, appendNumChars * sizeof(Tcl_UniChar)); stringPtr->unicode[numChars] = 0; stringPtr->numChars = numChars; stringPtr->allocated = 0; TclInvalidateStringRep(objPtr); } |
︙ | ︙ | |||
1601 1602 1603 1604 1605 1606 1607 | /* * Invalidate the unicode data. */ stringPtr->numChars = -1; stringPtr->hasUnicode = 0; | | | 1601 1602 1603 1604 1605 1606 1607 1608 1609 1610 1611 1612 1613 1614 1615 | /* * Invalidate the unicode data. */ stringPtr->numChars = -1; stringPtr->hasUnicode = 0; memmove(objPtr->bytes + oldLength, bytes, numBytes); objPtr->bytes[newLength] = 0; objPtr->length = newLength; } /* *---------------------------------------------------------------------- * |
︙ | ︙ |
Changes to generic/tclTrace.c.
︙ | ︙ | |||
1120 1121 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 | tracePtr->clientData = clientData; tracePtr->flags = flags & (TCL_TRACE_RENAME | TCL_TRACE_DELETE | TCL_TRACE_ANY_EXEC); tracePtr->nextPtr = cmdPtr->tracePtr; tracePtr->refCount = 1; cmdPtr->tracePtr = tracePtr; if (tracePtr->flags & TCL_TRACE_ANY_EXEC) { cmdPtr->flags |= CMD_HAS_EXEC_TRACES; } return TCL_OK; } /* *---------------------------------------------------------------------- * * Tcl_UntraceCommand -- | > > > > > > > > > > | 1120 1121 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 | tracePtr->clientData = clientData; tracePtr->flags = flags & (TCL_TRACE_RENAME | TCL_TRACE_DELETE | TCL_TRACE_ANY_EXEC); tracePtr->nextPtr = cmdPtr->tracePtr; tracePtr->refCount = 1; cmdPtr->tracePtr = tracePtr; if (tracePtr->flags & TCL_TRACE_ANY_EXEC) { /* * Bug 3484621: up the interp's epoch if this is a BC'ed command */ if ((cmdPtr->compileProc != NULL) && !(cmdPtr->flags & CMD_HAS_EXEC_TRACES)){ Interp *iPtr = (Interp *) interp; iPtr->compileEpoch++; } cmdPtr->flags |= CMD_HAS_EXEC_TRACES; } return TCL_OK; } /* *---------------------------------------------------------------------- * * Tcl_UntraceCommand -- |
︙ | ︙ | |||
1224 1225 1226 1227 1228 1229 1230 1231 1232 1233 1234 1235 1236 1237 | /* * None of the remaining traces on this command are execution traces. * We therefore remove this flag: */ cmdPtr->flags &= ~CMD_HAS_EXEC_TRACES; } } /* *---------------------------------------------------------------------- * * TraceCommandProc -- | > > > > > > > > > | 1234 1235 1236 1237 1238 1239 1240 1241 1242 1243 1244 1245 1246 1247 1248 1249 1250 1251 1252 1253 1254 1255 1256 | /* * None of the remaining traces on this command are execution traces. * We therefore remove this flag: */ cmdPtr->flags &= ~CMD_HAS_EXEC_TRACES; /* * Bug 3484621: up the interp's epoch if this is a BC'ed command */ if (cmdPtr->compileProc != NULL) { Interp *iPtr = (Interp *) interp; iPtr->compileEpoch++; } } } /* *---------------------------------------------------------------------- * * TraceCommandProc -- |
︙ | ︙ |
Changes to tests/trace.test.
︙ | ︙ | |||
2554 2555 2556 2557 2558 2559 2560 | } -body { untraced $t list \$::tracevar \$::tracevar2 } -result {$r} } runbase {{- *} {-* *} {- *} {- *}} $base | > > > > > > > | > > > > > | > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 2554 2555 2556 2557 2558 2559 2560 2561 2562 2563 2564 2565 2566 2567 2568 2569 2570 2571 2572 2573 2574 2575 2576 2577 2578 2579 2580 2581 2582 2583 2584 2585 2586 2587 2588 2589 2590 2591 2592 2593 2594 2595 2596 2597 2598 2599 2600 2601 2602 2603 2604 2605 2606 2607 2608 2609 2610 2611 2612 2613 2614 2615 2616 2617 2618 2619 2620 2621 2622 2623 2624 2625 2626 2627 2628 2629 2630 | } -body { untraced $t list \$::tracevar \$::tracevar2 } -result {$r} } runbase {{- *} {-* *} {- *} {- *}} $base test trace-39 {bug #3484621: tracing Bc'ed commands} -setup { set ::traceLog 0 set ::traceCalls 0 set ::bar [list 0 1 2 3] set res {} proc dotrace args { incr ::traceLog } proc foo {} { incr ::traceCalls # choose a BC'ed command that is 'unlikely' to interfere with tcltest's # internals lset ::bar 1 2 } } -body { foo lappend res $::traceLog trace add execution lset enter dotrace foo lappend res $::traceLog trace remove execution lset enter dotrace foo lappend res $::traceLog list $::traceCalls | {*}$res } -cleanup { unset ::traceLog ::traceCalls ::bar res rename dotrace {} rename foo {} } -result {3 | 0 1 1} test trace-39.1 {bug #3485022: tracing Bc'ed commands} -setup { set ::traceLog 0 set ::traceCalls 0 set res {} proc dotrace args { incr ::traceLog } proc foo {} { incr ::traceCalls string equal zip zap } } -body { foo lappend res $::traceLog trace add execution ::tcl::string::equal enter dotrace foo lappend res $::traceLog trace remove execution tcl::string::equal enter dotrace foo lappend res $::traceLog list $::traceCalls | {*}$res } -cleanup { unset ::traceLog ::traceCalls res rename dotrace {} rename foo {} } -result {3 | 0 1 1} # Delete procedures when done, so we don't clash with other tests # (e.g. foobar will clash with 'unknown' tests). catch {rename foobar {}} catch {rename foo {}} catch {rename bar {}} catch {rename untraced {}} catch {rename traceproc {}} |
︙ | ︙ |