From bf79e90f3ad59d7914275448b43ef27ea0ba2ef0 Mon Sep 17 00:00:00 2001 From: "Daniel P. Berrange" Date: Mon, 7 Jul 2008 09:52:26 +0000 Subject: [PATCH] Fix memory leak in OOM cleanup --- ChangeLog | 5 +++++ src/capabilities.c | 14 ++++++++------ 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/ChangeLog b/ChangeLog index de6ed7887d..5b999b58a9 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +Mon Jul 7 10:39:56 BST 2008 Daniel P. Berrange + + * src/capabilities.c: Refactor to avoid memory leak when in + cleanup from OOM condition + Mon Jun 30 14:07:56 JST 2008 Atsushi SAKAI Compilation fix for MinGW diff --git a/src/capabilities.c b/src/capabilities.c index 86ee4d3a03..2b7576e807 100644 --- a/src/capabilities.c +++ b/src/capabilities.c @@ -224,17 +224,19 @@ virCapabilitiesAddHostNUMACell(virCapsPtr caps, if (VIR_ALLOC(cell) < 0) return -1; - caps->host.numaCell[caps->host.nnumaCell] = cell; - if (VIR_ALLOC_N(caps->host.numaCell[caps->host.nnumaCell]->cpus, - ncpus) < 0) + if (VIR_ALLOC_N(cell->cpus, ncpus) < 0) { + VIR_FREE(cell); return -1; - memcpy(caps->host.numaCell[caps->host.nnumaCell]->cpus, + } + memcpy(cell->cpus, cpus, ncpus * sizeof(*cpus)); - caps->host.numaCell[caps->host.nnumaCell]->ncpus = ncpus; - caps->host.numaCell[caps->host.nnumaCell]->num = num; + cell->ncpus = ncpus; + cell->num = num; + + caps->host.numaCell[caps->host.nnumaCell] = cell; caps->host.nnumaCell++; return 0;