Tcl Source Code

Check-in [4683efaee9]
Login

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview
Comment:FreeListInternalRep() cleanup.
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1: 4683efaee9ca414d4ff2690ba19b3b7a6d1afaed
User & Date: dgp 2011-04-27 18:33:57
Context
2011-04-27
19:26
TclFreeIntRep() correction & cleanup. check-in: 5a1953dfe5 user: dgp tags: trunk
18:49
TclFreeIntRep() cleanup. Closed-Leaf check-in: 53b79ea68a user: dgp tags: mistake
18:33
FreeListInternalRep() cleanup. check-in: 4683efaee9 user: dgp tags: trunk
18:32
FreeListInternalRep() cleanup. check-in: 403736bc07 user: dgp tags: core-8-5-branch
18:23
Backport fix for [Bug 2857044]. check-in: 1855377cde user: dgp tags: core-8-5-branch
07:54
fix for [Bug 3288345]: use _stat32i64 for CYGWIN too fix a few more gcc warnings check-in: eaf4d5e09f user: jan.nijtmans tags: trunk
Changes
Hide Diffs Unified Diffs Ignore Whitespace Patch

Changes to ChangeLog.





1
2
3
4
5
6
7




2011-04-21  Don Porter  <[email protected]>

	* generic/tclInt.h:	Use macro to set List intreps.
	* generic/tclListObj.c:

	* generic/tclCmdIL.c:	Limits on list length were too strict.
	* generic/tclInt.h:	Revised panics to errors where possible.
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
2011-04-27  Don Porter  <[email protected]>

	* generic/tclListObj.c:	FreeListInternalRep() cleanup.

2011-04-21  Don Porter  <[email protected]>

	* generic/tclInt.h:	Use macro to set List intreps.
	* generic/tclListObj.c:

	* generic/tclCmdIL.c:	Limits on list length were too strict.
	* generic/tclInt.h:	Revised panics to errors where possible.

Changes to generic/tclListObj.c.

1643
1644
1645
1646
1647
1648
1649
1650


1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
 *----------------------------------------------------------------------
 */

static void
FreeListInternalRep(
    Tcl_Obj *listPtr)		/* List object with internal rep to free. */
{
    register List *listRepPtr = ListRepPtr(listPtr);


    register Tcl_Obj **elemPtrs = &listRepPtr->elements;
    register Tcl_Obj *objPtr;
    int numElems = listRepPtr->elemCount;
    int i;

    if (--listRepPtr->refCount <= 0) {
	for (i = 0;  i < numElems;  i++) {
	    objPtr = elemPtrs[i];
	    Tcl_DecrRefCount(objPtr);
	}
	ckfree(listRepPtr);
    }

    listPtr->internalRep.twoPtrValue.ptr1 = NULL;
    listPtr->internalRep.twoPtrValue.ptr2 = NULL;
    listPtr->typePtr = NULL;







|
>
>
|
<
|
<

<

<
|







1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653

1654

1655

1656

1657
1658
1659
1660
1661
1662
1663
1664
 *----------------------------------------------------------------------
 */

static void
FreeListInternalRep(
    Tcl_Obj *listPtr)		/* List object with internal rep to free. */
{
    List *listRepPtr = ListRepPtr(listPtr);

    if (--listRepPtr->refCount <= 0) {
	Tcl_Obj **elemPtrs = &listRepPtr->elements;

	int i, numElems = listRepPtr->elemCount;



	for (i = 0;  i < numElems;  i++) {

	    Tcl_DecrRefCount(elemPtrs[i]);
	}
	ckfree(listRepPtr);
    }

    listPtr->internalRep.twoPtrValue.ptr1 = NULL;
    listPtr->internalRep.twoPtrValue.ptr2 = NULL;
    listPtr->typePtr = NULL;