summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordgp <dgp@users.sourceforge.net>2010-10-13 16:41:26 (GMT)
committerdgp <dgp@users.sourceforge.net>2010-10-13 16:41:26 (GMT)
commit40fe734e338c7f76d3d8e58dc9ba49618ed78922 (patch)
treebe4d8db65e438b29fae676a84c4ccf481ad29135
parent00c058d1b2b75eebb1fe0e6e4f653eb3122443df (diff)
downloadtcl-40fe734e338c7f76d3d8e58dc9ba49618ed78922.zip
tcl-40fe734e338c7f76d3d8e58dc9ba49618ed78922.tar.gz
tcl-40fe734e338c7f76d3d8e58dc9ba49618ed78922.tar.bz2
* generic/tclCompile.c: Alternative fix for [Bugs 467523,983660] where
* generic/tclExecute.c: sharing of empty scripts is allowed again.
-rw-r--r--ChangeLog5
-rw-r--r--generic/tclCompile.c8
-rw-r--r--generic/tclExecute.c6
3 files changed, 12 insertions, 7 deletions
diff --git a/ChangeLog b/ChangeLog
index 27ecd15..eb86e3a 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2010-10-13 Don Porter <dgp@users.sourceforge.net>
+
+ * generic/tclCompile.c: Alternative fix for [Bugs 467523,983660] where
+ * generic/tclExecute.c: sharing of empty scripts is allowed again.
+
2010-10-13 Jan Nijtmans <nijtmans@users.sf.net>
* win/tclWinThrd.h (removed) because it is just empty en used nowhere
diff --git a/generic/tclCompile.c b/generic/tclCompile.c
index b250420..5547071 100644
--- a/generic/tclCompile.c
+++ b/generic/tclCompile.c
@@ -11,7 +11,7 @@
* See the file "license.terms" for information on usage and redistribution of
* this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tclCompile.c,v 1.189 2010/10/06 18:38:44 dgp Exp $
+ * RCS: @(#) $Id: tclCompile.c,v 1.190 2010/10/13 16:41:27 dgp Exp $
*/
#include "tclInt.h"
@@ -714,12 +714,12 @@ FreeByteCodeInternalRep(
{
register ByteCode *codePtr = objPtr->internalRep.otherValuePtr;
+ objPtr->typePtr = NULL;
+ objPtr->internalRep.otherValuePtr = NULL;
codePtr->refCount--;
if (codePtr->refCount <= 0) {
TclCleanupByteCode(codePtr);
}
- objPtr->typePtr = NULL;
- objPtr->internalRep.otherValuePtr = NULL;
}
/*
@@ -1863,7 +1863,7 @@ TclCompileScript(
*/
if (envPtr->codeNext == entryCodeNext) {
- TclEmitPush(TclAddLiteralObj(envPtr, Tcl_NewObj(), NULL), envPtr);
+ TclEmitPush(TclRegisterNewLiteral(envPtr, "", 0), envPtr);
}
envPtr->numSrcBytes = p - script;
diff --git a/generic/tclExecute.c b/generic/tclExecute.c
index 649b100..c7f3690 100644
--- a/generic/tclExecute.c
+++ b/generic/tclExecute.c
@@ -14,7 +14,7 @@
* See the file "license.terms" for information on usage and redistribution of
* this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tclExecute.c,v 1.505 2010/10/09 15:56:35 msofer Exp $
+ * RCS: @(#) $Id: tclExecute.c,v 1.506 2010/10/13 16:41:27 dgp Exp $
*/
#include "tclInt.h"
@@ -1525,12 +1525,12 @@ FreeExprCodeInternalRep(
{
ByteCode *codePtr = (ByteCode *) objPtr->internalRep.otherValuePtr;
+ objPtr->typePtr = NULL;
+ objPtr->internalRep.otherValuePtr = NULL;
codePtr->refCount--;
if (codePtr->refCount <= 0) {
TclCleanupByteCode(codePtr);
}
- objPtr->typePtr = NULL;
- objPtr->internalRep.otherValuePtr = NULL;
}
/*