On Thu, Sep 26, 2019 at 17:02:49 -0500, Eric Blake wrote:
On 9/26/19 10:51 AM, Peter Krempa wrote:
> Add a 'cleanup' label and use jumps as we do in other places.
>
> Signed-off-by: Peter Krempa <pkrempa(a)redhat.com>
> ---
> src/qemu/qemu_driver.c | 17 ++++++++++-------
> 1 file changed, 10 insertions(+), 7 deletions(-)
> + cleanup:
> + virDomainObjEndAPI(&vm);
> + return ret;
> }
Is there any way to make virDomainObjEndAPI() replaceable by AUTO framework?
It will probably require a new macro or a new type to avoid breaking
semantics we've established.
VIR_AUTOPTR is unuitable because the semantics say that the object will
be freed.
VIR_AUTOCLEAN is similarly unsuitable because we don't clean anything
inside, but AUTOCLEAN can be used internally in some cases as e.g. with
the autmatic XPath context cleanup code.
VIR_AUTOUNREF is not enough in this case because we are dealing with a
lockable object.
We could introduce something like VIR_AUTORELEASE and VIR_AUTOUNLOCK for
use with virOjbectLockable-based objects. The former would then do the
required virObjectUnlock and then virObjectUnref. The latter is for
parity in cases when the lock should be dropped.
I'll propose these and see how it will go.