Differences From Artifact [c70541cdfe]:
- File src/OFDictionary.m — part of check-in [eeec8af349] at 2019-06-19 00:36:35 on branch trunk — OFDictionary: Add default for fast enumeration (user: js, size: 19641) [annotate] [blame] [check-ins using]
To Artifact [af6bd066da]:
- File
src/OFDictionary.m
— part of check-in
[13864f512c]
at
2019-06-20 23:47:54
on branch trunk
— Avoid retaining enumerator during fast enumeration
This avoids leaking the enumerator when terminating the fast enumeration
early. (user: js, size: 19464) [annotate] [blame] [check-ins using]
︙ | ︙ | |||
524 525 526 527 528 529 530 | { OFEnumerator *enumerator; int i; memcpy(&enumerator, state->extra, sizeof(enumerator)); if (enumerator == nil) { | < < | < < < < < | < < < < | 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 | { 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 = (unsigned long *)self; for (i = 0; i < count; i++) { id object = [enumerator nextObject]; if (object == nil) return i; objects[i] = object; } return i; } |
︙ | ︙ |