Index: src/OFArray.m ================================================================== --- src/OFArray.m +++ src/OFArray.m @@ -508,10 +508,13 @@ - (bool)isEqual: (id)object { /* FIXME: Optimize (for example, buffer of 16 for each) */ OFArray *otherArray; size_t count; + + if (object == self) + return true; if (![object isKindOfClass: [OFArray class]]) return false; otherArray = object; Index: src/OFArray_adjacent.m ================================================================== --- src/OFArray_adjacent.m +++ src/OFArray_adjacent.m @@ -280,10 +280,13 @@ - (bool)isEqual: (id)object { OFArray *otherArray; id const *objects, *otherObjects; size_t count; + + if (object == self) + return true; if (![object isKindOfClass: [OFArray_adjacent class]] && ![object isKindOfClass: [OFMutableArray_adjacent class]]) return [super isEqual: object]; Index: src/OFArray_adjacentSubarray.m ================================================================== --- src/OFArray_adjacentSubarray.m +++ src/OFArray_adjacentSubarray.m @@ -28,10 +28,13 @@ - (bool)isEqual: (id)object { OFArray *otherArray; id const *objects, *otherObjects; + + if (object == self) + return true; if (![object isKindOfClass: [OFArray_adjacent class]] && ![object isKindOfClass: [OFMutableArray_adjacent class]]) return [super isEqual: object]; Index: src/OFData.m ================================================================== --- src/OFData.m +++ src/OFData.m @@ -416,10 +416,13 @@ } - (bool)isEqual: (id)object { OFData *data; + + if (object == self) + return true; if (![object isKindOfClass: [OFData class]]) return false; data = object; Index: src/OFDate.m ================================================================== --- src/OFDate.m +++ src/OFDate.m @@ -355,10 +355,13 @@ } - (bool)isEqual: (id)object { OFDate *otherDate; + + if (object == self) + return true; if (![object isKindOfClass: [OFDate class]]) return false; otherDate = object; Index: src/OFDictionary.m ================================================================== --- src/OFDictionary.m +++ src/OFDictionary.m @@ -406,10 +406,13 @@ { OFDictionary *otherDictionary; void *pool; OFEnumerator *keyEnumerator, *objectEnumerator; id key; + + if (object == self) + return true; if (![object isKindOfClass: [OFDictionary class]]) return false; otherDictionary = object; Index: src/OFDictionary_hashtable.m ================================================================== --- src/OFDictionary_hashtable.m +++ src/OFDictionary_hashtable.m @@ -308,21 +308,24 @@ - (size_t)count { return [_mapTable count]; } -- (bool)isEqual: (id)dictionary -{ - OFDictionary_hashtable *dictionary_; - - if (![dictionary isKindOfClass: [OFDictionary_hashtable class]] && - ![dictionary isKindOfClass: [OFMutableDictionary_hashtable class]]) - return [super isEqual: dictionary]; - - dictionary_ = (OFDictionary_hashtable *)dictionary; - - return [dictionary_->_mapTable isEqual: _mapTable]; +- (bool)isEqual: (id)object +{ + OFDictionary_hashtable *dictionary; + + if (object == self) + return true; + + if (![object isKindOfClass: [OFDictionary_hashtable class]] && + ![object isKindOfClass: [OFMutableDictionary_hashtable class]]) + return [super isEqual: object]; + + dictionary = (OFDictionary_hashtable *)object; + + return [dictionary->_mapTable isEqual: _mapTable]; } - (bool)containsObject: (id)object { return [_mapTable containsObject: object]; Index: src/OFHTTPCookie.m ================================================================== --- src/OFHTTPCookie.m +++ src/OFHTTPCookie.m @@ -326,35 +326,39 @@ [_extensions release]; [super dealloc]; } -- (bool)isEqual: (id)otherObject -{ - OFHTTPCookie *other; - - if (![otherObject isKindOfClass: [OFHTTPCookie class]]) - return false; - - other = otherObject; - - if (![_name isEqual: other->_name]) - return false; - if (![_value isEqual: other->_value]) - return false; - if (_domain != other->_domain && ![_domain isEqual: other->_domain]) - return false; - if (_path != other->_path && ![_path isEqual: other->_path]) - return false; - if (_expires != other->_expires && ![_expires isEqual: other->_expires]) - return false; - if (_secure != other->_secure) - return false; - if (_HTTPOnly != other->_HTTPOnly) - return false; - if (_extensions != other->_extensions && - ![_extensions isEqual: other->_extensions]) +- (bool)isEqual: (id)object +{ + OFHTTPCookie *cookie; + + if (object == self) + return true; + + if (![object isKindOfClass: [OFHTTPCookie class]]) + return false; + + cookie = object; + + if (![cookie->_name isEqual: _name]) + return false; + if (![cookie->_value isEqual: _value]) + return false; + if (cookie->_domain != _domain && ![cookie->_domain isEqual: _domain]) + return false; + if (cookie->_path != _path && ![cookie->_path isEqual: _path]) + return false; + if (cookie->_expires != _expires && + ![cookie->_expires isEqual: _expires]) + return false; + if (cookie->_secure != _secure) + return false; + if (cookie->_HTTPOnly != _HTTPOnly) + return false; + if (cookie->_extensions != _extensions && + ![cookie->_extensions isEqual: _extensions]) return false; return true; } Index: src/OFHTTPRequest.m ================================================================== --- src/OFHTTPRequest.m +++ src/OFHTTPRequest.m @@ -146,10 +146,13 @@ } - (bool)isEqual: (id)object { OFHTTPRequest *request; + + if (object == self) + return true; if (![object isKindOfClass: [OFHTTPRequest class]]) return false; request = object; Index: src/OFIntrospection.m ================================================================== --- src/OFIntrospection.m +++ src/OFIntrospection.m @@ -84,10 +84,13 @@ } - (bool)isEqual: (id)object { OFMethod *method; + + if (object == self) + return true; if (![object isKindOfClass: [OFMethod class]]) return false; method = object; @@ -319,10 +322,13 @@ } - (bool)isEqual: (id)object { OFProperty *otherProperty; + + if (object == self) + return true; if ([object isKindOfClass: [OFProperty class]]) return false; otherProperty = object; Index: src/OFList.m ================================================================== --- src/OFList.m +++ src/OFList.m @@ -203,10 +203,13 @@ - (bool)isEqual: (id)object { OFList *list; of_list_object_t *iter, *iter2; + + if (object == self) + return true; if (![object isKindOfClass: [OFList class]]) return false; list = object; Index: src/OFMapTable.m ================================================================== --- src/OFMapTable.m +++ src/OFMapTable.m @@ -194,10 +194,13 @@ } - (bool)isEqual: (id)object { OFMapTable *mapTable; + + if (object == self) + return true; if (![object isKindOfClass: [OFMapTable class]]) return false; mapTable = object; Index: src/OFMessagePackExtension.m ================================================================== --- src/OFMessagePackExtension.m +++ src/OFMessagePackExtension.m @@ -159,10 +159,13 @@ } - (bool)isEqual: (id)object { OFMessagePackExtension *extension; + + if (object == self) + return true; if (![object isKindOfClass: [OFMessagePackExtension class]]) return false; extension = object; Index: src/OFNumber.m ================================================================== --- src/OFNumber.m +++ src/OFNumber.m @@ -732,10 +732,13 @@ } - (bool)isEqual: (id)object { OFNumber *number; + + if (object == self) + return true; if (![object isKindOfClass: [OFNumber class]]) return false; number = object; Index: src/OFObject.m ================================================================== --- src/OFObject.m +++ src/OFObject.m @@ -992,11 +992,11 @@ return [OFMethodSignature signatureWithObjCTypes: typeEncoding]; } - (bool)isEqual: (id)object { - return (self == object); + return (object == self); } - (uint32_t)hash { uintptr_t ptr = (uintptr_t)self; Index: src/OFPair.m ================================================================== --- src/OFPair.m +++ src/OFPair.m @@ -62,10 +62,13 @@ } - (bool)isEqual: (id)object { OFPair *pair; + + if (object == self) + return true; if (![object isKindOfClass: [OFPair class]]) return false; pair = object; Index: src/OFSandbox.m ================================================================== --- src/OFSandbox.m +++ src/OFSandbox.m @@ -340,80 +340,81 @@ copy->_allowsBPF = _allowsBPF; return copy; } -- (bool)isEqual: (id)otherObject -{ - OFSandbox *otherSandbox; - - if (![otherObject isKindOfClass: [OFSandbox class]]) - return false; - - otherSandbox = otherObject; - - if (otherSandbox->_allowsStdIO != _allowsStdIO) - return false; - if (otherSandbox->_allowsReadingFiles != _allowsReadingFiles) - return false; - if (otherSandbox->_allowsWritingFiles != _allowsWritingFiles) - return false; - if (otherSandbox->_allowsCreatingFiles != _allowsCreatingFiles) - return false; - if (otherSandbox->_allowsCreatingSpecialFiles != - _allowsCreatingSpecialFiles) - return false; - if (otherSandbox->_allowsTemporaryFiles != _allowsTemporaryFiles) - return false; - if (otherSandbox->_allowsIPSockets != _allowsIPSockets) - return false; - if (otherSandbox->_allowsMulticastSockets != _allowsMulticastSockets) - return false; - if (otherSandbox->_allowsChangingFileAttributes != +- (bool)isEqual: (id)object +{ + OFSandbox *sandbox; + + if (object == self) + return true; + + if (![object isKindOfClass: [OFSandbox class]]) + return false; + + sandbox = object; + + if (sandbox->_allowsStdIO != _allowsStdIO) + return false; + if (sandbox->_allowsReadingFiles != _allowsReadingFiles) + return false; + if (sandbox->_allowsWritingFiles != _allowsWritingFiles) + return false; + if (sandbox->_allowsCreatingFiles != _allowsCreatingFiles) + return false; + if (sandbox->_allowsCreatingSpecialFiles != _allowsCreatingSpecialFiles) + return false; + if (sandbox->_allowsTemporaryFiles != _allowsTemporaryFiles) + return false; + if (sandbox->_allowsIPSockets != _allowsIPSockets) + return false; + if (sandbox->_allowsMulticastSockets != _allowsMulticastSockets) + return false; + if (sandbox->_allowsChangingFileAttributes != _allowsChangingFileAttributes) return false; - if (otherSandbox->_allowsFileOwnerChanges != _allowsFileOwnerChanges) - return false; - if (otherSandbox->_allowsFileLocks != _allowsFileLocks) - return false; - if (otherSandbox->_allowsUNIXSockets != _allowsUNIXSockets) - return false; - if (otherSandbox->_allowsDNS != _allowsDNS) - return false; - if (otherSandbox->_allowsUserDatabaseReading != - _allowsUserDatabaseReading) - return false; - if (otherSandbox->_allowsFileDescriptorSending != + if (sandbox->_allowsFileOwnerChanges != _allowsFileOwnerChanges) + return false; + if (sandbox->_allowsFileLocks != _allowsFileLocks) + return false; + if (sandbox->_allowsUNIXSockets != _allowsUNIXSockets) + return false; + if (sandbox->_allowsDNS != _allowsDNS) + return false; + if (sandbox->_allowsUserDatabaseReading != _allowsUserDatabaseReading) + return false; + if (sandbox->_allowsFileDescriptorSending != _allowsFileDescriptorSending) return false; - if (otherSandbox->_allowsFileDescriptorReceiving != + if (sandbox->_allowsFileDescriptorReceiving != _allowsFileDescriptorReceiving) return false; - if (otherSandbox->_allowsTape != _allowsTape) - return false; - if (otherSandbox->_allowsTTY != _allowsTTY) - return false; - if (otherSandbox->_allowsProcessOperations != _allowsProcessOperations) - return false; - if (otherSandbox->_allowsExec != _allowsExec) - return false; - if (otherSandbox->_allowsProtExec != _allowsProtExec) - return false; - if (otherSandbox->_allowsSetTime != _allowsSetTime) - return false; - if (otherSandbox->_allowsPS != _allowsPS) - return false; - if (otherSandbox->_allowsVMInfo != _allowsVMInfo) - return false; - if (otherSandbox->_allowsChangingProcessRights != + if (sandbox->_allowsTape != _allowsTape) + return false; + if (sandbox->_allowsTTY != _allowsTTY) + return false; + if (sandbox->_allowsProcessOperations != _allowsProcessOperations) + return false; + if (sandbox->_allowsExec != _allowsExec) + return false; + if (sandbox->_allowsProtExec != _allowsProtExec) + return false; + if (sandbox->_allowsSetTime != _allowsSetTime) + return false; + if (sandbox->_allowsPS != _allowsPS) + return false; + if (sandbox->_allowsVMInfo != _allowsVMInfo) + return false; + if (sandbox->_allowsChangingProcessRights != _allowsChangingProcessRights) return false; - if (otherSandbox->_allowsPF != _allowsPF) + if (sandbox->_allowsPF != _allowsPF) return false; - if (otherSandbox->_allowsAudio != _allowsAudio) + if (sandbox->_allowsAudio != _allowsAudio) return false; - if (otherSandbox->_allowsBPF != _allowsBPF) + if (sandbox->_allowsBPF != _allowsBPF) return false; return true; } Index: src/OFSet.m ================================================================== --- src/OFSet.m +++ src/OFSet.m @@ -276,21 +276,24 @@ OF_UNRECOGNIZED_SELECTOR } - (bool)isEqual: (id)object { - OFSet *otherSet; + OFSet *set; + + if (object == self) + return true; if (![object isKindOfClass: [OFSet class]]) return false; - otherSet = object; + set = object; - if ([otherSet count] != [self count]) + if ([set count] != [self count]) return false; - return [otherSet isSubsetOfSet: self]; + return [set isSubsetOfSet: self]; } - (uint32_t)hash { void *pool = objc_autoreleasePoolPush(); Index: src/OFSet_hashtable.m ================================================================== --- src/OFSet_hashtable.m +++ src/OFSet_hashtable.m @@ -241,10 +241,13 @@ } - (bool)isEqual: (id)object { OFSet_hashtable *set; + + if (object == self) + return true; if (![object isKindOfClass: [OFSet_hashtable class]] && ![object isKindOfClass: [OFMutableSet_hashtable class]] && ![object isKindOfClass: [OFCountedSet_hashtable class]]) return [super isEqual: object]; Index: src/OFTriple.m ================================================================== --- src/OFTriple.m +++ src/OFTriple.m @@ -72,10 +72,13 @@ } - (bool)isEqual: (id)object { OFTriple *triple; + + if (object == self) + return true; if (![object isKindOfClass: [OFTriple class]]) return false; triple = object; Index: src/OFURL.m ================================================================== --- src/OFURL.m +++ src/OFURL.m @@ -589,10 +589,13 @@ } - (bool)isEqual: (id)object { OFURL *URL; + + if (object == self) + return true; if (![object isKindOfClass: [OFURL class]]) return false; URL = object; Index: src/OFXMLAttribute.m ================================================================== --- src/OFXMLAttribute.m +++ src/OFXMLAttribute.m @@ -118,10 +118,13 @@ } - (bool)isEqual: (id)object { OFXMLAttribute *attribute; + + if (object == self) + return true; if (![object isKindOfClass: [OFXMLAttribute class]]) return false; attribute = object; Index: src/OFXMLCDATA.m ================================================================== --- src/OFXMLCDATA.m +++ src/OFXMLCDATA.m @@ -73,10 +73,13 @@ } - (bool)isEqual: (id)object { OFXMLCDATA *CDATA; + + if (object == self) + return true; if (![object isKindOfClass: [OFXMLCDATA class]]) return false; CDATA = object; Index: src/OFXMLCharacters.m ================================================================== --- src/OFXMLCharacters.m +++ src/OFXMLCharacters.m @@ -73,10 +73,13 @@ } - (bool)isEqual: (id)object { OFXMLCharacters *characters; + + if (object == self) + return true; if (![object isKindOfClass: [OFXMLCharacters class]]) return false; characters = object; Index: src/OFXMLComment.m ================================================================== --- src/OFXMLComment.m +++ src/OFXMLComment.m @@ -75,10 +75,13 @@ } - (bool)isEqual: (id)object { OFXMLComment *comment; + + if (object == self) + return true; if (![object isKindOfClass: [OFXMLComment class]]) return false; comment = object; Index: src/OFXMLElement.m ================================================================== --- src/OFXMLElement.m +++ src/OFXMLElement.m @@ -1030,10 +1030,13 @@ } - (bool)isEqual: (id)object { OFXMLElement *element; + + if (object == self) + return true; if (![object isKindOfClass: [OFXMLElement class]]) return false; element = object; Index: src/OFXMLProcessingInstructions.m ================================================================== --- src/OFXMLProcessingInstructions.m +++ src/OFXMLProcessingInstructions.m @@ -75,10 +75,13 @@ } - (bool)isEqual: (id)object { OFXMLProcessingInstructions *processingInstructions; + + if (object == self) + return true; if (![object isKindOfClass: [OFXMLProcessingInstructions class]]) return false; processingInstructions = object;