Index: src/OFBlock.m ================================================================== --- src/OFBlock.m +++ src/OFBlock.m @@ -156,25 +156,25 @@ free(block); } } void -_Block_object_assign(void *dst_, void *src_, int flags) +_Block_object_assign(void *dst_, const void *src_, const int flags_) { - flags &= OF_BLOCK_FIELD_IS_BLOCK | OF_BLOCK_FIELD_IS_OBJECT | - OF_BLOCK_FIELD_IS_BYREF; + int flags = flags_ & (OF_BLOCK_FIELD_IS_BLOCK | + OF_BLOCK_FIELD_IS_OBJECT | OF_BLOCK_FIELD_IS_BYREF); switch (flags) { case OF_BLOCK_FIELD_IS_BLOCK: *(of_block_literal_t**)dst_ = _Block_copy(src_); break; case OF_BLOCK_FIELD_IS_OBJECT: *(id*)dst_ = [(id)src_ retain]; break; case OF_BLOCK_FIELD_IS_BYREF:; - of_block_byref_t *src = src_; - of_block_byref_t **dst = dst_; + of_block_byref_t *src = (of_block_byref_t*)src_; + of_block_byref_t **dst = (of_block_byref_t**)dst_; if ((src->flags & ~OF_BLOCK_HAS_COPY_DISPOSE) == 0) { if ((*dst = malloc(src->size)) == NULL) { fputs("Not enough memory for block " "variables!\n", stderr); @@ -195,24 +195,24 @@ break; } } void -_Block_object_dispose(void *obj_, int flags) +_Block_object_dispose(const void *obj_, const int flags_) { - flags &= OF_BLOCK_FIELD_IS_BLOCK | OF_BLOCK_FIELD_IS_OBJECT | - OF_BLOCK_FIELD_IS_BYREF; + const int flags = flags_ & (OF_BLOCK_FIELD_IS_BLOCK | + OF_BLOCK_FIELD_IS_OBJECT | OF_BLOCK_FIELD_IS_BYREF); switch (flags) { case OF_BLOCK_FIELD_IS_BLOCK: _Block_release(obj_); break; case OF_BLOCK_FIELD_IS_OBJECT: [(id)obj_ release]; break; case OF_BLOCK_FIELD_IS_BYREF:; - of_block_byref_t *obj = obj_; + of_block_byref_t *obj = (of_block_byref_t*)obj_; if ((--obj->flags & ~OF_BLOCK_HAS_COPY_DISPOSE) == 0) { if (obj->size >= sizeof(of_block_byref_t)) obj->byref_dispose(obj);