[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH] qapi: enable use of g_autoptr with QAPI types
From: |
Eric Blake |
Subject: |
Re: [PATCH] qapi: enable use of g_autoptr with QAPI types |
Date: |
Thu, 23 Jul 2020 06:49:44 -0500 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.10.0 |
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é <berrange@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