On 7/23/20 6:12 AM, Daniel P. Berrangé wrote:
Currently QAPI generates a type and function for free'ing it:

   typedef struct QCryptoBlockCreateOptions QCryptoBlockCreateOptions;
   void qapi_free_QCryptoBlockCreateOptions(QCryptoBlockCreateOptions *obj);


The above code example now becomes

   g_autoptr(QCryptoBlockCreateOptions) opts = NULL;

   opts = g_new0(QCryptoBlockCreateOptions, 1);

   ....do stuff with opts...

Note, if the local pointer needs to live beyond the scope holding the
variable, then g_steal_pointer can be used. This is useful to return the
pointer to the caller in the success codepath, while letting it be freed
in all error codepaths.

   return g_steal_pointer(&opts);


Yep, the idea makes sense!

Signed-off-by: Daniel P. Berrangé <berra...@redhat.com>
---
  include/crypto/block.h | 2 --
  scripts/qapi/types.py  | 1 +
  2 files changed, 1 insertion(+), 2 deletions(-)

Missing a counterpart change to docs/devel/qapi-code-gen.txt. And it might be nice to make this a series with at least one followup patch using the new capability, or at least so 'make check' coverage. But otherwise on the right track.

--
Eric Blake, Principal Software Engineer
Red Hat, Inc.           +1-919-301-3226
Virtualization:  qemu.org | libvirt.org


Reply via email to