diff options
author | dgp <dgp@users.sourceforge.net> | 2013-02-28 17:08:43 (GMT) |
---|---|---|
committer | dgp <dgp@users.sourceforge.net> | 2013-02-28 17:08:43 (GMT) |
commit | a91df0f94f811c1780d6248b0ef4b3cf9133b74f (patch) | |
tree | 5194f377c644e8dde41bf11a2b5f0c7387f1e569 /generic/tclCompile.c | |
parent | f64e191a21656662cf0198592bf14af07fe7de0e (diff) | |
download | tcl-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.c | 16 |
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++); } } |