summaryrefslogtreecommitdiffstats
path: root/generic/tclCompile.c
diff options
context:
space:
mode:
authordgp <dgp@users.sourceforge.net>2013-02-28 17:08:43 (GMT)
committerdgp <dgp@users.sourceforge.net>2013-02-28 17:08:43 (GMT)
commita91df0f94f811c1780d6248b0ef4b3cf9133b74f (patch)
tree5194f377c644e8dde41bf11a2b5f0c7387f1e569 /generic/tclCompile.c
parentf64e191a21656662cf0198592bf14af07fe7de0e (diff)
downloadtcl-a91df0f94f811c1780d6248b0ef4b3cf9133b74f.zip
tcl-a91df0f94f811c1780d6248b0ef4b3cf9133b74f.tar.gz
tcl-a91df0f94f811c1780d6248b0ef4b3cf9133b74f.tar.bz2
Revise TclReleaseLiteral() to tolerate a NULL interp argument.
Update callers and revise mistaken comments.
Diffstat (limited to 'generic/tclCompile.c')
-rw-r--r--generic/tclCompile.c16
1 files changed, 4 insertions, 12 deletions
diff --git a/generic/tclCompile.c b/generic/tclCompile.c
index 91eab6e..cf165f6 100644
--- a/generic/tclCompile.c
+++ b/generic/tclCompile.c
@@ -918,7 +918,7 @@ TclCleanupByteCode(
* released.
*/
- if ((codePtr->flags & TCL_BYTECODE_PRECOMPILED) || (interp == NULL)) {
+ if (codePtr->flags & TCL_BYTECODE_PRECOMPILED) {
objArrayPtr = codePtr->objArrayPtr;
for (i = 0; i < numLitObjects; i++) {
@@ -931,17 +931,9 @@ TclCleanupByteCode(
codePtr->numLitObjects = 0;
} else {
objArrayPtr = codePtr->objArrayPtr;
- for (i = 0; i < numLitObjects; i++) {
- /*
- * TclReleaseLiteral sets a ByteCode's object array entry NULL to
- * indicate that it has already freed the literal.
- */
-
- objPtr = *objArrayPtr;
- if (objPtr != NULL) {
- TclReleaseLiteral(interp, objPtr);
- }
- objArrayPtr++;
+ while (numLitObjects--) {
+ /* TclReleaseLiteral calls Tcl_DecrRefCount() for us */
+ TclReleaseLiteral(interp, *objArrayPtr++);
}
}