On Thu, 3 Mar 2022 at 23:02, Richard Henderson <richard.hender...@linaro.org> wrote: > > On 3/3/22 06:55, Peter Maydell wrote: > >> Alternately, force size == 1, so that we always get a non-NULL value that > >> can be freed. > >> That's a change on the POSIX side as well, of course. > > > > Yes, I had a look at what actual malloc() implementations tend > > to do, and the answer seems to be that forcing size to 1 gives > > less weird behaviour for the application. So here that would be > > > > if (size == 0) { > > size++; > > } > > ptr = _aligned_malloc(size, alignment); > > > > We don't need to do anything on the POSIX side (unless we want to > > enforce consistency of handling the size==0 case). > > I would do this unconditionally. The POSIX manpage says that either NULL or > a unique > pointer is a valid return value into *memptr here for size == 0. What we > want in our > caller is NULL if and only if error.
Mm, I guess. I was trying to avoid changing the POSIX-side behaviour, but this seems safe enough. -- PMM