Index: src/OFBlock.m ================================================================== --- src/OFBlock.m +++ src/OFBlock.m @@ -267,10 +267,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; @@ -310,10 +313,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;