Richard Frith-Macdonald <richard <at> tiptree.demon.co.uk> writes:
On 10 May 2007, at 12:35, Nicola Pero wrote:
(...)
This looks pretty bad, not only because it doesn't compile with GCC
2.95, but also because that variable defined in the middle of
nowhere is very ugly ... unclear
scope (what happens if you have two _NSANIMATION_LOCK in
sequence ? is the same variable being used or different
variables ?) ...
This macro is used as a macro : to repeat again and again the same
piece of code. It only has to be used in this class. If you have two
_NSANIMATION_LOCK then you have made an error : would you code two
[NSThread -lock] in sequence ?
I fixed this to make __gs_isLocked an ivar rather than declaring it
locally (which was pretty suboptimal). I also fixed a bug in the
unlock macro (it was setting the lag to the wrong value), and added
assertions to check that the macro is not misused.
Bad. If __gs_locked is needed (and as i said i think it is not : i
made
an error) then it must be declared in all methods. If __gs_isLocked is
an ivar, its value can be changed in another method then the [unlock]
will never be called.