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 | 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; |
︙ |
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 | 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; |
︙ |
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 | 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; |
︙ |
Modified src/OFEnumerator.m from [ad753eb610] to [cc5c16696d].
︙ | |||
57 58 59 60 61 62 63 64 65 66 | 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 | + - + | return ret; } - (int)countByEnumeratingWithState: (OFFastEnumerationState *)state objects: (id *)objects count: (int)count { static unsigned long dummyMutations; int i; state->itemsPtr = objects; |
︙ |
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 | 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; |
︙ |