|
|
|
@ -363,10 +363,14 @@ void _Block_object_assign(void *destAddr, const void *object, const int flags)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
fprintf(stderr, "-retain\n");
|
|
|
|
fprintf(stderr, "-retain\n");
|
|
|
|
id src = (id)object;
|
|
|
|
id src = (id)object;
|
|
|
|
id *dst = destAddr;
|
|
|
|
void **dst = destAddr;
|
|
|
|
|
|
|
|
*dst = src;
|
|
|
|
|
|
|
|
if (!isGCEnabled)
|
|
|
|
|
|
|
|
{
|
|
|
|
*dst = [src retain];
|
|
|
|
*dst = [src retain];
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/* Similarly a compiler generated dispose helper needs to call back for each
|
|
|
|
/* Similarly a compiler generated dispose helper needs to call back for each
|
|
|
|
@ -436,9 +440,12 @@ void _Block_object_dispose(const void *object, const int flags)
|
|
|
|
else if((flags & BLOCK_FIELD_IS_OBJECT) == BLOCK_FIELD_IS_OBJECT)
|
|
|
|
else if((flags & BLOCK_FIELD_IS_OBJECT) == BLOCK_FIELD_IS_OBJECT)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
id src = (id)object;
|
|
|
|
id src = (id)object;
|
|
|
|
|
|
|
|
if (!isGCEnabled)
|
|
|
|
|
|
|
|
{
|
|
|
|
[src release];
|
|
|
|
[src release];
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|