Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Tcl_InvalidateStringRep -> TclInvalidateStringRep |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | core-8-5-branch |
Files: | files | file ages | folders |
SHA1: |
c7fb5aa3b993aea55dbe8a114ee9d57b |
User & Date: | jan.nijtmans 2013-02-07 13:53:08 |
Context
2013-02-10
| ||
13:12 | Unbreak msvc builds, by depending on tclPort.h for inclusion of <sys/stat.h>. check-in: 7725ffcfef user: jan.nijtmans tags: core-8-5-branch | |
2013-02-07
| ||
13:55 | Tcl_InvalidateStringRep -> TclInvalidateStringRep check-in: b0db125f02 user: jan.nijtmans tags: trunk | |
13:53 | Tcl_InvalidateStringRep -> TclInvalidateStringRep check-in: c7fb5aa3b9 user: jan.nijtmans tags: core-8-5-branch | |
2013-02-05
| ||
16:55 | [Bug 3603434] Make sure TclpObjNormalizePath() properly declares "a:/" to be normalized, even when n... check-in: 111464a29c user: dgp tags: core-8-5-branch | |
Changes
Changes to generic/tclBinary.c.
︙ | ︙ | |||
267 268 269 270 271 272 273 | { ByteArray *byteArrayPtr; if (Tcl_IsShared(objPtr)) { Tcl_Panic("%s called with shared object", "Tcl_SetByteArrayObj"); } TclFreeIntRep(objPtr); | | | 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 | { ByteArray *byteArrayPtr; if (Tcl_IsShared(objPtr)) { Tcl_Panic("%s called with shared object", "Tcl_SetByteArrayObj"); } TclFreeIntRep(objPtr); TclInvalidateStringRep(objPtr); if (length < 0) { length = 0; } byteArrayPtr = (ByteArray *) ckalloc(BYTEARRAY_SIZE(length)); byteArrayPtr->used = length; byteArrayPtr->allocated = length; |
︙ | ︙ | |||
363 364 365 366 367 368 369 | byteArrayPtr = GET_BYTEARRAY(objPtr); if (length > byteArrayPtr->allocated) { byteArrayPtr = (ByteArray *) ckrealloc( (char *) byteArrayPtr, BYTEARRAY_SIZE(length)); byteArrayPtr->allocated = length; SET_BYTEARRAY(objPtr, byteArrayPtr); } | | | 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 | byteArrayPtr = GET_BYTEARRAY(objPtr); if (length > byteArrayPtr->allocated) { byteArrayPtr = (ByteArray *) ckrealloc( (char *) byteArrayPtr, BYTEARRAY_SIZE(length)); byteArrayPtr->allocated = length; SET_BYTEARRAY(objPtr, byteArrayPtr); } TclInvalidateStringRep(objPtr); byteArrayPtr->used = length; return byteArrayPtr->bytes; } /* *---------------------------------------------------------------------- * |
︙ | ︙ |
Changes to generic/tclDictObj.c.
︙ | ︙ | |||
833 834 835 836 837 838 839 | static void InvalidateDictChain( Tcl_Obj *dictObj) { Dict *dict = dictObj->internalRep.twoPtrValue.ptr1; do { | | | 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 | static void InvalidateDictChain( Tcl_Obj *dictObj) { Dict *dict = dictObj->internalRep.twoPtrValue.ptr1; do { TclInvalidateStringRep(dictObj); dict->epoch++; dictObj = dict->chain; if (dictObj == NULL) { break; } dict->chain = NULL; dict = dictObj->internalRep.twoPtrValue.ptr1; |
︙ | ︙ | |||
887 888 889 890 891 892 893 | if (result != TCL_OK) { return result; } } if (dictPtr->bytes != NULL) { | | | 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 | if (result != TCL_OK) { return result; } } if (dictPtr->bytes != NULL) { TclInvalidateStringRep(dictPtr); } dict = dictPtr->internalRep.twoPtrValue.ptr1; hPtr = CreateChainEntry(dict, keyPtr, &isNew); Tcl_IncrRefCount(valuePtr); if (!isNew) { Tcl_Obj *oldValuePtr = Tcl_GetHashValue(hPtr); |
︙ | ︙ | |||
989 990 991 992 993 994 995 | int result = SetDictFromAny(interp, dictPtr); if (result != TCL_OK) { return result; } } if (dictPtr->bytes != NULL) { | | | 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 | int result = SetDictFromAny(interp, dictPtr); if (result != TCL_OK) { return result; } } if (dictPtr->bytes != NULL) { TclInvalidateStringRep(dictPtr); } dict = dictPtr->internalRep.twoPtrValue.ptr1; if (DeleteChainEntry(dict, keyPtr)) { dict->epoch++; } return TCL_OK; } |
︙ | ︙ | |||
1358 1359 1360 1361 1362 1363 1364 | return Tcl_DbNewDictObj("unknown", 0); #else /* !TCL_MEM_DEBUG */ Tcl_Obj *dictPtr; Dict *dict; TclNewObj(dictPtr); | | | 1358 1359 1360 1361 1362 1363 1364 1365 1366 1367 1368 1369 1370 1371 1372 | return Tcl_DbNewDictObj("unknown", 0); #else /* !TCL_MEM_DEBUG */ Tcl_Obj *dictPtr; Dict *dict; TclNewObj(dictPtr); TclInvalidateStringRep(dictPtr); dict = (Dict *) ckalloc(sizeof(Dict)); InitChainTable(dict); dict->epoch = 0; dict->chain = NULL; dict->refcount = 1; dictPtr->internalRep.twoPtrValue.ptr1 = dict; dictPtr->typePtr = &tclDictType; |
︙ | ︙ | |||
1407 1408 1409 1410 1411 1412 1413 | int line) { #ifdef TCL_MEM_DEBUG Tcl_Obj *dictPtr; Dict *dict; TclDbNewObj(dictPtr, file, line); | | | 1407 1408 1409 1410 1411 1412 1413 1414 1415 1416 1417 1418 1419 1420 1421 | int line) { #ifdef TCL_MEM_DEBUG Tcl_Obj *dictPtr; Dict *dict; TclDbNewObj(dictPtr, file, line); TclInvalidateStringRep(dictPtr); dict = (Dict *) ckalloc(sizeof(Dict)); InitChainTable(dict); dict->epoch = 0; dict->chain = NULL; dict->refcount = 1; dictPtr->internalRep.twoPtrValue.ptr1 = dict; dictPtr->typePtr = &tclDictType; |
︙ | ︙ | |||
2139 2140 2141 2142 2143 2144 2145 | Tcl_IncrRefCount(incrPtr); code = TclIncrObj(interp, valuePtr, incrPtr); Tcl_DecrRefCount(incrPtr); } } if (code == TCL_OK) { | | | 2139 2140 2141 2142 2143 2144 2145 2146 2147 2148 2149 2150 2151 2152 2153 | Tcl_IncrRefCount(incrPtr); code = TclIncrObj(interp, valuePtr, incrPtr); Tcl_DecrRefCount(incrPtr); } } if (code == TCL_OK) { TclInvalidateStringRep(dictPtr); valuePtr = Tcl_ObjSetVar2(interp, objv[1], NULL, dictPtr, TCL_LEAVE_ERR_MSG); if (valuePtr == NULL) { code = TCL_ERROR; } else { Tcl_SetObjResult(interp, valuePtr); } |
︙ | ︙ | |||
2228 2229 2230 2231 2232 2233 2234 | } } } if (allocatedValue) { Tcl_DictObjPut(interp, dictPtr, objv[2], valuePtr); } else if (dictPtr->bytes != NULL) { | | | 2228 2229 2230 2231 2232 2233 2234 2235 2236 2237 2238 2239 2240 2241 2242 | } } } if (allocatedValue) { Tcl_DictObjPut(interp, dictPtr, objv[2], valuePtr); } else if (dictPtr->bytes != NULL) { TclInvalidateStringRep(dictPtr); } resultPtr = Tcl_ObjSetVar2(interp, objv[1], NULL, dictPtr, TCL_LEAVE_ERR_MSG); if (resultPtr == NULL) { return TCL_ERROR; } |
︙ | ︙ |
Changes to generic/tclExecute.c.
︙ | ︙ | |||
6861 6862 6863 6864 6865 6866 6867 | Tcl_IncrRefCount(incrPtr); if (Tcl_IsShared(valPtr)) { valPtr = Tcl_DuplicateObj(valPtr); Tcl_DictObjPut(NULL, dictPtr, OBJ_AT_TOS, valPtr); } result = TclIncrObj(interp, valPtr, incrPtr); if (result == TCL_OK) { | | | 6861 6862 6863 6864 6865 6866 6867 6868 6869 6870 6871 6872 6873 6874 6875 | Tcl_IncrRefCount(incrPtr); if (Tcl_IsShared(valPtr)) { valPtr = Tcl_DuplicateObj(valPtr); Tcl_DictObjPut(NULL, dictPtr, OBJ_AT_TOS, valPtr); } result = TclIncrObj(interp, valPtr, incrPtr); if (result == TCL_OK) { TclInvalidateStringRep(dictPtr); } TclDecrRefCount(incrPtr); } break; case INST_DICT_UNSET: cleanup = opnd; result = Tcl_DictObjRemoveKeyList(interp, dictPtr, opnd, |
︙ | ︙ |
Changes to generic/tclListObj.c.
︙ | ︙ | |||
229 230 231 232 233 234 235 | listRepPtr = NewListIntRep(objc, objv, 1); /* * Now create the object. */ | | | 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 | listRepPtr = NewListIntRep(objc, objv, 1); /* * Now create the object. */ TclInvalidateStringRep(listPtr); ListSetIntRep(listPtr, listRepPtr); return listPtr; } #endif /* if TCL_MEM_DEBUG */ /* *---------------------------------------------------------------------- |
︙ | ︙ | |||
294 295 296 297 298 299 300 | listRepPtr = NewListIntRep(objc, objv, 1); /* * Now create the object. */ | | | 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 | listRepPtr = NewListIntRep(objc, objv, 1); /* * Now create the object. */ TclInvalidateStringRep(listPtr); ListSetIntRep(listPtr, listRepPtr); return listPtr; } #else /* if not TCL_MEM_DEBUG */ |
︙ | ︙ | |||
355 356 357 358 359 360 361 | /* * Free any old string rep and any internal rep for the old type. */ TclFreeIntRep(objPtr); objPtr->typePtr = NULL; | | | 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 | /* * Free any old string rep and any internal rep for the old type. */ TclFreeIntRep(objPtr); objPtr->typePtr = NULL; TclInvalidateStringRep(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. */ |
︙ | ︙ | |||
641 642 643 644 645 646 647 | listRepPtr->elemCount++; /* * Invalidate any old string representation since the list's internal * representation has changed. */ | | | 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 | listRepPtr->elemCount++; /* * Invalidate any old string representation since the list's internal * representation has changed. */ TclInvalidateStringRep(listPtr); return TCL_OK; } /* *---------------------------------------------------------------------- * * Tcl_ListObjIndex -- |
︙ | ︙ | |||
990 991 992 993 994 995 996 | listRepPtr->elemCount = numRequired; /* * Invalidate and free any old string representation since it no longer * reflects the list's internal representation. */ | | | 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 | listRepPtr->elemCount = numRequired; /* * Invalidate and free any old string representation since it no longer * reflects the list's internal representation. */ TclInvalidateStringRep(listPtr); return TCL_OK; } /* *---------------------------------------------------------------------- * * TclLindexList -- |
︙ | ︙ | |||
1433 1434 1435 1436 1437 1438 1439 | if (result == TCL_OK) { /* * We're going to store valuePtr, so spoil string reps * of all containing lists. */ | | | | 1433 1434 1435 1436 1437 1438 1439 1440 1441 1442 1443 1444 1445 1446 1447 1448 1449 1450 1451 1452 1453 1454 1455 1456 1457 1458 1459 1460 1461 1462 1463 1464 1465 1466 1467 1468 | if (result == TCL_OK) { /* * We're going to store valuePtr, so spoil string reps * of all containing lists. */ TclInvalidateStringRep(objPtr); } /* Clear away our intrep surgery mess */ chainPtr = (Tcl_Obj *) objPtr->internalRep.twoPtrValue.ptr2; objPtr->internalRep.twoPtrValue.ptr2 = NULL; } if (result != TCL_OK) { /* * Error return; message is already in interp. Clean up * any excess memory. */ if (retValuePtr != listPtr) { Tcl_DecrRefCount(retValuePtr); } return NULL; } /* Store valuePtr in proper sublist and return */ TclListObjSetElement(NULL, subListPtr, index, valuePtr); TclInvalidateStringRep(subListPtr); Tcl_IncrRefCount(retValuePtr); return retValuePtr; } /* *---------------------------------------------------------------------- * |
︙ | ︙ |
Changes to generic/tclStringObj.c.
︙ | ︙ | |||
737 738 739 740 741 742 743 | objPtr->typePtr = NULL; /* * Free any old string rep, then set the string rep to a copy of the * length bytes starting at "bytes". */ | | | 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 | objPtr->typePtr = NULL; /* * Free any old string rep, then set the string rep to a copy of the * length bytes starting at "bytes". */ TclInvalidateStringRep(objPtr); if (length < 0) { length = (bytes? strlen(bytes) : 0); } TclInitStringRep(objPtr, bytes, length); } /* |
︙ | ︙ | |||
811 812 813 814 815 816 817 | objPtr->bytes = ckrealloc((char *) objPtr->bytes, (unsigned) (length + 1)); } else { char *newBytes = ckalloc((unsigned) (length+1)); if (objPtr->bytes != NULL && objPtr->length != 0) { memcpy(newBytes, objPtr->bytes, (size_t) objPtr->length); | | | 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 | objPtr->bytes = ckrealloc((char *) objPtr->bytes, (unsigned) (length + 1)); } else { char *newBytes = ckalloc((unsigned) (length+1)); if (objPtr->bytes != NULL && objPtr->length != 0) { memcpy(newBytes, objPtr->bytes, (size_t) objPtr->length); TclInvalidateStringRep(objPtr); } objPtr->bytes = newBytes; } stringPtr->allocated = length; /* * Invalidate the unicode data. |
︙ | ︙ | |||
939 940 941 942 943 944 945 | } else { newBytes = attemptckalloc((unsigned) (length + 1)); if (newBytes == NULL) { return 0; } if (objPtr->bytes != NULL && objPtr->length != 0) { memcpy(newBytes, objPtr->bytes, (size_t) objPtr->length); | | | 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 | } else { newBytes = attemptckalloc((unsigned) (length + 1)); if (newBytes == NULL) { return 0; } if (objPtr->bytes != NULL && objPtr->length != 0) { memcpy(newBytes, objPtr->bytes, (size_t) objPtr->length); TclInvalidateStringRep(objPtr); } } objPtr->bytes = newBytes; stringPtr->allocated = length; /* * Invalidate the unicode data. |
︙ | ︙ | |||
1076 1077 1078 1079 1080 1081 1082 | stringPtr->numChars = numChars; stringPtr->uallocated = uallocated; stringPtr->hasUnicode = (numChars > 0); stringPtr->allocated = 0; memcpy(stringPtr->unicode, unicode, uallocated); stringPtr->unicode[numChars] = 0; | | | 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 | stringPtr->numChars = numChars; stringPtr->uallocated = uallocated; stringPtr->hasUnicode = (numChars > 0); stringPtr->allocated = 0; memcpy(stringPtr->unicode, unicode, uallocated); stringPtr->unicode[numChars] = 0; TclInvalidateStringRep(objPtr); objPtr->typePtr = &tclStringType; SET_STRING(objPtr, stringPtr); } /* *---------------------------------------------------------------------- * |
︙ | ︙ | |||
1407 1408 1409 1410 1411 1412 1413 | memcpy(stringPtr->unicode + stringPtr->numChars, unicode, appendNumChars * sizeof(Tcl_UniChar)); stringPtr->unicode[numChars] = 0; stringPtr->numChars = numChars; stringPtr->allocated = 0; | | | 1407 1408 1409 1410 1411 1412 1413 1414 1415 1416 1417 1418 1419 1420 1421 | memcpy(stringPtr->unicode + stringPtr->numChars, unicode, appendNumChars * sizeof(Tcl_UniChar)); stringPtr->unicode[numChars] = 0; stringPtr->numChars = numChars; stringPtr->allocated = 0; TclInvalidateStringRep(objPtr); } /* *---------------------------------------------------------------------- * * AppendUnicodeToUtfRep -- * |
︙ | ︙ | |||
2753 2754 2755 2756 2757 2758 2759 | } while (i < lastCharIdx) { Tcl_UniChar tmp = source[lastCharIdx]; source[lastCharIdx--] = source[i]; source[i++] = tmp; } | | | 2753 2754 2755 2756 2757 2758 2759 2760 2761 2762 2763 2764 2765 2766 2767 | } while (i < lastCharIdx) { Tcl_UniChar tmp = source[lastCharIdx]; source[lastCharIdx--] = source[i]; source[i++] = tmp; } TclInvalidateStringRep(objPtr); stringPtr->allocated = 0; return objPtr; } bytes = TclGetString(objPtr); if (Tcl_IsShared(objPtr)) { char *dest; |
︙ | ︙ |
Changes to macosx/tclMacOSXFCmd.c.
︙ | ︙ | |||
584 585 586 587 588 589 590 | static Tcl_Obj * NewOSTypeObj( const OSType osType) /* OSType used to initialize the new object. */ { Tcl_Obj *objPtr; TclNewObj(objPtr); | | | 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 | static Tcl_Obj * NewOSTypeObj( const OSType osType) /* OSType used to initialize the new object. */ { Tcl_Obj *objPtr; TclNewObj(objPtr); TclInvalidateStringRep(objPtr); objPtr->internalRep.longValue = (long) osType; objPtr->typePtr = &tclOSTypeType; return objPtr; } /* *---------------------------------------------------------------------- |
︙ | ︙ |