Overview
| Comment: | Never set mutationsPtr to self
The Apple runtime can store the retain count in isa, so |
|---|---|
| Downloads: | Tarball | ZIP archive | SQL archive |
| Timelines: | family | ancestors | descendants | both | trunk |
| Files: | files | file ages | folders |
| SHA3-256: |
27d8eb922d6b61de8a6929c9f91e8491 |
| User & Date: | js on 2023-07-15 23:44:25 |
| Other Links: | manifest | tags |
Context
|
2023-07-16
| ||
| 17:53 | OFUNIXDatagramSocket: Allow binding to nil path (check-in: 36c65b8468 user: js tags: trunk) | |
|
2023-07-15
| ||
| 23:44 | Never set mutationsPtr to self (check-in: 27d8eb922d user: js tags: trunk) | |
| 21:55 | Reduce the diff to the "amiga-library" branch (check-in: 3d623abb29 user: js tags: trunk) | |
Changes
Modified src/OFAdjacentArray.m from [3d57d1e63c] to [6443cda90f].
| ︙ | ︙ | |||
282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 |
return hash;
}
- (int)countByEnumeratingWithState: (OFFastEnumerationState *)state
objects: (id *)objects
count: (int)count_
{
size_t count = _array.count;
if (count > INT_MAX)
/*
* Use the implementation from OFArray, which is slower, but can
* enumerate in chunks.
*/
return [super countByEnumeratingWithState: state
objects: objects
count: count_];
if (state->state >= count)
return 0;
state->state = (unsigned long)count;
state->itemsPtr = (id *)_array.items;
| > | | 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 |
return hash;
}
- (int)countByEnumeratingWithState: (OFFastEnumerationState *)state
objects: (id *)objects
count: (int)count_
{
static unsigned long dummyMutations;
size_t count = _array.count;
if (count > INT_MAX)
/*
* Use the implementation from OFArray, which is slower, but can
* enumerate in chunks.
*/
return [super countByEnumeratingWithState: state
objects: objects
count: count_];
if (state->state >= count)
return 0;
state->state = (unsigned long)count;
state->itemsPtr = (id *)_array.items;
state->mutationsPtr = &dummyMutations;
return (int)count;
}
#ifdef OF_HAVE_BLOCKS
- (void)enumerateObjectsUsingBlock: (OFArrayEnumerationBlock)block
{
|
| ︙ | ︙ |
Modified src/OFArray.m from [79e2c56f24] to [b025a39cbb].
| ︙ | ︙ | |||
717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 |
return new;
}
- (int)countByEnumeratingWithState: (OFFastEnumerationState *)state
objects: (id *)objects
count: (int)count
{
OFRange range = OFMakeRange(state->state, count);
if (range.length > SIZE_MAX - range.location)
@throw [OFOutOfRangeException exception];
if (range.location + range.length > self.count)
range.length = self.count - range.location;
[self getObjects: objects inRange: range];
if (range.location + range.length > ULONG_MAX)
@throw [OFOutOfRangeException exception];
state->state = (unsigned long)(range.location + range.length);
state->itemsPtr = objects;
| > | | 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 |
return new;
}
- (int)countByEnumeratingWithState: (OFFastEnumerationState *)state
objects: (id *)objects
count: (int)count
{
static unsigned long dummyMutations;
OFRange range = OFMakeRange(state->state, count);
if (range.length > SIZE_MAX - range.location)
@throw [OFOutOfRangeException exception];
if (range.location + range.length > self.count)
range.length = self.count - range.location;
[self getObjects: objects inRange: range];
if (range.location + range.length > ULONG_MAX)
@throw [OFOutOfRangeException exception];
state->state = (unsigned long)(range.location + range.length);
state->itemsPtr = objects;
state->mutationsPtr = &dummyMutations;
return (int)range.length;
}
- (OFEnumerator *)objectEnumerator
{
return [[[OFArrayEnumerator alloc] initWithArray: self
|
| ︙ | ︙ |
Modified src/OFDictionary.m from [12d43fb634] to [34eb84dfb7].
| ︙ | ︙ | |||
427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 |
initWithDictionary: self] autorelease];
}
- (int)countByEnumeratingWithState: (OFFastEnumerationState *)state
objects: (id *)objects
count: (int)count
{
OFEnumerator *enumerator;
int i;
memcpy(&enumerator, state->extra, sizeof(enumerator));
if (enumerator == nil) {
enumerator = [self keyEnumerator];
memcpy(state->extra, &enumerator, sizeof(enumerator));
}
state->itemsPtr = objects;
| > | | 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 |
initWithDictionary: self] autorelease];
}
- (int)countByEnumeratingWithState: (OFFastEnumerationState *)state
objects: (id *)objects
count: (int)count
{
static unsigned long dummyMutations;
OFEnumerator *enumerator;
int i;
memcpy(&enumerator, state->extra, sizeof(enumerator));
if (enumerator == nil) {
enumerator = [self keyEnumerator];
memcpy(state->extra, &enumerator, sizeof(enumerator));
}
state->itemsPtr = objects;
state->mutationsPtr = &dummyMutations;
for (i = 0; i < count; i++) {
id object = [enumerator nextObject];
if (object == nil)
return i;
|
| ︙ | ︙ |
Modified src/OFEnumerator.m from [ad753eb610] to [cc5c16696d].
| ︙ | ︙ | |||
57 58 59 60 61 62 63 64 65 66 |
return ret;
}
- (int)countByEnumeratingWithState: (OFFastEnumerationState *)state
objects: (id *)objects
count: (int)count
{
int i;
state->itemsPtr = objects;
| > | | 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 |
return ret;
}
- (int)countByEnumeratingWithState: (OFFastEnumerationState *)state
objects: (id *)objects
count: (int)count
{
static unsigned long dummyMutations;
int i;
state->itemsPtr = objects;
state->mutationsPtr = &dummyMutations;
for (i = 0; i < count; i++) {
id object = [self nextObject];
if (object == nil)
return i;
objects[i] = object;
}
return i;
}
@end
|
Modified src/OFSet.m from [a5c8b76a0d] to [bebf07d610].
| ︙ | ︙ | |||
230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 |
OF_UNRECOGNIZED_SELECTOR
}
- (int)countByEnumeratingWithState: (OFFastEnumerationState *)state
objects: (id *)objects
count: (int)count
{
OFEnumerator *enumerator;
int i;
memcpy(&enumerator, state->extra, sizeof(enumerator));
if (enumerator == nil) {
enumerator = [self objectEnumerator];
memcpy(state->extra, &enumerator, sizeof(enumerator));
}
state->itemsPtr = objects;
| > | | 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 |
OF_UNRECOGNIZED_SELECTOR
}
- (int)countByEnumeratingWithState: (OFFastEnumerationState *)state
objects: (id *)objects
count: (int)count
{
static unsigned long dummyMutations;
OFEnumerator *enumerator;
int i;
memcpy(&enumerator, state->extra, sizeof(enumerator));
if (enumerator == nil) {
enumerator = [self objectEnumerator];
memcpy(state->extra, &enumerator, sizeof(enumerator));
}
state->itemsPtr = objects;
state->mutationsPtr = &dummyMutations;
for (i = 0; i < count; i++) {
id object = [enumerator nextObject];
if (object == nil)
return i;
|
| ︙ | ︙ |