[syslinux] [PATCH 1/2] com32/lib/: Avoid unneeded allocation.

Matt Fleming matt at console-pimps.org
Tue Sep 17 06:54:45 PDT 2013


On Fri, 06 Sep, at 01:00:55AM, Raphael S.Carvalho wrote:
> eparam will only be used if EBIOS is available on the underlying disk.
> If not so, then there is no reason to allocate eparam.
> ---
>  com32/lib/syslinux/disk.c |   13 +++++++------
>  1 files changed, 7 insertions(+), 6 deletions(-)
> 
> diff --git a/com32/lib/syslinux/disk.c b/com32/lib/syslinux/disk.c
> index 093751a..554bed3 100644
> --- a/com32/lib/syslinux/disk.c
> +++ b/com32/lib/syslinux/disk.c
> @@ -73,7 +73,7 @@ int disk_int13_retry(const com32sys_t * inreg, com32sys_t * outreg)
>  int disk_get_params(int disk, struct disk_info *const diskinfo)
>  {
>      static com32sys_t inreg, outreg;
> -    struct disk_ebios_eparam *eparam;
> +    struct disk_ebios_eparam *eparam = NULL;
>      int rv = 0;
>  
>      memset(diskinfo, 0, sizeof *diskinfo);
> @@ -94,12 +94,12 @@ int disk_get_params(int disk, struct disk_info *const diskinfo)
>  	diskinfo->ebios = 1;
>      }
>  
> -    eparam = lmalloc(sizeof *eparam);
> -    if (!eparam)
> -	return -1;
> -
>      /* Get extended disk parameters if ebios == 1 */
>      if (diskinfo->ebios) {
> +	eparam = lmalloc(sizeof *eparam);
> +	if (!eparam)
> +	    return -1;
> +	

There's trailing whitespace here.

>  	memset(&inreg, 0, sizeof inreg);
>  	inreg.eax.b[1] = 0x48;
>  	inreg.edx.b[0] = disk;
> @@ -153,7 +153,8 @@ int disk_get_params(int disk, struct disk_info *const diskinfo)
>  	diskinfo->lbacnt = diskinfo->cyl * diskinfo->head * diskinfo->spt;
>  
>  out:
> -    lfree(eparam);
> +    if (eparam)
> +	lfree(eparam);
>      return rv;
>  }

You actually don't need to check for 'eparam' being NULL, lfree() can
handle being called with a NULL pointer.

-- 
Matt Fleming, Intel Open Source Technology Center


More information about the Syslinux mailing list