Index: src/objc_properties.m ================================================================== --- src/objc_properties.m +++ src/objc_properties.m @@ -35,16 +35,34 @@ if (atomic) { @synchronized ((atomic ? self : nil)) { id *ptr = (id*)((char*)self + offset); id old = *ptr; - *ptr = (copy ? [value copy] : [value retain]); + switch (copy) { + case 0: + *ptr = [value retain]; + break; + case 2: + *ptr = [value mutableCopy]; + break; + default: + *ptr = [value copy]; + } [old release]; } } id *ptr = (id*)((char*)self + offset); id old = *ptr; - *ptr = (copy ? [value copy] : [value retain]); + switch (copy) { + case 0: + *ptr = [value retain]; + break; + case 2: + *ptr = [value mutableCopy]; + break; + default: + *ptr = [value copy]; + } [old release]; }