Differences From Artifact [806937cb0f]:
- File src/OFSet.m — part of check-in [f8b53e2f6b] at 2019-06-20 23:45:11 on branch trunk — OFSet: Add default method for fast enumeration (user: js, size: 8702) [annotate] [blame] [check-ins using]
To Artifact [62481ad29d]:
- File
src/OFSet.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: 8525) [annotate] [blame] [check-ins using]
︙ | ︙ | |||
257 258 259 260 261 262 263 | { OFEnumerator *enumerator; int i; memcpy(&enumerator, state->extra, sizeof(enumerator)); if (enumerator == nil) { | < < | < < < < < | < < < < | 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 | { 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 = (unsigned long *)self; for (i = 0; i < count; i++) { id object = [enumerator nextObject]; if (object == nil) return i; objects[i] = object; } return i; } |
︙ | ︙ |