Tcl Source Code

Check-in [403736bc07]
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 | core-8-5-branch
Files: files | file ages | folders
SHA1: 403736bc07e572e188525e52d28de0bb62674fc0
User & Date: dgp 2011-04-27 18:32:14
Context
2011-04-27
19:34
FreeIndex backport check-in: c24d5e2982 user: dgp tags: core-8-5-branch
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
Changes
Hide Diffs Unified Diffs Ignore Whitespace Patch

Changes to ChangeLog.

1


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



	* generic/tclBinary.c:	Backport fix for [Bug 2857044].
	* generic/tclDictObj.c:	All freeIntRepProcs set typePtr to NULL.
	* generic/tclEncoding.c:
	* generic/tclListObj.c:
	* generic/tclNamesp.c:
	* generic/tclObj.c:

>
>







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

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

	* generic/tclBinary.c:	Backport fix for [Bug 2857044].
	* generic/tclDictObj.c:	All freeIntRepProcs set typePtr to NULL.
	* generic/tclEncoding.c:
	* generic/tclListObj.c:
	* generic/tclNamesp.c:
	* generic/tclObj.c:

Changes to generic/tclListObj.c.

1619
1620
1621
1622
1623
1624
1625
1626


1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
 *----------------------------------------------------------------------
 */

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((char *) listRepPtr);
    }

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







|
>
>
|
<
|
<

<

<
|







1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629

1630

1631

1632

1633
1634
1635
1636
1637
1638
1639
1640
 *----------------------------------------------------------------------
 */

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((char *) listRepPtr);
    }

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