Differences From Artifact [f8e93c416d]:
- File
src/OFGZIPStream.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: 7342) [annotate] [blame] [check-ins using] [more...]
To Artifact [42379805f3]:
- File src/OFGZIPStream.m — part of check-in [da5f126be3] at 2020-06-02 21:21:50 on branch set-mtime — OFGZIPStream: Add properties for OS and mtime (user: js, size: 7560) [annotate] [blame] [check-ins using] [more...]
| ︙ | ︙ | |||
26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
#import "OFChecksumMismatchException.h"
#import "OFInvalidFormatException.h"
#import "OFNotImplementedException.h"
#import "OFNotOpenException.h"
#import "OFTruncatedDataException.h"
@implementation OFGZIPStream
+ (instancetype)streamWithStream: (OFStream *)stream
mode: (OFString *)mode
{
return [[[self alloc] initWithStream: stream
mode: mode] autorelease];
}
| > > > | 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
#import "OFChecksumMismatchException.h"
#import "OFInvalidFormatException.h"
#import "OFNotImplementedException.h"
#import "OFNotOpenException.h"
#import "OFTruncatedDataException.h"
@implementation OFGZIPStream
@synthesize operatingSystemMadeOn = _operatingSystemMadeOn;
@synthesize modificationDate = _modificationDate;
+ (instancetype)streamWithStream: (OFStream *)stream
mode: (OFString *)mode
{
return [[[self alloc] initWithStream: stream
mode: mode] autorelease];
}
|
| ︙ | ︙ | |||
50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
@try {
if (![mode isEqual: @"r"])
@throw [OFNotImplementedException
exceptionWithSelector: _cmd
object: nil];
_stream = [stream retain];
_CRC32 = ~0;
} @catch (id e) {
[self release];
@throw e;
}
return self;
| > > | 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 |
@try {
if (![mode isEqual: @"r"])
@throw [OFNotImplementedException
exceptionWithSelector: _cmd
object: nil];
_stream = [stream retain];
_operatingSystemMadeOn =
OF_GZIP_STREAM_OPERATING_SYSTEM_UNKNOWN;
_CRC32 = ~0;
} @catch (id e) {
[self release];
@throw e;
}
return self;
|
| ︙ | ︙ | |||
138 139 140 141 142 143 144 | if ([_stream readIntoBuffer: &byte length: 1] < 1) return 0; _extraFlags = byte; _state++; break; | | | | 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 |
if ([_stream readIntoBuffer: &byte
length: 1] < 1)
return 0;
_extraFlags = byte;
_state++;
break;
case OF_GZIP_STREAM_OPERATING_SYSTEM:
if ([_stream readIntoBuffer: &byte
length: 1] < 1)
return 0;
_operatingSystemMadeOn = byte;
_state++;
break;
case OF_GZIP_STREAM_EXTRA_LENGTH:
if (!(_flags & OF_GZIP_STREAM_FLAG_EXTRA)) {
_state += 2;
break;
}
|
| ︙ | ︙ |