Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | 3607246,3607372 Unbalanced refcounts of literals in the global literal table. |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
c440d13b9752ad090f2c601782a74e12 |
User & Date: | dgp 2013-03-11 12:55:29 |
Context
2013-03-11
| ||
17:40 | Greater protection against double TclFreeObj() calls in TCL_MEM_DEBUG mode. check-in: 081509f926 user: dgp tags: trunk | |
12:55 | 3607246,3607372 Unbalanced refcounts of literals in the global literal table. check-in: c440d13b97 user: dgp tags: trunk | |
2013-03-08
| ||
21:14 | 3607372 Correct literal refcounting. Closed-Leaf check-in: 1c1952f439 user: dgp tags: bug-3607372 | |
20:57 | msvc compiler warning: signed-unsigned mismatch. check-in: 8af2068174 user: jan.nijtmans tags: trunk | |
Changes
Changes to ChangeLog.
1 2 3 4 5 6 7 | 2013-03-06 Don Porter <[email protected]> * generic/regc_nfa.c: [Bugs 3604074,3606683] Rewrite of the * generic/regcomp.c: fixempties() routine (and supporting routines) to completely eliminate the infinite loop hazard. Thanks to Tom Lane for the much improved solution. | > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 | 2013-03-11 Don Porter <[email protected]> * generic/tclCompile.c: [Bugs 3607246,3607372] Unbalanced refcounts * generic/tclLiteral.c: of literals in the global literal table. 2013-03-06 Don Porter <[email protected]> * generic/regc_nfa.c: [Bugs 3604074,3606683] Rewrite of the * generic/regcomp.c: fixempties() routine (and supporting routines) to completely eliminate the infinite loop hazard. Thanks to Tom Lane for the much improved solution. |
︙ | ︙ |
Changes to generic/tclCompile.c.
︙ | ︙ | |||
2592 2593 2594 2595 2596 2597 2598 | * the intrep. */ int numBytes; const char *bytes = Tcl_GetStringFromObj(objPtr, &numBytes); codePtr->objArrayPtr[i] = Tcl_NewStringObj(bytes, numBytes); Tcl_IncrRefCount(codePtr->objArrayPtr[i]); | | | 2592 2593 2594 2595 2596 2597 2598 2599 2600 2601 2602 2603 2604 2605 2606 | * the intrep. */ int numBytes; const char *bytes = Tcl_GetStringFromObj(objPtr, &numBytes); codePtr->objArrayPtr[i] = Tcl_NewStringObj(bytes, numBytes); Tcl_IncrRefCount(codePtr->objArrayPtr[i]); TclReleaseLiteral((Tcl_Interp *)iPtr, objPtr); } else { codePtr->objArrayPtr[i] = fetched; } } p += TCL_ALIGN(objArrayBytes); /* align exception range array */ if (exceptArrayBytes > 0) { |
︙ | ︙ |
Changes to generic/tclLiteral.c.
︙ | ︙ | |||
1006 1007 1008 1009 1010 1011 1012 | Namespace *nsPtr) /* The namespace for which to lookup and * invalidate a cmd literal. */ { Interp *iPtr = (Interp *) interp; Tcl_Obj *literalObjPtr = TclCreateLiteral(iPtr, (char *) name, strlen(name), -1, NULL, nsPtr, 0, NULL); | | > | > > > > | 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 | Namespace *nsPtr) /* The namespace for which to lookup and * invalidate a cmd literal. */ { Interp *iPtr = (Interp *) interp; Tcl_Obj *literalObjPtr = TclCreateLiteral(iPtr, (char *) name, strlen(name), -1, NULL, nsPtr, 0, NULL); if (literalObjPtr != NULL) { if (literalObjPtr->typePtr == &tclCmdNameType) { TclFreeIntRep(literalObjPtr); } /* Balance the refcount effects of TclCreateLiteral() above */ Tcl_IncrRefCount(literalObjPtr); TclReleaseLiteral(interp, literalObjPtr); } } #ifdef TCL_COMPILE_STATS /* *---------------------------------------------------------------------- * |
︙ | ︙ |