> Using `git grep` I see 230 instances of 'xmalloc' and 261 instances of
> 'xcalloc'. After the Coccinelle transformation, these are down to 194 and
> 190, respectively, because the rest allocate in the same line as the
> definition. It's worth thinking about the macro pattern for those cases.
Thanks for reporting the coccinelle experiment!
As we follow a strict declare before code, and we do not know if further
declarations make use of this already, e.g. given
struct foo *f = xmalloc(sizeof(*f));
struct bar b = &f->baz;
we cannot split up the line declaring and assigning f, but the macro
has to recreate the assignment upon declaration, for that we'd
need to have something like
ALLOCATE_TYPE(type, name);
which over complicates things IMHO.
Maybe it is worth identifying the pattern where 'f' is not used in further
declarations, such that we can make patches as
- struct foo *f = xmalloc(sizeof(*f));
+ struct foo *f;
struct baz b = &unrelated;
+
+ ALLOCATE(f);
+
Thanks,
Stefan