Index: src/OFArray.m ================================================================== --- src/OFArray.m +++ src/OFArray.m @@ -452,18 +452,12 @@ size_t i, count = [self count]; uint32_t hash; OF_HASH_INIT(hash); - for (i = 0; i < count; i++) { - uint32_t h = [objects[i] hash]; - - OF_HASH_ADD(hash, h >> 24); - OF_HASH_ADD(hash, (h >> 16) & 0xFF); - OF_HASH_ADD(hash, (h >> 8) & 0xFF); - OF_HASH_ADD(hash, h & 0xFF); - } + for (i = 0; i < count; i++) + OF_HASH_ADD_HASH(hash, [objects[i] hash]); OF_HASH_FINALIZE(hash); return hash; } Index: src/OFArray_adjacent.m ================================================================== --- src/OFArray_adjacent.m +++ src/OFArray_adjacent.m @@ -323,18 +323,12 @@ size_t i, count = [array count]; uint32_t hash; OF_HASH_INIT(hash); - for (i = 0; i < count; i++) { - uint32_t h = [objects[i] hash]; - - OF_HASH_ADD(hash, h >> 24); - OF_HASH_ADD(hash, (h >> 16) & 0xFF); - OF_HASH_ADD(hash, (h >> 8) & 0xFF); - OF_HASH_ADD(hash, h & 0xFF); - } + for (i = 0; i < count; i++) + OF_HASH_ADD_HASH(hash, [objects[i] hash]); OF_HASH_FINALIZE(hash); return hash; } Index: src/OFDataArray.m ================================================================== --- src/OFDataArray.m +++ src/OFDataArray.m @@ -485,12 +485,14 @@ { uint32_t hash; size_t i; OF_HASH_INIT(hash); + for (i = 0; i < count * itemSize; i++) OF_HASH_ADD(hash, ((char*)data)[i]); + OF_HASH_FINALIZE(hash); return hash; } Index: src/OFList.m ================================================================== --- src/OFList.m +++ src/OFList.m @@ -325,18 +325,12 @@ of_list_object_t *iter; uint32_t hash; OF_HASH_INIT(hash); - for (iter = firstListObject; iter != NULL; iter = iter->next) { - uint32_t h = [iter->object hash]; - - OF_HASH_ADD(hash, h >> 24); - OF_HASH_ADD(hash, (h >> 16) & 0xFF); - OF_HASH_ADD(hash, (h >> 8) & 0xFF); - OF_HASH_ADD(hash, h & 0xFF); - } + for (iter = firstListObject; iter != NULL; iter = iter->next) + OF_HASH_ADD_HASH(hash, [iter->object hash]); OF_HASH_FINALIZE(hash); return hash; }