CSP

_CP_CHP_SAFE_CHECK_

#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							\
	    )