malloc needs to redefine assert because glibc's assert implementation itself calls asprintf (see bug 10217) which in turn calls malloc. This should be explained in a comment. See bug 10560. The definition of that assert macro should use the same statement expression with an if statement as <assert.h>, to catch coding errors within malloc.