Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | fix for [Bug 2662380], crash caused by appending to a variable with a write trace that unsets it |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
d58030af16c9a95571aa18275ff7e044 |
User & Date: | mig 2011-04-13 13:23:45 |
Context
2011-04-13
| ||
13:26 | fix merge history check-in: 7dbbe17355 user: mig tags: trunk | |
13:23 | fix for [Bug 2662380], crash caused by appending to a variable with a write trace that unsets it check-in: d58030af16 user: mig tags: trunk | |
13:19 | fix for [Bug 2662380], crash caused by appending to a variable with a write trace that unsets it check-in: c12fa286f4 user: mig tags: core-8-5-branch | |
11:03 | [3285375]: Make the crash less mysterious through the judicious use of a panic. check-in: 398075e9b4 user: dkf tags: trunk | |
Changes
Changes to ChangeLog.
1 2 3 4 5 6 7 | 2011-04-13 Donal K. Fellows <[email protected]> * generic/tclUtil.c (Tcl_ConcatObj): [Bug 3285375]: Make the crash less mysterious through the judicious use of a panic. Not yet properly fixed, but at least now clearer what the failure mode is. 2011-04-12 Don Porter <[email protected]> | > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 | 2011-04-13 Miguel Sofer <[email protected]> * generic/tclVar.c: fix for [Bug 2662380], crash caused by appending to a variable with a write trace that unsets it. 2011-04-13 Donal K. Fellows <[email protected]> * generic/tclUtil.c (Tcl_ConcatObj): [Bug 3285375]: Make the crash less mysterious through the judicious use of a panic. Not yet properly fixed, but at least now clearer what the failure mode is. 2011-04-12 Don Porter <[email protected]> |
︙ | ︙ |
Changes to generic/tclVar.c.
︙ | ︙ | |||
2666 2667 2668 2669 2670 2671 2672 | if (varPtr == NULL) { return TCL_ERROR; } for (i=2 ; i<objc ; i++) { /* * Note that we do not need to increase the refCount of the Var * pointers: should a trace delete the variable, the return value | | | | > | 2666 2667 2668 2669 2670 2671 2672 2673 2674 2675 2676 2677 2678 2679 2680 2681 2682 2683 2684 2685 2686 2687 | if (varPtr == NULL) { return TCL_ERROR; } for (i=2 ; i<objc ; i++) { /* * Note that we do not need to increase the refCount of the Var * pointers: should a trace delete the variable, the return value * of TclPtrSetVar will be NULL or emptyObjPtr, and we will not * access the variable again. */ varValuePtr = TclPtrSetVar(interp, varPtr, arrayPtr, objv[1], NULL, objv[i], TCL_APPEND_VALUE|TCL_LEAVE_ERR_MSG, -1); if ((varValuePtr == NULL) || (varValuePtr == ((Interp *) interp)->emptyObjPtr)) { return TCL_ERROR; } } } Tcl_SetObjResult(interp, varValuePtr); return TCL_OK; } |
︙ | ︙ |