Overview
Comment: | OF{LHA,Tar,ZIP}Archive: Gracefully handle close |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA3-256: |
1d6d3eb61cbc1a79f7d283943e5cdf96 |
User & Date: | js on 2020-02-16 18:22:59 |
Other Links: | manifest | tags |
Context
2020-02-16
| ||
21:27 | Disable compiler TLS on AmigaOS (m68k & PPC) check-in: fe8d99125e user: js tags: trunk | |
18:22 | OF{LHA,Tar,ZIP}Archive: Gracefully handle close check-in: 1d6d3eb61c user: js tags: trunk | |
2020-01-25
| ||
20:04 | tlskey.m: Use hashtable from runtime on AmigaOS check-in: 49aee5736e user: js tags: trunk | |
Changes
Modified src/OFLHAArchive.m from [a09f2c8a17] to [a8a54167d4].
︙ | ︙ | |||
164 165 166 167 168 169 170 | char header[21]; size_t headerLen; if (_mode != OF_LHA_ARCHIVE_MODE_READ) @throw [OFInvalidArgumentException exception]; [(OFLHAArchiveFileReadStream *)_lastReturnedStream of_skip]; | > | > > > | 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 | char header[21]; size_t headerLen; if (_mode != OF_LHA_ARCHIVE_MODE_READ) @throw [OFInvalidArgumentException exception]; [(OFLHAArchiveFileReadStream *)_lastReturnedStream of_skip]; @try { [_lastReturnedStream close]; } @catch (OFNotOpenException *e) { /* Might have already been closed by the user - that's fine. */ } [_lastReturnedStream release]; _lastReturnedStream = nil; for (headerLen = 0; headerLen < 21;) { if (_stream.atEndOfStream) { if (headerLen == 0) return nil; |
︙ | ︙ | |||
223 224 225 226 227 228 229 | compressionMethod = entry.compressionMethod; if (![compressionMethod isEqual: @"-lh0-"] && ![compressionMethod isEqual: @"-lhd-"]) @throw [OFNotImplementedException exceptionWithSelector: _cmd object: self]; | > | > > > > | > > > | 227 228 229 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 257 258 259 260 261 262 263 264 265 266 267 | compressionMethod = entry.compressionMethod; if (![compressionMethod isEqual: @"-lh0-"] && ![compressionMethod isEqual: @"-lhd-"]) @throw [OFNotImplementedException exceptionWithSelector: _cmd object: self]; @try { [_lastReturnedStream close]; } @catch (OFNotOpenException *e) { /* Might have already been closed by the user - that's fine. */ } [_lastReturnedStream release]; _lastReturnedStream = nil; _lastReturnedStream = [[OFLHAArchiveFileWriteStream alloc] of_initWithStream: (OFSeekableStream *)_stream entry: entry encoding: _encoding]; return [[(OFLHAArchiveFileWriteStream *)_lastReturnedStream retain] autorelease]; } - (void)close { if (_stream == nil) @throw [OFNotOpenException exceptionWithObject: self]; @try { [_lastReturnedStream close]; } @catch (OFNotOpenException *e) { /* Might have already been closed by the user - that's fine. */ } [_lastReturnedStream release]; _lastReturnedStream = nil; [_stream release]; _stream = nil; } @end |
︙ | ︙ |
Modified src/OFTarArchive.m from [9fd5fb5c63] to [fe80dcdcf2].
︙ | ︙ | |||
174 175 176 177 178 179 180 | } buffer; bool empty = true; if (_mode != OF_TAR_ARCHIVE_MODE_READ) @throw [OFInvalidArgumentException exception]; [(OFTarArchiveFileReadStream *)_lastReturnedStream of_skip]; | > | > > > | 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 | } buffer; bool empty = true; if (_mode != OF_TAR_ARCHIVE_MODE_READ) @throw [OFInvalidArgumentException exception]; [(OFTarArchiveFileReadStream *)_lastReturnedStream of_skip]; @try { [_lastReturnedStream close]; } @catch (OFNotOpenException *e) { /* Might have already been closed by the user - that's fine. */ } [_lastReturnedStream release]; _lastReturnedStream = nil; if (_stream.atEndOfStream) return nil; [_stream readIntoBuffer: buffer.c |
︙ | ︙ | |||
233 234 235 236 237 238 239 | if (_mode != OF_TAR_ARCHIVE_MODE_WRITE && _mode != OF_TAR_ARCHIVE_MODE_APPEND) @throw [OFInvalidArgumentException exception]; pool = objc_autoreleasePoolPush(); | > | > > > | 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 | if (_mode != OF_TAR_ARCHIVE_MODE_WRITE && _mode != OF_TAR_ARCHIVE_MODE_APPEND) @throw [OFInvalidArgumentException exception]; pool = objc_autoreleasePoolPush(); @try { [_lastReturnedStream close]; } @catch (OFNotOpenException *e) { /* Might have already been closed by the user - that's fine. */ } [_lastReturnedStream release]; _lastReturnedStream = nil; [entry of_writeToStream: _stream encoding: _encoding]; _lastReturnedStream = [[OFTarArchiveFileWriteStream alloc] |
︙ | ︙ | |||
255 256 257 258 259 260 261 | } - (void)close { if (_stream == nil) return; | > | > > > | 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 | } - (void)close { if (_stream == nil) return; @try { [_lastReturnedStream close]; } @catch (OFNotOpenException *e) { /* Might have already been closed by the user - that's fine. */ } [_lastReturnedStream release]; _lastReturnedStream = nil; if (_mode == OF_TAR_ARCHIVE_MODE_WRITE || _mode == OF_TAR_ARCHIVE_MODE_APPEND) { char buffer[1024]; memset(buffer, '\0', 1024); |
︙ | ︙ |
Modified src/OFZIPArchive.m from [f2e2222c23] to [bebc27a315].
︙ | ︙ | |||
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; |
︙ | ︙ |