summaryrefslogtreecommitdiffstats
path: root/generic/tclLiteral.c
diff options
context:
space:
mode:
authordgp <dgp@users.sourceforge.net>2011-06-02 16:58:46 (GMT)
committerdgp <dgp@users.sourceforge.net>2011-06-02 16:58:46 (GMT)
commit877e07444a016659d8dbbe96478f44c4f56aa40f (patch)
tree33e38da0d7f16d0461aae2005d20126a6c7482ff /generic/tclLiteral.c
parentd8a99b464be44ee36d293c2d2aed4e0e502a23b3 (diff)
parent2b5168b50a2657829ffc6687f1f13f87acb053ce (diff)
downloadtcl-877e07444a016659d8dbbe96478f44c4f56aa40f.zip
tcl-877e07444a016659d8dbbe96478f44c4f56aa40f.tar.gz
tcl-877e07444a016659d8dbbe96478f44c4f56aa40f.tar.bz2
Remove TclCleanupLiteralTable (see 994838).
Diffstat (limited to 'generic/tclLiteral.c')
-rw-r--r--generic/tclLiteral.c71
1 files changed, 0 insertions, 71 deletions
diff --git a/generic/tclLiteral.c b/generic/tclLiteral.c
index 72c4577..3a9f8e1 100644
--- a/generic/tclLiteral.c
+++ b/generic/tclLiteral.c
@@ -75,77 +75,6 @@ TclInitLiteralTable(
/*
*----------------------------------------------------------------------
*
- * TclCleanupLiteralTable --
- *
- * This function frees the internal representation of every literal in a
- * literal table. It is called prior to deleting an interp, so that
- * variable refs will be cleaned up properly.
- *
- * Results:
- * None.
- *
- * Side effects:
- * Each literal in the table has its internal representation freed.
- *
- *----------------------------------------------------------------------
- */
-
-void
-TclCleanupLiteralTable(
- Tcl_Interp *interp, /* Interpreter containing literals to purge */
- LiteralTable *tablePtr) /* Points to the literal table being
- * cleaned. */
-{
- int i;
- LiteralEntry *entryPtr; /* Pointer to the current entry in the hash
- * table of literals. */
- LiteralEntry *nextPtr; /* Pointer to the next entry in the bucket. */
- Tcl_Obj *objPtr; /* Pointer to a literal object whose internal
- * rep is being freed. */
- const Tcl_ObjType *typePtr; /* Pointer to the object's type. */
- int didOne; /* Flag for whether we've removed a literal in
- * the current bucket. */
-
-#ifdef TCL_COMPILE_DEBUG
- TclVerifyGlobalLiteralTable((Interp *) interp);
-#endif /* TCL_COMPILE_DEBUG */
-
- for (i=0 ; i<tablePtr->numBuckets ; i++) {
- /*
- * It is tempting simply to walk each hash bucket once and delete the
- * internal representations of each literal in turn. It's also wrong.
- * The problem is that freeing a literal's internal representation can
- * delete other literals to which it refers, making nextPtr invalid.
- * So each time we free an internal rep, we start its bucket over
- * again.
- */
-
- do {
- didOne = 0;
- entryPtr = tablePtr->buckets[i];
- while (entryPtr != NULL) {
- objPtr = entryPtr->objPtr;
- nextPtr = entryPtr->nextPtr;
- typePtr = objPtr->typePtr;
- if ((typePtr != NULL) && (typePtr->freeIntRepProc != NULL)) {
- if (objPtr->bytes == NULL) {
- Tcl_Panic("%s: literal without a string rep",
- "TclCleanupLiteralTable");
- }
- objPtr->typePtr = NULL;
- typePtr->freeIntRepProc(objPtr);
- didOne = 1;
- break;
- }
- entryPtr = nextPtr;
- }
- } while (didOne);
- }
-}
-
-/*
- *----------------------------------------------------------------------
- *
* TclDeleteLiteralTable --
*
* This function frees up everything associated with a literal table