Differences From Artifact [f2e2222c23]:
- File
src/OFZIPArchive.m
— part of check-in
[3b43d51006]
at
2020-01-14 00:16:04
on branch trunk
— More consistent -[close] behavior
This means refusing to close twice, calling -[close] from -[dealloc] and
not calling -[cancelAsyncRequests].Calling -[cancelAsyncRequests] in -[close] is too dangerous, as -[close]
gets called by -[dealloc]: If the queue is the last reference to the
object, at the point where -[cancelAsyncRequests] removes it from the
queue, the object will start to deallocate and call into
-[cancelAsyncRequests] again, which is still in the middle of removing
it and now finds itself with an inconsistent state. (user: js, size: 23778) [annotate] [blame] [check-ins using]
To Artifact [bebc27a315]:
- File src/OFZIPArchive.m — part of check-in [1d6d3eb61c] at 2020-02-16 18:22:59 on branch trunk — OF{LHA,Tar,ZIP}Archive: Gracefully handle close (user: js, size: 23892) [annotate] [blame] [check-ins using] [more...]
︙ | ︙ | |||
400 401 402 403 404 405 406 | [old release]; objc_autoreleasePoolPop(pool); } - (void)of_closeLastReturnedStream { | > | > > > | 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 | [old release]; objc_autoreleasePoolPop(pool); } - (void)of_closeLastReturnedStream { @try { [_lastReturnedStream close]; } @catch (OFNotOpenException *e) { /* Might have already been closed by the user - that's fine. */ } if ((_mode == OF_ZIP_ARCHIVE_MODE_WRITE || _mode == OF_ZIP_ARCHIVE_MODE_APPEND) && [_lastReturnedStream isKindOfClass: [OFZIPArchiveFileWriteStream class]]) { OFZIPArchiveFileWriteStream *stream = (OFZIPArchiveFileWriteStream *)_lastReturnedStream; |
︙ | ︙ |