[syslinux] [PATCH 1/2] com32/lib/: Avoid unneeded allocation.
Raphael S.Carvalho
raphael.scarv at gmail.com
Thu Sep 5 21:00:55 PDT 2013
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;
+
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;
}
--
1.7.2.5
More information about the Syslinux
mailing list