[PATCH] realloc: Return unchanged if request is within usable size
Andreas Schwab
schwab@linux-m68k.org
Fri Nov 25 20:40:21 GMT 2022
On Nov 25 2022, Siddhesh Poyarekar via Libc-alpha wrote:
> + /* Smoke test to make sure that allocations do not move if they have enough
> + space to expand in the chunk. */
> + for (size_t sz = 3; sz < 256 * 1024; sz += 2048)
> + {
> + p = realloc (NULL, sz);
> + if (p == NULL)
> + FAIL_EXIT1 ("realloc (NULL, 31) returned NULL.");
s/31/sz/
> + size_t newsz = malloc_usable_size (p);
> + printf ("size: %zu, usable size: %zu, extra: %zu\n",
> + sz, newsz, newsz - sz);
> + void *new_p = realloc (p, newsz);
> + if (new_p != p)
The compiler is allowed to optimize this to true under the assumption
that new_p == NULL (the only case where p is still a valid pointer).
--
Andreas Schwab, schwab@linux-m68k.org
GPG Key fingerprint = 7578 EB47 D4E5 4D69 2510 2552 DF73 E780 A9DA AEC1
"And now for something completely different."
More information about the Libc-alpha
mailing list