Make macros thread-safe

git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@10614 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
Richard Frith-Macdonald 2001-07-31 15:43:57 +00:00
parent fc5dd011c6
commit 9f5febb49d
2 changed files with 10 additions and 7 deletions

View file

@ -2,6 +2,8 @@
* Source/GSFFCallInvocation.m: attempt to guess type signature
when compiler gives us an untyped selector.
* Headers/Foundation/NSObject.h: ASSIGN(), ASSIGNCOPY(), minor
reordering to make these macros thread-safe.
2001-07-30 Adam Fedor <fedor@gnu.org>

View file

@ -344,11 +344,11 @@ id __value = (id)(value); \
id __object = (id)(object); \
if (__value != __object) \
{ \
object = __value; \
if (__value != nil) \
{ \
[__value retain]; \
} \
object = __value; \
if (__object != nil) \
{ \
[__object release]; \
@ -364,17 +364,18 @@ if (__value != __object) \
#ifndef ASSIGNCOPY
#define ASSIGNCOPY(object,value) ({\
id __value = (value); \
if (__value != (id)object) \
id __object = (id)(object); \
if (__value != __object) \
{ \
if (__value) \
if (__value != nil) \
{ \
__value = [__value copy]; \
} \
if (object) \
{ \
[(id)object release]; \
} \
(id)object = __value; \
if (__object != nil) \
{ \
[__object release]; \
} \
} \
})
#endif