On 9 Feb 2011, at 04:36, Jason Felice wrote:

> If you call a synthesized setter in dealloc, you get a fault.  The 
> synthesized setter wants to sync, the object's "isa" has already been 
> restored to pre-faux-lock-object-subclass; therefore, sync.m attempts to 
> re-subclass-swizzle which fails at some assert within the runtime (I don't 
> have the runtime built with debug).

This should have been fixed in libobjc2 some time ago (before 1.0, I think).  
The dealloc method added by the lock class calls [super dealloc], then destroys 
the lock class after it returns.

> Clearly, if it were to succeed, bad things would happen.
> 
> OK, didn't look at SVN.  We seem to have a better approach, though looks like 
> we can never clean up locks.  

Please test this with a vaguely recent svn and provide me with a simple test 
case if it still doesn't work for you.

> Thought: we should still be able to swizzle 'dealloc', no?  We just need to 
> steal the dealloc of any object hierarchy root?

Yes, if you only had to deal with well-written code.  Unfortunately, a load of 
GNUstep code uses NSDeallocateObject(self) instead of calling [super dealloc].

David

-- Sent from my Difference Engine

_______________________________________________
Gnustep-dev mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/gnustep-dev

Reply via email to