summaryrefslogtreecommitdiffstats
path: root/generic/tclVar.c
diff options
context:
space:
mode:
authorjan.nijtmans <nijtmans@users.sourceforge.net>2015-06-18 19:58:45 (GMT)
committerjan.nijtmans <nijtmans@users.sourceforge.net>2015-06-18 19:58:45 (GMT)
commit0ea82c2d43e73fef5481d22ae75c9f71975eb715 (patch)
treef7f3ce61553efb1eb9de900ca3c17efb92ee670e /generic/tclVar.c
parentd7b8af55e7a45674c4feb7b912bf4c7ef214855e (diff)
parent7679c0513ced1ce6009d339d8e43afdc3f0ad87a (diff)
downloadtcl-0ea82c2d43e73fef5481d22ae75c9f71975eb715.zip
tcl-0ea82c2d43e73fef5481d22ae75c9f71975eb715.tar.gz
tcl-0ea82c2d43e73fef5481d22ae75c9f71975eb715.tar.bz2
merge novem
Diffstat (limited to 'generic/tclVar.c')
-rw-r--r--generic/tclVar.c14
1 files changed, 8 insertions, 6 deletions
diff --git a/generic/tclVar.c b/generic/tclVar.c
index 65439ea..0ffa89e 100644
--- a/generic/tclVar.c
+++ b/generic/tclVar.c
@@ -1863,6 +1863,9 @@ TclPtrSetVar(
Tcl_IncrRefCount(oldValuePtr); /* Since var is ref */
}
Tcl_AppendObjToObj(oldValuePtr, newValuePtr);
+ if (newValuePtr->refCount == 0) {
+ Tcl_DecrRefCount(newValuePtr);
+ }
}
}
} else if (newValuePtr != oldValuePtr) {
@@ -4258,8 +4261,8 @@ ObjMakeUpvar(
|| !HasLocalVars(varFramePtr)
|| (strstr(TclGetString(myNamePtr), "::") != NULL))) {
Tcl_SetObjResult((Tcl_Interp *) iPtr, Tcl_ObjPrintf(
- "bad variable name \"%s\": upvar won't create "
- "namespace variable that refers to procedure variable",
+ "bad variable name \"%s\": can't create namespace "
+ "variable that refers to procedure variable",
TclGetString(myNamePtr)));
Tcl_SetErrorCode(interp, "TCL", "UPVAR", "INVERTED", NULL);
return TCL_ERROR;
@@ -4359,9 +4362,8 @@ TclPtrObjMakeUpvar(
*/
Tcl_SetObjResult((Tcl_Interp *) iPtr, Tcl_ObjPrintf(
- "bad variable name \"%s\": upvar won't create a"
- " scalar variable that looks like an array element",
- myName));
+ "bad variable name \"%s\": can't create a scalar "
+ "variable that looks like an array element", myName));
Tcl_SetErrorCode(interp, "TCL", "UPVAR", "LOCAL_ELEMENT",
NULL);
return TCL_ERROR;
@@ -4545,7 +4547,7 @@ Tcl_GetVariableFullName(
} else if (iPtr->varFramePtr->procPtr) {
int index = varPtr - iPtr->varFramePtr->compiledLocals;
- if (index < iPtr->varFramePtr->numCompiledLocals) {
+ if (index >= 0 && index < iPtr->varFramePtr->numCompiledLocals) {
namePtr = localName(iPtr->varFramePtr, index);
Tcl_AppendObjToObj(objPtr, namePtr);
}