mirror of
https://github.com/gnustep/libs-base.git
synced 2025-05-30 16:30:41 +00:00
Retain count fixes
This commit is contained in:
parent
44222342b0
commit
544dcce482
6 changed files with 111 additions and 21 deletions
|
@ -94,16 +94,12 @@ typedef GSIMapNode_t *GSIMapNode;
|
|||
(M->legacy ? M->cb.old.k.release(M, X.ptr) \
|
||||
: IS_WEAK_KEY(M) ? nil : pointerFunctionsRelinquish(&M->cb.pf.k, &X.ptr))
|
||||
#define GSI_MAP_RETAIN_KEY(M, X)\
|
||||
(M->legacy ? M->cb.old.k.retain(M, X.ptr) \
|
||||
: IS_WEAK_KEY(M) ? nil : pointerFunctionsAssign(&M->cb.pf.k, &X.ptr,\
|
||||
pointerFunctionsAcquire(&M->cb.pf.k, X.ptr)))
|
||||
(M->legacy ? M->cb.old.k.retain(M, X.ptr) : (IS_WEAK_KEY(M) ? nil : X.ptr))
|
||||
#define GSI_MAP_RELEASE_VAL(M, X)\
|
||||
(M->legacy ? M->cb.old.v.release(M, X.ptr) \
|
||||
: IS_WEAK_VALUE(M) ? nil : pointerFunctionsRelinquish(&M->cb.pf.v, &X.ptr))
|
||||
#define GSI_MAP_RETAIN_VAL(M, X)\
|
||||
(M->legacy ? M->cb.old.v.retain(M, X.ptr) \
|
||||
: IS_WEAK_VALUE(M) ? nil : pointerFunctionsAssign(&M->cb.pf.v, &X.ptr,\
|
||||
pointerFunctionsAcquire(&M->cb.pf.v, X.ptr)))
|
||||
(M->legacy ? M->cb.old.v.retain(M, X.ptr) : (IS_WEAK_VALUE(M) ? nil : &X.ptr))
|
||||
|
||||
/* The GSI_MAP_WRITE_KEY() and GSI_MAP_WRITE_VAL() macros are expectd to
|
||||
* write without retain (GSI_MAP RETAIN macros are executed separately)
|
||||
|
@ -114,14 +110,12 @@ typedef GSIMapNode_t *GSIMapNode;
|
|||
if (M->legacy) \
|
||||
*(addr) = x;\
|
||||
else\
|
||||
(IS_WEAK_KEY(M) ? pointerFunctionsAssign(&M->cb.pf.k, (void**)addr,\
|
||||
(x).obj) : (*(id*)(addr) = (x).obj));
|
||||
pointerFunctionsReplace(&M->cb.pf.k, (void**)addr, (x).obj);
|
||||
#define GSI_MAP_WRITE_VAL(M, addr, x) \
|
||||
if (M->legacy) \
|
||||
*(addr) = x;\
|
||||
else\
|
||||
(IS_WEAK_VALUE(M) ? pointerFunctionsAssign(&M->cb.pf.v, (void**)addr,\
|
||||
(x).obj) : (*(id*)(addr) = (x).obj));
|
||||
pointerFunctionsReplace(&M->cb.pf.v, (void**)addr, (x).obj);
|
||||
#define GSI_MAP_READ_KEY(M,addr) \
|
||||
(M->legacy ? *(addr)\
|
||||
: (__typeof__(*addr))pointerFunctionsRead(&M->cb.pf.k, (void**)addr))
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue