diff options
author | gahr@gahr.ch <gahr> | 2016-03-03 08:34:56 (GMT) |
---|---|---|
committer | gahr@gahr.ch <gahr> | 2016-03-03 08:34:56 (GMT) |
commit | e3b58061d492c8d80e14654308769b7043be9b10 (patch) | |
tree | 7e5e124503a4afc925b79b149f6f07805d191b61 /generic | |
parent | b5b506bfe9d7cb3ed7ce3cf1bb4905f055913044 (diff) | |
parent | 5124bc8aa150b1fba393e61541707d9a85571a37 (diff) | |
download | tcl-bug_5f71353740.zip tcl-bug_5f71353740.tar.gz tcl-bug_5f71353740.tar.bz2 |
merge trunkbug_5f71353740
Diffstat (limited to 'generic')
-rw-r--r-- | generic/tcl.h | 4 | ||||
-rw-r--r-- | generic/tclOO.h | 2 | ||||
-rw-r--r-- | generic/tclVar.c | 13 |
3 files changed, 11 insertions, 8 deletions
diff --git a/generic/tcl.h b/generic/tcl.h index a08edde..3490049 100644 --- a/generic/tcl.h +++ b/generic/tcl.h @@ -56,10 +56,10 @@ extern "C" { #define TCL_MAJOR_VERSION 8 #define TCL_MINOR_VERSION 6 #define TCL_RELEASE_LEVEL TCL_FINAL_RELEASE -#define TCL_RELEASE_SERIAL 4 +#define TCL_RELEASE_SERIAL 5 #define TCL_VERSION "8.6" -#define TCL_PATCH_LEVEL "8.6.4" +#define TCL_PATCH_LEVEL "8.6.5" /* *---------------------------------------------------------------------------- diff --git a/generic/tclOO.h b/generic/tclOO.h index a7116dc..696908a 100644 --- a/generic/tclOO.h +++ b/generic/tclOO.h @@ -24,7 +24,7 @@ * win/tclooConfig.sh */ -#define TCLOO_VERSION "1.0.3" +#define TCLOO_VERSION "1.0.4" #define TCLOO_PATCHLEVEL TCLOO_VERSION #include "tcl.h" diff --git a/generic/tclVar.c b/generic/tclVar.c index 451ef7b..5574f30 100644 --- a/generic/tclVar.c +++ b/generic/tclVar.c @@ -697,13 +697,16 @@ TclObjLookupVarEx( /* * An indexed local variable. */ + Tcl_Obj *cachedNamePtr = localName(iPtr->varFramePtr, index); part1Ptr->typePtr = &localVarNameType; - if (part1Ptr != localName(iPtr->varFramePtr, index)) { - part1Ptr->internalRep.twoPtrValue.ptr1 = - localName(iPtr->varFramePtr, index); - Tcl_IncrRefCount((Tcl_Obj *) - part1Ptr->internalRep.twoPtrValue.ptr1); + if (part1Ptr != cachedNamePtr) { + part1Ptr->internalRep.twoPtrValue.ptr1 = cachedNamePtr; + Tcl_IncrRefCount(cachedNamePtr); + if (cachedNamePtr->typePtr != &localVarNameType + || cachedNamePtr->internalRep.twoPtrValue.ptr1 != NULL) { + TclFreeIntRep(cachedNamePtr); + } } else { part1Ptr->internalRep.twoPtrValue.ptr1 = NULL; } |