#define _CP_CHP_SAFE_CHECK_(d, l, p, w) (NULL != (d) && (size_t)(w) <= (size_t)(l) && \ (void *)(d) <= (void *)(p) && \ _CP_CHP_ADD_((p),(w)) <= _CP_CHP_ADD_((d),(l)) \ ? (p) \ : NULL \ )