On 2016-03-20 12:15, Corinna Vinschen wrote: > On Mar 19 13:45, Peter Foley wrote: >> GCC 6.0+ can assert that this argument is nonnull. >> Remove the unnecessary check to fix a warning. >> >> winsup/cygwin/ChangeLog >> malloc_wrapper.cc (posix_memalign): Remove always true nonnull check. > > Eh, what?!? How on earth can gcc assert memptr is always non-NULL? > An application can call posix_memalign(NULL, 4096, 4096) just fine, > can't it? If so, *memptr = res crashes.
I think that passing NULL qualifies as undefined, in which case the crash is ok, no? I'm sure it will misbehave if you pass (void **)1 too. So, some might argue that the business of special-casing NULL here is questionable. Or is there some reason to protect the posix_memalign users from themselves? Cheers, Peter
