* Joseph Myers:
> The real question is how to achieve optimal warnings in the absence of the
> attribute. Should we have a variant of the nonnull attribute that warns
> for NULL arguments but without optimizing based on them?
I think attribute access already covers part of it:
#include <stddef.h>
void read_array (void *, size_t) __attribute__ ((access (read_only, 1, 2)));
void
f (void)
{
read_array (NULL, 0); // No warning.
read_array (NULL, 1); // Warning.
}
It does not work for functions like strndup that support both string
arguments (of any length) and array arguments of a specified size.
The read_only variant requires an initialized array of the specified
length.