summaryrefslogtreecommitdiffstats
path: root/generic
diff options
context:
space:
mode:
authorgahr@gahr.ch <gahr>2016-03-03 08:34:56 (GMT)
committergahr@gahr.ch <gahr>2016-03-03 08:34:56 (GMT)
commite3b58061d492c8d80e14654308769b7043be9b10 (patch)
tree7e5e124503a4afc925b79b149f6f07805d191b61 /generic
parentb5b506bfe9d7cb3ed7ce3cf1bb4905f055913044 (diff)
parent5124bc8aa150b1fba393e61541707d9a85571a37 (diff)
downloadtcl-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.h4
-rw-r--r--generic/tclOO.h2
-rw-r--r--generic/tclVar.c13
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;
}