Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | merge trunk |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | novem |
Files: | files | file ages | folders |
SHA1: |
74dc2e68f8a00e6b3b1a6a6d58477617 |
User & Date: | jan.nijtmans 2013-02-07 13:57:01 |
Context
2013-02-07
| ||
14:22 | put braces around all macro parameters check-in: 4537584c92 user: jan.nijtmans tags: novem | |
13:57 | merge trunk check-in: 74dc2e68f8 user: jan.nijtmans tags: novem | |
13:55 | Tcl_InvalidateStringRep -> TclInvalidateStringRep check-in: b0db125f02 user: jan.nijtmans tags: trunk | |
10:15 | merge trunk check-in: 3d2d02771d user: jan.nijtmans tags: novem | |
Changes
Changes to generic/tclBinary.c.
︙ | ︙ | |||
322 323 324 325 326 327 328 | { ByteArray *byteArrayPtr; if (Tcl_IsShared(objPtr)) { Tcl_Panic("%s called with shared object", "Tcl_SetByteArrayObj"); } TclFreeIntRep(objPtr); | | | 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 | { 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 = ckalloc(BYTEARRAY_SIZE(length)); byteArrayPtr->used = length; byteArrayPtr->allocated = length; |
︙ | ︙ | |||
417 418 419 420 421 422 423 | byteArrayPtr = GET_BYTEARRAY(objPtr); if (length > byteArrayPtr->allocated) { byteArrayPtr = ckrealloc(byteArrayPtr, BYTEARRAY_SIZE(length)); byteArrayPtr->allocated = length; SET_BYTEARRAY(objPtr, byteArrayPtr); } | | | 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 | byteArrayPtr = GET_BYTEARRAY(objPtr); if (length > byteArrayPtr->allocated) { byteArrayPtr = ckrealloc(byteArrayPtr, BYTEARRAY_SIZE(length)); byteArrayPtr->allocated = length; SET_BYTEARRAY(objPtr, byteArrayPtr); } TclInvalidateStringRep(objPtr); byteArrayPtr->used = length; return byteArrayPtr->bytes; } /* *---------------------------------------------------------------------- * |
︙ | ︙ | |||
688 689 690 691 692 693 694 | /* * Do the append if there's any point. */ if (len > 0) { memcpy(byteArrayPtr->bytes + byteArrayPtr->used, bytes, len); byteArrayPtr->used += len; | | | 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 | /* * Do the append if there's any point. */ if (len > 0) { memcpy(byteArrayPtr->bytes + byteArrayPtr->used, bytes, len); byteArrayPtr->used += len; TclInvalidateStringRep(objPtr); } } /* *---------------------------------------------------------------------- * * TclInitBinaryCmd -- |
︙ | ︙ |
Changes to generic/tclDictObj.c.
︙ | ︙ | |||
864 865 866 867 868 869 870 | static void InvalidateDictChain( Tcl_Obj *dictObj) { Dict *dict = dictObj->internalRep.twoPtrValue.ptr1; do { | | | 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 | 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; |
︙ | ︙ | |||
918 919 920 921 922 923 924 | if (result != TCL_OK) { return result; } } if (dictPtr->bytes != NULL) { | | | 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 | 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); |
︙ | ︙ | |||
1020 1021 1022 1023 1024 1025 1026 | int result = SetDictFromAny(interp, dictPtr); if (result != TCL_OK) { return result; } } if (dictPtr->bytes != NULL) { | | | 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 | 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; } |
︙ | ︙ | |||
1388 1389 1390 1391 1392 1393 1394 | return Tcl_DbNewDictObj("unknown", 0); #else /* !TCL_MEM_DEBUG */ Tcl_Obj *dictPtr; Dict *dict; TclNewObj(dictPtr); | | | 1388 1389 1390 1391 1392 1393 1394 1395 1396 1397 1398 1399 1400 1401 1402 | return Tcl_DbNewDictObj("unknown", 0); #else /* !TCL_MEM_DEBUG */ Tcl_Obj *dictPtr; Dict *dict; TclNewObj(dictPtr); TclInvalidateStringRep(dictPtr); dict = ckalloc(sizeof(Dict)); InitChainTable(dict); dict->epoch = 0; dict->chain = NULL; dict->refcount = 1; dictPtr->internalRep.twoPtrValue.ptr1 = dict; dictPtr->typePtr = &tclDictType; |
︙ | ︙ | |||
1437 1438 1439 1440 1441 1442 1443 | int line) { #ifdef TCL_MEM_DEBUG Tcl_Obj *dictPtr; Dict *dict; TclDbNewObj(dictPtr, file, line); | | | 1437 1438 1439 1440 1441 1442 1443 1444 1445 1446 1447 1448 1449 1450 1451 | int line) { #ifdef TCL_MEM_DEBUG Tcl_Obj *dictPtr; Dict *dict; TclDbNewObj(dictPtr, file, line); TclInvalidateStringRep(dictPtr); dict = ckalloc(sizeof(Dict)); InitChainTable(dict); dict->epoch = 0; dict->chain = NULL; dict->refcount = 1; dictPtr->internalRep.twoPtrValue.ptr1 = dict; dictPtr->typePtr = &tclDictType; |
︙ | ︙ | |||
2170 2171 2172 2173 2174 2175 2176 | Tcl_IncrRefCount(incrPtr); code = TclIncrObj(interp, valuePtr, incrPtr); Tcl_DecrRefCount(incrPtr); } } if (code == TCL_OK) { | | | 2170 2171 2172 2173 2174 2175 2176 2177 2178 2179 2180 2181 2182 2183 2184 | 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); } |
︙ | ︙ | |||
2259 2260 2261 2262 2263 2264 2265 | } } } if (allocatedValue) { Tcl_DictObjPut(interp, dictPtr, objv[2], valuePtr); } else if (dictPtr->bytes != NULL) { | | | 2259 2260 2261 2262 2263 2264 2265 2266 2267 2268 2269 2270 2271 2272 2273 | } } } 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/tclListObj.c.
︙ | ︙ | |||
233 234 235 236 237 238 239 | listRepPtr = NewListIntRep(objc, objv, 1); /* * Now create the object. */ | | | 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 | listRepPtr = NewListIntRep(objc, objv, 1); /* * Now create the object. */ TclInvalidateStringRep(listPtr); ListSetIntRep(listPtr, listRepPtr); return listPtr; } #endif /* if TCL_MEM_DEBUG */ /* *---------------------------------------------------------------------- |
︙ | ︙ | |||
298 299 300 301 302 303 304 | listRepPtr = NewListIntRep(objc, objv, 1); /* * Now create the object. */ | | | 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 | listRepPtr = NewListIntRep(objc, objv, 1); /* * Now create the object. */ TclInvalidateStringRep(listPtr); ListSetIntRep(listPtr, listRepPtr); return listPtr; } #else /* if not TCL_MEM_DEBUG */ |
︙ | ︙ | |||
358 359 360 361 362 363 364 | } /* * Free any old string rep and any internal rep for the old type. */ TclFreeIntRep(objPtr); | | | 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 | } /* * Free any old string rep and any internal rep for the old type. */ TclFreeIntRep(objPtr); 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. */ |
︙ | ︙ | |||
693 694 695 696 697 698 699 | listRepPtr->elemCount++; /* * Invalidate any old string representation since the list's internal * representation has changed. */ | | | 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 | listRepPtr->elemCount++; /* * Invalidate any old string representation since the list's internal * representation has changed. */ TclInvalidateStringRep(listPtr); return TCL_OK; } /* *---------------------------------------------------------------------- * * Tcl_ListObjIndex -- |
︙ | ︙ | |||
1049 1050 1051 1052 1053 1054 1055 | listRepPtr->elemCount = numRequired; /* * Invalidate and free any old string representation since it no longer * reflects the list's internal representation. */ | | | 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 | 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 -- |
︙ | ︙ | |||
1515 1516 1517 1518 1519 1520 1521 | if (result == TCL_OK) { /* * We're going to store valuePtr, so spoil string reps of all * containing lists. */ | | | 1515 1516 1517 1518 1519 1520 1521 1522 1523 1524 1525 1526 1527 1528 1529 | 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 = objPtr->internalRep.twoPtrValue.ptr2; |
︙ | ︙ | |||
1551 1552 1553 1554 1555 1556 1557 | len = -1; TclListObjLength(NULL, subListPtr, &len); if (index == len) { Tcl_ListObjAppendElement(NULL, subListPtr, valuePtr); } else { TclListObjSetElement(NULL, subListPtr, index, valuePtr); } | | | 1551 1552 1553 1554 1555 1556 1557 1558 1559 1560 1561 1562 1563 1564 1565 | len = -1; TclListObjLength(NULL, subListPtr, &len); if (index == len) { Tcl_ListObjAppendElement(NULL, subListPtr, valuePtr); } else { TclListObjSetElement(NULL, subListPtr, index, valuePtr); } TclInvalidateStringRep(subListPtr); Tcl_IncrRefCount(retValuePtr); return retValuePtr; } /* *---------------------------------------------------------------------- * |
︙ | ︙ |
Changes to macosx/tclMacOSXFCmd.c.
︙ | ︙ | |||
604 605 606 607 608 609 610 | NewOSTypeObj( const OSType osType) /* OSType used to initialize the new * object. */ { Tcl_Obj *objPtr; TclNewObj(objPtr); | | | 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 | 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; } /* *---------------------------------------------------------------------- |
︙ | ︙ |