Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | TclFreeIntRep() correction & cleanup. |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
5a1953dfe5ea69bd99f825ae592b120f |
User & Date: | dgp 2011-04-27 19:26:11 |
Context
2011-04-27
| ||
19:35 | merge mark check-in: 12793bbb81 user: dgp tags: trunk | |
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 | |
Changes
Changes to ChangeLog.
1 2 3 4 5 6 7 8 | 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: | > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | 2011-04-27 Don Porter <[email protected]> * generic/tclCmdMZ.c: TclFreeIntRep() correction & cleanup. * generic/tclExecute.c: * generic/tclIndexObj.c: * generic/tclInt.h: * generic/tclListObj.c: * generic/tclNamesp.c: * generic/tclResult.c: * generic/tclStringObj.c: * generic/tclVar.c: * generic/tclListObj.c: FreeListInternalRep() cleanup. 2011-04-21 Don Porter <[email protected]> * generic/tclInt.h: Use macro to set List intreps. * generic/tclListObj.c: |
︙ | ︙ |
Changes to generic/tclCmdMZ.c.
︙ | ︙ | |||
1556 1557 1558 1559 1560 1561 1562 | result = 0; failat = 0; } else { failat = stop - string1; if (stop < end) { result = 0; TclFreeIntRep(objPtr); | < | 1556 1557 1558 1559 1560 1561 1562 1563 1564 1565 1566 1567 1568 1569 | result = 0; failat = 0; } else { failat = stop - string1; if (stop < end) { result = 0; TclFreeIntRep(objPtr); } } break; } case STR_IS_GRAPH: chcomp = Tcl_UniCharIsGraph; break; |
︙ | ︙ | |||
1613 1614 1615 1616 1617 1618 1619 | * so return failure index as the point where parsing stopped. * Clear out the internal rep, since keeping it would leave * *objPtr in an inconsistent state. */ failat = stop - string1; TclFreeIntRep(objPtr); | < | 1612 1613 1614 1615 1616 1617 1618 1619 1620 1621 1622 1623 1624 1625 | * so return failure index as the point where parsing stopped. * Clear out the internal rep, since keeping it would leave * *objPtr in an inconsistent state. */ failat = stop - string1; TclFreeIntRep(objPtr); } } else { /* * No prefix is a valid integer. Fail at beginning. */ failat = 0; |
︙ | ︙ |
Changes to generic/tclExecute.c.
︙ | ︙ | |||
2545 2546 2547 2548 2549 2550 2551 | /* TODO: convert panic to error ? */ Tcl_Panic("max size for a Tcl value (%d bytes) exceeded", INT_MAX); } #if !TCL_COMPILE_DEBUG if (bytes != tclEmptyStringRep && !Tcl_IsShared(objResultPtr)) { TclFreeIntRep(objResultPtr); | < | 2545 2546 2547 2548 2549 2550 2551 2552 2553 2554 2555 2556 2557 2558 | /* TODO: convert panic to error ? */ Tcl_Panic("max size for a Tcl value (%d bytes) exceeded", INT_MAX); } #if !TCL_COMPILE_DEBUG if (bytes != tclEmptyStringRep && !Tcl_IsShared(objResultPtr)) { TclFreeIntRep(objResultPtr); objResultPtr->bytes = ckrealloc(bytes, length+appendLen+1); objResultPtr->length = length + appendLen; p = TclGetString(objResultPtr) + length; currPtr = &OBJ_AT_DEPTH(opnd - 2); } else #endif { |
︙ | ︙ |
Changes to generic/tclIndexObj.c.
︙ | ︙ | |||
213 214 215 216 217 218 219 | sizeof(char *), msg, flags, indexPtr); /* * The internal rep must be cleared since tablePtr will go away. */ TclFreeIntRep(objPtr); | < | 213 214 215 216 217 218 219 220 221 222 223 224 225 226 | sizeof(char *), msg, flags, indexPtr); /* * The internal rep must be cleared since tablePtr will go away. */ TclFreeIntRep(objPtr); ckfree(tablePtr); return result; } /* *---------------------------------------------------------------------- |
︙ | ︙ |
Changes to generic/tclInt.h.
︙ | ︙ | |||
4041 4042 4043 4044 4045 4046 4047 | * "prototype" for this macro is: * * MODULE_SCOPE void TclFreeIntRep(Tcl_Obj *objPtr); *---------------------------------------------------------------- */ #define TclFreeIntRep(objPtr) \ | | | | > | 4041 4042 4043 4044 4045 4046 4047 4048 4049 4050 4051 4052 4053 4054 4055 4056 4057 4058 | * "prototype" for this macro is: * * MODULE_SCOPE void TclFreeIntRep(Tcl_Obj *objPtr); *---------------------------------------------------------------- */ #define TclFreeIntRep(objPtr) \ if ((objPtr)->typePtr != NULL) { \ if ((objPtr)->typePtr->freeIntRepProc != NULL) { \ (objPtr)->typePtr->freeIntRepProc(objPtr); \ } \ (objPtr)->typePtr = NULL; \ } /* *---------------------------------------------------------------- * Macro used by the Tcl core to clean out an object's string representation. * The ANSI C "prototype" for this macro is: |
︙ | ︙ |
Changes to generic/tclListObj.c.
︙ | ︙ | |||
354 355 356 357 358 359 360 | } /* * Free any old string rep and any internal rep for the old type. */ TclFreeIntRep(objPtr); | < | 354 355 356 357 358 359 360 361 362 363 364 365 366 367 | } /* * Free any old string rep and any internal rep for the old type. */ TclFreeIntRep(objPtr); Tcl_InvalidateStringRep(objPtr); /* * Set the object's type to "list" and initialize the internal rep. * However, if there are no elements to put in the list, just give the * object an empty string rep and a NULL type. */ |
︙ | ︙ |
Changes to generic/tclNamesp.c.
︙ | ︙ | |||
4735 4736 4737 4738 4739 4740 4741 | * Our failed lookup proves any previously cached nsName intrep is no * longer valid. Get rid of it so we no longer waste memory storing * it, nor time determining its invalidity again and again. */ if (objPtr->typePtr == &nsNameType) { TclFreeIntRep(objPtr); | < | 4735 4736 4737 4738 4739 4740 4741 4742 4743 4744 4745 4746 4747 4748 | * Our failed lookup proves any previously cached nsName intrep is no * longer valid. Get rid of it so we no longer waste memory storing * it, nor time determining its invalidity again and again. */ if (objPtr->typePtr == &nsNameType) { TclFreeIntRep(objPtr); } return TCL_ERROR; } nsPtr->refCount++; resNamePtr = ckalloc(sizeof(ResolvedNsName)); resNamePtr->nsPtr = nsPtr; |
︙ | ︙ |
Changes to generic/tclResult.c.
︙ | ︙ | |||
985 986 987 988 989 990 991 | if (objResultPtr->bytes) { ckfree(objResultPtr->bytes); } objResultPtr->bytes = tclEmptyStringRep; objResultPtr->length = 0; } TclFreeIntRep(objResultPtr); | < | 985 986 987 988 989 990 991 992 993 994 995 996 997 998 | if (objResultPtr->bytes) { ckfree(objResultPtr->bytes); } objResultPtr->bytes = tclEmptyStringRep; objResultPtr->length = 0; } TclFreeIntRep(objResultPtr); } } /* *---------------------------------------------------------------------- * * Tcl_SetErrorCodeVA -- |
︙ | ︙ |
Changes to generic/tclStringObj.c.
︙ | ︙ | |||
753 754 755 756 757 758 759 | } /* * Set the type to NULL and free any internal rep for the old type. */ TclFreeIntRep(objPtr); | < | 753 754 755 756 757 758 759 760 761 762 763 764 765 766 | } /* * Set the type to NULL and free any internal rep for the old type. */ TclFreeIntRep(objPtr); /* * Free any old string rep, then set the string rep to a copy of the * length bytes starting at "bytes". */ TclInvalidateStringRep(objPtr); |
︙ | ︙ |
Changes to generic/tclVar.c.
︙ | ︙ | |||
699 700 701 702 703 704 705 | doneParsing: /* * part1Ptr is not an array element; look it up, and convert it to one of * the cached types if possible. */ TclFreeIntRep(part1Ptr); | < | 699 700 701 702 703 704 705 706 707 708 709 710 711 712 | doneParsing: /* * part1Ptr is not an array element; look it up, and convert it to one of * the cached types if possible. */ TclFreeIntRep(part1Ptr); varPtr = TclLookupSimpleVar(interp, part1Ptr, flags, createPart1, &errMsg, &index); if (varPtr == NULL) { if ((errMsg != NULL) && (flags & TCL_LEAVE_ERR_MSG)) { TclObjVarErrMsg(interp, part1Ptr, part2Ptr, msg, errMsg, -1); Tcl_SetErrorCode(interp, "TCL", "LOOKUP", "VARNAME", |
︙ | ︙ | |||
2357 2358 2359 2360 2361 2362 2363 | * Try to avoid keeping the Var struct allocated due to a tclNsVarNameType * keeping a reference. This removes some additional exteriorisations of * [Bug 736729], but may be a good thing independently of the bug. */ if (part1Ptr->typePtr == &tclNsVarNameType) { TclFreeIntRep(part1Ptr); | < | 2356 2357 2358 2359 2360 2361 2362 2363 2364 2365 2366 2367 2368 2369 | * Try to avoid keeping the Var struct allocated due to a tclNsVarNameType * keeping a reference. This removes some additional exteriorisations of * [Bug 736729], but may be a good thing independently of the bug. */ if (part1Ptr->typePtr == &tclNsVarNameType) { TclFreeIntRep(part1Ptr); } #endif /* * Finally, if the variable is truly not in use then free up its Var * structure and remove it from its hash table, if any. The ref count of * its value object, if any, was decremented above. |
︙ | ︙ |