On Freitag, 1. Oktober 2021 17:16:47 CEST Daniel P. Berrangé wrote: > On Fri, Oct 01, 2021 at 04:26:17PM +0200, Christian Schoenebeck wrote: > > Implements deep auto free of arrays while retaining common C-style > > squared bracket access. Main purpose of this API is to get rid of > > error prone individual array deallocation pathes in user code, i.e. > > > > turning something like this: > > void doSomething(size_t n) { > > > > Foo *foos = malloc(n * sizeof(Foo)); > > for (...) { > > > > foos[i].s = malloc(...); > > if (...) { > > > > goto out; > > > > } > > > > } > > > > out: > > if (...) { > > > > for (...) { > > > > /* deep deallocation */ > > free(foos[i].s); > > > > } > > /* array deallocation */ > > free(foos); > > > > } > > > > } > > > > into something more simple and safer like: > > void doSomething(size_t n) { > > > > P9ARRAY_REF(Foo) foos = NULL; > > P9ARRAY_NEW(Foo, foos, n); > > for (...) { > > > > foos[i].s = malloc(...); > > if (...) { > > > > return; /* array auto freed here */ > > > > } > > > > } > > /* array auto freed here */ > > > > } > > As explained before, I'm against the idea of introducing new ways > to automatically free local variables that are not using g_auto* > functionality. It is not following the QEMU wide coding style > that is documented.
Yes, your concerns are linked in the cover letter. And I also made it clear that what you suggested does not fit either. So my position has not changed. Best regards, Christian Schoenebeck