Index: src/OFBlock.m ================================================================== --- src/OFBlock.m +++ src/OFBlock.m @@ -238,10 +238,13 @@ int flags = flags_ & (OF_BLOCK_FIELD_IS_BLOCK | OF_BLOCK_FIELD_IS_OBJECT | OF_BLOCK_FIELD_IS_BYREF); if (src_ == NULL) return; + + if (flags_ & OF_BLOCK_BYREF_CALLER) + return; switch (flags) { case OF_BLOCK_FIELD_IS_BLOCK: *(of_block_literal_t**)dst_ = _Block_copy(src_); break; @@ -281,10 +284,13 @@ const int flags = flags_ & (OF_BLOCK_FIELD_IS_BLOCK | OF_BLOCK_FIELD_IS_OBJECT | OF_BLOCK_FIELD_IS_BYREF); if (obj_ == NULL) return; + + if (flags_ & OF_BLOCK_BYREF_CALLER) + return; switch (flags) { case OF_BLOCK_FIELD_IS_BLOCK: _Block_release(obj_); break;