[libvirt] [PATCH] esx: Fix memory leak when looking up an non-existing domain by name
Eric Blake
eblake at redhat.com
Mon Aug 9 22:51:38 UTC 2010
On 08/08/2010 02:56 PM, Matthias Bolte wrote:
> In case an optional object cannot be found the lookup function is
> left early and the cleanup code is not executed. Add a success label
> and goto instead of an early return.
>
> This pattern occurs in some other functions too.
> ---
> src/esx/esx_vi.c | 14 ++++++++------
> 1 files changed, 8 insertions(+), 6 deletions(-)
Definitely a leak to plug, but:
>
> diff --git a/src/esx/esx_vi.c b/src/esx/esx_vi.c
> index c6b2b63..b064b11 100644
> --- a/src/esx/esx_vi.c
> +++ b/src/esx/esx_vi.c
> @@ -2254,7 +2254,7 @@ esxVI_LookupVirtualMachineByUuid(esxVI_Context *ctx, const unsigned char *uuid,
>
> if (managedObjectReference == NULL) {
> if (occurrence == esxVI_Occurrence_OptionalItem) {
> - return 0;
> + goto success;
Why not use the idiom:
result = 0;
goto cleanup;
> } else {
> ESX_VI_ERROR(VIR_ERR_NO_DOMAIN,
> _("Could not find domain with UUID '%s'"),
> @@ -2270,6 +2270,7 @@ esxVI_LookupVirtualMachineByUuid(esxVI_Context *ctx, const unsigned char *uuid,
> goto cleanup;
> }
>
> + success:
> result = 0;
>
> cleanup:
such that you only have to have one label, instead of adding a new
label? All three instances follow the same pattern.
--
Eric Blake eblake at redhat.com +1-801-349-2682
Libvirt virtualization library http://libvirt.org
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 619 bytes
Desc: OpenPGP digital signature
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20100809/604aebcf/attachment-0001.sig>
More information about the libvir-list
mailing list