@@ -835,10 +835,20 @@ } return self; } #endif + +- (instancetype)init +{ + OF_INVALID_INIT_METHOD +} + +- (instancetype)of_init +{ + return [super init]; +} - (instancetype)initWithSerialization: (OFXMLElement *)element { void *pool = objc_autoreleasePoolPush(); OFString *stringValue; @@ -885,11 +895,11 @@ if (![object isKindOfClass: [OFURI class]]) return false; URI = object; - if (URI->_scheme != _scheme && ![URI->_scheme isEqual: _scheme]) + if (![URI->_scheme isEqual: _scheme]) return false; if (URI->_percentEncodedHost != _percentEncodedHost && ![URI->_percentEncodedHost isEqual: _percentEncodedHost]) return false; if (URI->_port != _port && ![URI->_port isEqual: _port]) @@ -898,12 +908,11 @@ ![URI->_percentEncodedUser isEqual: _percentEncodedUser]) return false; if (URI->_percentEncodedPassword != _percentEncodedPassword && ![URI->_percentEncodedPassword isEqual: _percentEncodedPassword]) return false; - if (URI->_percentEncodedPath != _percentEncodedPath && - ![URI->_percentEncodedPath isEqual: _percentEncodedPath]) + if (![URI->_percentEncodedPath isEqual: _percentEncodedPath]) return false; if (URI->_percentEncodedQuery != _percentEncodedQuery && ![URI->_percentEncodedQuery isEqual: _percentEncodedQuery]) return false; if (URI->_percentEncodedFragment != _percentEncodedFragment && @@ -1048,15 +1057,10 @@ OFString *path = _percentEncodedPath; const char *UTF8String, *lastComponent; size_t length; OFString *ret; - if (path == nil) { - objc_autoreleasePoolPop(pool); - return nil; - } - if ([path isEqual: @"/"]) { objc_autoreleasePoolPop(pool); return @"/"; } @@ -1146,14 +1150,13 @@ return [self retain]; } - (id)mutableCopy { - OFURI *copy = [[OFMutableURI alloc] init]; + OFURI *copy = [[OFMutableURI alloc] initWithScheme: _scheme]; @try { - copy->_scheme = [_scheme copy]; copy->_percentEncodedHost = [_percentEncodedHost copy]; copy->_port = [_port copy]; copy->_percentEncodedUser = [_percentEncodedUser copy]; copy->_percentEncodedPassword = [_percentEncodedPassword copy]; copy->_percentEncodedPath = [_percentEncodedPath copy]; @@ -1187,12 +1190,11 @@ if (_percentEncodedHost != nil) [ret appendString: _percentEncodedHost]; if (_port != nil) [ret appendFormat: @":%@", _port]; - if (_percentEncodedPath != nil) - [ret appendString: _percentEncodedPath]; + [ret appendString: _percentEncodedPath]; if (_percentEncodedQuery != nil) [ret appendFormat: @"?%@", _percentEncodedQuery]; if (_percentEncodedFragment != nil)