@@ -157,28 +157,23 @@ if (i >= last) @throw [OFOutOfRangeException newWithClass: isa]; bucket = [self allocMemoryWithSize: sizeof(*bucket)]; - @try { - key = (copyKey ? [key copy] : [key retain]); - } @catch (id e) { - [self freeMemory: bucket]; - @throw e; - } - - @try { - [object retain]; - } @catch (id e) { - [self freeMemory: bucket]; - [key release]; - @throw e; - } - - bucket->key = key; - bucket->object = object; + if (copyKey) { + @try { + bucket->key = [key copy]; + } @catch (id e) { + [self freeMemory: bucket]; + @throw e; + } + } else + bucket->key = [key retain]; + + bucket->object = [object retain]; bucket->hash = hash; + data[i] = bucket; count++; return; }