[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

Re: [libvirt] [PATCH] esx: Fix memory leak when looking up an non-existing domain by name



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 redhat com    +1-801-349-2682
Libvirt virtualization library http://libvirt.org

Attachment: signature.asc
Description: OpenPGP digital signature


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]