in common/inc/c_pal/thandle_ll.h [517:561]
void THANDLE_MOVE(C)(THANDLE(T) * t1, THANDLE(T) * t2) \
{ \
if ( \
/*Codes_SRS_THANDLE_02_033: [ If t1 is NULL then THANDLE_MOVE shall return. ]*/ \
(t1 == NULL) || \
/*Codes_SRS_THANDLE_02_034: [ If t2 is NULL then THANDLE_MOVE shall return. ]*/ \
(t2 == NULL) \
) \
{ \
LogError("invalid argument THANDLE(" MU_TOSTRING(T) ") * t1=%p, THANDLE(" MU_TOSTRING(T) ") t2=%p", t1, t2 ); \
} \
else \
{ \
if (*t1 == NULL) \
{ \
if (*t2 == NULL) \
{ \
/*so nothing to do, leave them as they are*/ \
/*Codes_SRS_THANDLE_02_035: [ If *t1 is NULL and *t2 is NULL then THANDLE_MOVE shall return. ]*/ \
} \
else \
{ \
/*Codes_SRS_THANDLE_02_036: [ If *t1 is NULL and *t2 is not NULL then THANDLE_MOVE shall move *t2 under t1, set *t2 to NULL and return. ]*/ \
*(T const**)t1 = *t2; \
*(T const**)t2 = NULL; \
} \
} \
else \
{ \
if (*t2 == NULL) \
{ \
/*Codes_SRS_THANDLE_02_037: [ If *t1 is not NULL and *t2 is NULL then THANDLE_MOVE shall THANDLE_DEC_REF *t1, set *t1 to NULL and return. ]*/ \
THANDLE_DEC_REF(C)(*t1); \
*(T const**)t1 = NULL; \
} \
else \
{ \
/*Codes_SRS_THANDLE_02_038: [ If *t1 is not NULL and *t2 is not NULL then THANDLE_MOVE shall THANDLE_DEC_REF *t1, set *t1 to *t2, set *t2 to NULL and return. ]*/ \
THANDLE_DEC_REF(C)(*t1); \
*(T const**)t1 = *t2; \
*(T const**)t2 = NULL; \
} \
} \
} \
} \