[libvirt] [PATCH RFC 2/2] util: Don't report OOM twice

Michal Privoznik mprivozn at redhat.com
Fri Mar 22 11:44:57 UTC 2013


Adapt code under src/util/ to fact, that VIR_ALLOC* now reports OOM
error. There is no need to report it twice now.
---
 src/util/iohelper.c              |  4 +---
 src/util/virauthconfig.c         |  8 ++------
 src/util/vircommand.c            | 13 +++----------
 src/util/virconf.c               | 10 ++--------
 src/util/virdnsmasq.c            | 19 +++++++------------
 src/util/vireventpoll.c          |  4 +---
 src/util/virfile.c               |  4 +---
 src/util/virhash.c               | 10 ++--------
 src/util/virkeyfile.c            |  4 +---
 src/util/virlockspace.c          | 11 +++--------
 src/util/virnetdev.c             |  4 +---
 src/util/virnetdevbandwidth.c    | 12 +++---------
 src/util/virnetdevmacvlan.c      |  4 ++--
 src/util/virnetdevvlan.c         |  4 +---
 src/util/virnetdevvportprofile.c |  4 +---
 src/util/virnetlink.c            |  8 ++------
 src/util/virobject.c             |  9 ++++-----
 src/util/virpci.c                | 13 +++----------
 src/util/virprocess.c            |  4 +---
 src/util/virsexpr.c              |  4 +---
 src/util/virstoragefile.c        | 24 ++++++------------------
 src/util/virstring.c             |  5 +++--
 src/util/virsysinfo.c            |  8 +++-----
 src/util/virthreadpool.c         | 21 +++++----------------
 src/util/virtime.c               |  8 ++------
 src/util/virtypedparam.c         | 36 +++++++++---------------------------
 src/util/viruri.c                |  2 +-
 src/util/virusb.c                |  8 ++------
 src/util/virutil.c               | 36 ++++++++----------------------------
 src/util/virxml.c                |  1 -
 30 files changed, 81 insertions(+), 221 deletions(-)

diff --git a/src/util/iohelper.c b/src/util/iohelper.c
index 2230bcb..d3c966a 100644
--- a/src/util/iohelper.c
+++ b/src/util/iohelper.c
@@ -94,10 +94,8 @@ runIO(const char *path, int fd, int oflags, unsigned long long length)
     }
     buf = base;
 #else
-    if (VIR_ALLOC_N(buf, buflen + alignMask) < 0) {
-        virReportOOMError();
+    if (VIR_ALLOC_N(buf, buflen + alignMask) < 0)
         goto cleanup;
-    }
     base = buf;
     buf = (char *) (((intptr_t) base + alignMask) & ~alignMask);
 #endif
diff --git a/src/util/virauthconfig.c b/src/util/virauthconfig.c
index 1d1f084..8847d9e 100644
--- a/src/util/virauthconfig.c
+++ b/src/util/virauthconfig.c
@@ -43,10 +43,8 @@ virAuthConfigPtr virAuthConfigNew(const char *path)
 {
     virAuthConfigPtr auth;
 
-    if (VIR_ALLOC(auth) < 0) {
-        virReportOOMError();
+    if (VIR_ALLOC(auth) < 0)
         goto error;
-    }
 
     if (!(auth->path = strdup(path))) {
         virReportOOMError();
@@ -73,10 +71,8 @@ virAuthConfigPtr virAuthConfigNewData(const char *path,
 {
     virAuthConfigPtr auth;
 
-    if (VIR_ALLOC(auth) < 0) {
-        virReportOOMError();
+    if (VIR_ALLOC(auth) < 0)
         goto error;
-    }
 
     if (!(auth->path = strdup(path))) {
         virReportOOMError();
diff --git a/src/util/vircommand.c b/src/util/vircommand.c
index ac56a63..052f1e7 100644
--- a/src/util/vircommand.c
+++ b/src/util/vircommand.c
@@ -1804,17 +1804,13 @@ virCommandProcessIO(virCommandPtr cmd)
      * results accumulated over a prior run of the same command.  */
     if (cmd->outbuf) {
         outfd = cmd->outfd;
-        if (VIR_REALLOC_N(*cmd->outbuf, 1) < 0) {
-            virReportOOMError();
+        if (VIR_REALLOC_N(*cmd->outbuf, 1) < 0)
             ret = -1;
-        }
     }
     if (cmd->errbuf) {
         errfd = cmd->errfd;
-        if (VIR_REALLOC_N(*cmd->errbuf, 1) < 0) {
-            virReportOOMError();
+        if (VIR_REALLOC_N(*cmd->errbuf, 1) < 0)
             ret = -1;
-        }
     }
     if (ret == -1)
         goto cleanup;
@@ -1888,10 +1884,8 @@ virCommandProcessIO(virCommandPtr cmd)
                     else
                         errfd = -1;
                 } else {
-                    if (VIR_REALLOC_N(*buf, *len + done + 1) < 0) {
-                        virReportOOMError();
+                    if (VIR_REALLOC_N(*buf, *len + done + 1) < 0)
                         goto cleanup;
-                    }
                     memcpy(*buf + *len, data, done);
                     *len += done;
                 }
@@ -2435,7 +2429,6 @@ int virCommandHandshakeWait(virCommandPtr cmd)
         char *msg;
         ssize_t len;
         if (VIR_ALLOC_N(msg, 1024) < 0) {
-            virReportOOMError();
             VIR_FORCE_CLOSE(cmd->handshakeWait[0]);
             return -1;
         }
diff --git a/src/util/virconf.c b/src/util/virconf.c
index 16f074a..1c7075f 100644
--- a/src/util/virconf.c
+++ b/src/util/virconf.c
@@ -173,10 +173,8 @@ virConfNew(void)
 {
     virConfPtr ret;
 
-    if (VIR_ALLOC(ret) < 0) {
-        virReportOOMError();
+    if (VIR_ALLOC(ret) < 0)
         return NULL;
-    }
     ret->filename = NULL;
     ret->flags = 0;
 
@@ -225,10 +223,8 @@ virConfAddEntry(virConfPtr conf, char *name, virConfValuePtr value, char *comm)
     if ((comm == NULL) && (name == NULL))
         return NULL;
 
-    if (VIR_ALLOC(ret) < 0) {
-        virReportOOMError();
+    if (VIR_ALLOC(ret) < 0)
         return NULL;
-    }
 
     ret->name = name;
     ret->value = value;
@@ -538,7 +534,6 @@ virConfParseValue(virConfParserCtxtPtr ctxt)
         return NULL;
     }
     if (VIR_ALLOC(ret) < 0) {
-        virReportOOMError();
         virConfFreeList(lst);
         VIR_FREE(str);
         return NULL;
@@ -900,7 +895,6 @@ virConfSetValue(virConfPtr conf,
 
     if (!cur) {
         if (VIR_ALLOC(cur) < 0) {
-            virReportOOMError();
             virConfFreeValue(value);
             return -1;
         }
diff --git a/src/util/virdnsmasq.c b/src/util/virdnsmasq.c
index 2e63d83..2e2ccd1 100644
--- a/src/util/virdnsmasq.c
+++ b/src/util/virdnsmasq.c
@@ -117,8 +117,10 @@ addnhostsAdd(dnsmasqAddnHostsfile *addnhostsfile,
         if (VIR_ALLOC(addnhostsfile->hosts[idx].hostnames) < 0)
             goto alloc_error;
 
-        if (virAsprintf(&addnhostsfile->hosts[idx].ip, "%s", ipstr) < 0)
+        if (virAsprintf(&addnhostsfile->hosts[idx].ip, "%s", ipstr) < 0) {
+            virReportOOMError();
             goto alloc_error;
+        }
 
         addnhostsfile->hosts[idx].nhostnames = 0;
         addnhostsfile->nhosts++;
@@ -137,7 +139,6 @@ addnhostsAdd(dnsmasqAddnHostsfile *addnhostsfile,
     return 0;
 
  alloc_error:
-    virReportOOMError();
     VIR_FREE(ipstr);
     return -1;
 }
@@ -148,10 +149,8 @@ addnhostsNew(const char *name,
 {
     dnsmasqAddnHostsfile *addnhostsfile;
 
-    if (VIR_ALLOC(addnhostsfile) < 0) {
-        virReportOOMError();
+    if (VIR_ALLOC(addnhostsfile) < 0)
         return NULL;
-    }
 
     addnhostsfile->hosts = NULL;
     addnhostsfile->nhosts = 0;
@@ -308,7 +307,7 @@ hostsfileAdd(dnsmasqHostsfile *hostsfile,
 {
     char *ipstr = NULL;
     if (VIR_REALLOC_N(hostsfile->hosts, hostsfile->nhosts + 1) < 0)
-        goto alloc_error;
+        return -1;
 
     if (!(ipstr = virSocketAddrFormat(ip)))
         return -1;
@@ -359,10 +358,8 @@ hostsfileNew(const char *name,
 {
     dnsmasqHostsfile *hostsfile;
 
-    if (VIR_ALLOC(hostsfile) < 0) {
-        virReportOOMError();
+    if (VIR_ALLOC(hostsfile) < 0)
         return NULL;
-    }
 
     hostsfile->hosts = NULL;
     hostsfile->nhosts = 0;
@@ -463,10 +460,8 @@ dnsmasqContextNew(const char *network_name,
 {
     dnsmasqContext *ctx;
 
-    if (VIR_ALLOC(ctx) < 0) {
-        virReportOOMError();
+    if (VIR_ALLOC(ctx) < 0)
         return NULL;
-    }
 
     if (!(ctx->config_dir = strdup(config_dir))) {
         virReportOOMError();
diff --git a/src/util/vireventpoll.c b/src/util/vireventpoll.c
index 5c6d31b..95b60d6 100644
--- a/src/util/vireventpoll.c
+++ b/src/util/vireventpoll.c
@@ -379,10 +379,8 @@ static struct pollfd *virEventPollMakePollFDs(int *nfds) {
     }
 
     /* Setup the poll file handle data structs */
-    if (VIR_ALLOC_N(fds, *nfds) < 0) {
-        virReportOOMError();
+    if (VIR_ALLOC_N(fds, *nfds) < 0)
         return NULL;
-    }
 
     *nfds = 0;
     for (i = 0 ; i < eventLoop.handlesCount ; i++) {
diff --git a/src/util/virfile.c b/src/util/virfile.c
index 4a9fa81..8442c7b 100644
--- a/src/util/virfile.c
+++ b/src/util/virfile.c
@@ -193,10 +193,8 @@ virFileWrapperFdNew(int *fd, const char *name, unsigned int flags)
         return NULL;
     }
 
-    if (VIR_ALLOC(ret) < 0) {
-        virReportOOMError();
+    if (VIR_ALLOC(ret) < 0)
         return NULL;
-    }
 
     mode = fcntl(*fd, F_GETFL);
 
diff --git a/src/util/virhash.c b/src/util/virhash.c
index 2fe8751..dc4ab4b 100644
--- a/src/util/virhash.c
+++ b/src/util/virhash.c
@@ -126,10 +126,8 @@ virHashTablePtr virHashCreateFull(ssize_t size,
     if (size <= 0)
         size = 256;
 
-    if (VIR_ALLOC(table) < 0) {
-        virReportOOMError();
+    if (VIR_ALLOC(table) < 0)
         return NULL;
-    }
 
     table->seed = virRandomBits(32);
     table->size = size;
@@ -141,7 +139,6 @@ virHashTablePtr virHashCreateFull(ssize_t size,
     table->keyFree = keyFree;
 
     if (VIR_ALLOC_N(table->table, size) < 0) {
-        virReportOOMError();
         VIR_FREE(table);
         return NULL;
     }
@@ -201,7 +198,6 @@ virHashGrow(virHashTablePtr table, size_t size)
         return -1;
 
     if (VIR_ALLOC_N(table->table, size) < 0) {
-        virReportOOMError();
         table->table = oldtable;
         return -1;
     }
@@ -670,10 +666,8 @@ virHashKeyValuePairPtr virHashGetItems(virHashTablePtr table,
     if (numElems < 0)
         return NULL;
 
-    if (VIR_ALLOC_N(iter.sortArray, numElems + 1)) {
-        virReportOOMError();
+    if (VIR_ALLOC_N(iter.sortArray, numElems + 1))
         return NULL;
-    }
 
     virHashForEach(table, virHashGetKeysIterator, &iter);
 
diff --git a/src/util/virkeyfile.c b/src/util/virkeyfile.c
index d77e95d..fe2f7e5 100644
--- a/src/util/virkeyfile.c
+++ b/src/util/virkeyfile.c
@@ -286,10 +286,8 @@ virKeyFilePtr virKeyFileNew(void)
 {
     virKeyFilePtr conf;
 
-    if (VIR_ALLOC(conf) < 0) {
-        virReportOOMError();
+    if (VIR_ALLOC(conf) < 0)
         goto error;
-    }
 
     if (!(conf->groups = virHashCreate(10,
                                        virKeyFileEntryFree)))
diff --git a/src/util/virlockspace.c b/src/util/virlockspace.c
index 4ff0f3a..cdccdda 100644
--- a/src/util/virlockspace.c
+++ b/src/util/virlockspace.c
@@ -224,7 +224,7 @@ virLockSpaceResourceNew(virLockSpacePtr lockspace,
     res->lockHeld = true;
 
     if (VIR_EXPAND_N(res->owners, res->nOwners, 1) < 0)
-        goto no_memory;
+        goto error;
 
     res->owners[res->nOwners-1] = owner;
 
@@ -349,10 +349,8 @@ virLockSpacePtr virLockSpaceNewPostExecRestart(virJSONValuePtr object)
         size_t j;
         int m;
 
-        if (VIR_ALLOC(res) < 0) {
-            virReportOOMError();
+        if (VIR_ALLOC(res) < 0)
             goto error;
-        }
         res->fd = -1;
 
         if (!(tmp = virJSONValueObjectGetString(child, "name"))) {
@@ -420,7 +418,6 @@ virLockSpacePtr virLockSpaceNewPostExecRestart(virJSONValuePtr object)
 
         res->nOwners = m;
         if (VIR_ALLOC_N(res->owners, res->nOwners) < 0) {
-            virReportOOMError();
             virLockSpaceResourceFree(res);
             goto error;
         }
@@ -649,10 +646,8 @@ int virLockSpaceAcquireResource(virLockSpacePtr lockspace,
         if ((res->flags & VIR_LOCK_SPACE_ACQUIRE_SHARED) &&
             (flags & VIR_LOCK_SPACE_ACQUIRE_SHARED)) {
 
-            if (VIR_EXPAND_N(res->owners, res->nOwners, 1) < 0) {
-                virReportOOMError();
+            if (VIR_EXPAND_N(res->owners, res->nOwners, 1) < 0)
                 goto cleanup;
-            }
             res->owners[res->nOwners-1] = owner;
 
             goto done;
diff --git a/src/util/virnetdev.c b/src/util/virnetdev.c
index 00e0f94..652668e 100644
--- a/src/util/virnetdev.c
+++ b/src/util/virnetdev.c
@@ -995,10 +995,8 @@ virNetDevGetVirtualFunctions(const char *pfname,
                                   n_vfname) < 0)
         goto cleanup;
 
-    if (VIR_ALLOC_N(*vfname, *n_vfname) < 0) {
-        virReportOOMError();
+    if (VIR_ALLOC_N(*vfname, *n_vfname) < 0)
         goto cleanup;
-    }
 
     for (i = 0; i < *n_vfname; i++)
     {
diff --git a/src/util/virnetdevbandwidth.c b/src/util/virnetdevbandwidth.c
index 2c5b63a..2f4baae 100644
--- a/src/util/virnetdevbandwidth.c
+++ b/src/util/virnetdevbandwidth.c
@@ -296,25 +296,19 @@ virNetDevBandwidthCopy(virNetDevBandwidthPtr *dest,
         return 0;
     }
 
-    if (VIR_ALLOC(*dest) < 0) {
-        virReportOOMError();
+    if (VIR_ALLOC(*dest) < 0)
         goto cleanup;
-    }
 
     if (src->in) {
-        if (VIR_ALLOC((*dest)->in) < 0) {
-            virReportOOMError();
+        if (VIR_ALLOC((*dest)->in) < 0)
             goto cleanup;
-        }
         memcpy((*dest)->in, src->in, sizeof(*src->in));
     }
 
     if (src->out) {
-        if (VIR_ALLOC((*dest)->out) < 0) {
-            virReportOOMError();
+        if (VIR_ALLOC((*dest)->out) < 0)
             VIR_FREE((*dest)->in);
             goto cleanup;
-        }
         memcpy((*dest)->out, src->out, sizeof(*src->out));
     }
 
diff --git a/src/util/virnetdevmacvlan.c b/src/util/virnetdevmacvlan.c
index ddea11f..1e351ef 100644
--- a/src/util/virnetdevmacvlan.c
+++ b/src/util/virnetdevmacvlan.c
@@ -775,11 +775,11 @@ virNetDevMacVLanVPortProfileRegisterCallback(const char *ifname,
 
     if (virtPortProfile && virNetlinkEventServiceIsRunning(NETLINK_ROUTE)) {
         if (VIR_ALLOC(calld) < 0)
-            goto memory_error;
+            goto error;
         if ((calld->cr_ifname = strdup(ifname)) == NULL)
             goto memory_error;
         if (VIR_ALLOC(calld->virtPortProfile) < 0)
-            goto memory_error;
+            goto error;
         memcpy(calld->virtPortProfile, virtPortProfile, sizeof(*virtPortProfile));
         virMacAddrSet(&calld->macaddress, macaddress);
         if ((calld->linkdev = strdup(linkdev)) == NULL)
diff --git a/src/util/virnetdevvlan.c b/src/util/virnetdevvlan.c
index 2fe2017..e05e7e6 100644
--- a/src/util/virnetdevvlan.c
+++ b/src/util/virnetdevvlan.c
@@ -82,10 +82,8 @@ virNetDevVlanCopy(virNetDevVlanPtr dst, const virNetDevVlanPtr src)
     if (!src || src->nTags == 0)
         return 0;
 
-    if (VIR_ALLOC_N(dst->tag, src->nTags) < 0) {
-        virReportOOMError();
+    if (VIR_ALLOC_N(dst->tag, src->nTags) < 0)
         return -1;
-    }
 
     dst->trunk = src->trunk;
     dst->nTags = src->nTags;
diff --git a/src/util/virnetdevvportprofile.c b/src/util/virnetdevvportprofile.c
index bb97e3a..c51854a 100644
--- a/src/util/virnetdevvportprofile.c
+++ b/src/util/virnetdevvportprofile.c
@@ -409,10 +409,8 @@ int virNetDevVPortProfileMerge3(virNetDevVPortProfilePtr *result,
     }
 
     /* at least one of the source profiles is non-empty */
-    if (VIR_ALLOC(*result) < 0) {
-        virReportOOMError();
+    if (VIR_ALLOC(*result) < 0)
         return ret;
-    }
 
     /* start with the interface's profile. There are no pointers in a
      * virtualPortProfile, so a shallow copy is sufficient.
diff --git a/src/util/virnetlink.c b/src/util/virnetlink.c
index 0b36fdc..204eef3 100644
--- a/src/util/virnetlink.c
+++ b/src/util/virnetlink.c
@@ -516,10 +516,8 @@ virNetlinkEventServiceStart(unsigned int protocol, unsigned int groups)
 
     VIR_INFO("starting netlink event service with protocol %d", protocol);
 
-    if (VIR_ALLOC(srv) < 0) {
-        virReportOOMError();
+    if (VIR_ALLOC(srv) < 0)
         return -1;
-    }
 
     if (virMutexInit(&srv->lock) < 0) {
         VIR_FREE(srv);
@@ -645,10 +643,8 @@ virNetlinkEventAddClient(virNetlinkEventHandleCallback handleCB,
         VIR_DEBUG("Used %zu handle slots, adding at least %d more",
                   srv->handlesAlloc, NETLINK_EVENT_ALLOC_EXTENT);
         if (VIR_RESIZE_N(srv->handles, srv->handlesAlloc,
-                        srv->handlesCount, NETLINK_EVENT_ALLOC_EXTENT) < 0) {
-            virReportOOMError();
+                        srv->handlesCount, NETLINK_EVENT_ALLOC_EXTENT) < 0)
             goto error;
-        }
     }
     r = srv->handlesCount++;
 
diff --git a/src/util/virobject.c b/src/util/virobject.c
index 808edc4..d6a8b3a 100644
--- a/src/util/virobject.c
+++ b/src/util/virobject.c
@@ -132,7 +132,7 @@ virClassPtr virClassNew(virClassPtr parent,
     }
 
     if (VIR_ALLOC(klass) < 0)
-        goto no_memory;
+        goto cleanup;
 
     klass->parent = parent;
     if (!(klass->name = strdup(name)))
@@ -144,8 +144,9 @@ virClassPtr virClassNew(virClassPtr parent,
     return klass;
 
 no_memory:
-    VIR_FREE(klass);
     virReportOOMError();
+cleanup:
+    VIR_FREE(klass);
     return NULL;
 }
 
@@ -188,10 +189,8 @@ void *virObjectNew(virClassPtr klass)
     virObjectPtr obj = NULL;
     char *somebytes;
 
-    if (VIR_ALLOC_N(somebytes, klass->objectSize) < 0) {
-        virReportOOMError();
+    if (VIR_ALLOC_N(somebytes, klass->objectSize) < 0)
         return NULL;
-    }
     obj = (virObjectPtr)somebytes;
 
     obj->magic = klass->magic;
diff --git a/src/util/virpci.c b/src/util/virpci.c
index 4bb82aa..570dfa1 100644
--- a/src/util/virpci.c
+++ b/src/util/virpci.c
@@ -1374,10 +1374,8 @@ virPCIDeviceNew(unsigned domain,
     char *vendor = NULL;
     char *product = NULL;
 
-    if (VIR_ALLOC(dev) < 0) {
-        virReportOOMError();
+    if (VIR_ALLOC(dev) < 0)
         return NULL;
-    }
 
     dev->domain   = domain;
     dev->bus      = bus;
@@ -1558,10 +1556,8 @@ virPCIDeviceListAdd(virPCIDeviceListPtr list,
         return -1;
     }
 
-    if (VIR_REALLOC_N(list->devs, list->count+1) < 0) {
-        virReportOOMError();
+    if (VIR_REALLOC_N(list->devs, list->count+1) < 0)
         return -1;
-    }
 
     list->devs[list->count++] = dev;
 
@@ -1923,10 +1919,8 @@ virPCIGetDeviceAddressFromSysfsLink(const char *device_link,
     }
 
     config_address = basename(device_path);
-    if (VIR_ALLOC(*bdf) != 0) {
-        virReportOOMError();
+    if (VIR_ALLOC(*bdf) != 0)
         goto out;
-    }
 
     if (virPCIParseDeviceAddress(config_address, *bdf) != 0) {
         virReportError(VIR_ERR_INTERNAL_ERROR,
@@ -2016,7 +2010,6 @@ virPCIGetVirtualFunctions(const char *sysfs_path,
                       *num_virtual_functions);
             if (VIR_REALLOC_N(*virtual_functions,
                               (*num_virtual_functions) + 1) != 0) {
-                virReportOOMError();
                 VIR_FREE(device_link);
                 goto out;
             }
diff --git a/src/util/virprocess.c b/src/util/virprocess.c
index a492bd1..4a81503 100644
--- a/src/util/virprocess.c
+++ b/src/util/virprocess.c
@@ -527,10 +527,8 @@ int virProcessGetNamespaces(pid_t pid,
         if (de->d_name[0] == '.')
             continue;
 
-        if (VIR_EXPAND_N(*fdlist, *nfdlist, 1) < 0) {
-            virReportOOMError();
+        if (VIR_EXPAND_N(*fdlist, *nfdlist, 1) < 0)
             goto cleanup;
-        }
 
         if (virAsprintf(&nsfile, "%s/%s", nsdir, de->d_name) < 0) {
             virReportOOMError();
diff --git a/src/util/virsexpr.c b/src/util/virsexpr.c
index 81dfbe6..5c19da4 100644
--- a/src/util/virsexpr.c
+++ b/src/util/virsexpr.c
@@ -48,10 +48,8 @@ sexpr_new(void)
 {
     struct sexpr *ret;
 
-    if (VIR_ALLOC(ret) < 0) {
-        virReportOOMError();
+    if (VIR_ALLOC(ret) < 0)
         return NULL;
-    }
     ret->kind = SEXPR_NIL;
     return ret;
 }
diff --git a/src/util/virstoragefile.c b/src/util/virstoragefile.c
index aabb5c8..f12c25e 100644
--- a/src/util/virstoragefile.c
+++ b/src/util/virstoragefile.c
@@ -318,10 +318,8 @@ qcowXGetBackingStore(char **res,
         return BACKING_STORE_INVALID;
     if (size + 1 == 0)
         return BACKING_STORE_INVALID;
-    if (VIR_ALLOC_N(*res, size + 1) < 0) {
-        virReportOOMError();
+    if (VIR_ALLOC_N(*res, size + 1) < 0)
         return BACKING_STORE_ERROR;
-    }
     memcpy(*res, buf + offset, size);
     (*res)[size] = '\0';
 
@@ -396,10 +394,8 @@ vmdk4GetBackingStore(char **res,
     size_t len;
     int ret = BACKING_STORE_ERROR;
 
-    if (VIR_ALLOC_N(desc, STORAGE_MAX_HEAD + 1) < 0) {
-        virReportOOMError();
+    if (VIR_ALLOC_N(desc, STORAGE_MAX_HEAD + 1) < 0)
         goto cleanup;
-    }
 
     *res = NULL;
     /*
@@ -481,10 +477,8 @@ qedGetBackingStore(char **res,
         return BACKING_STORE_OK;
     if (offset + size > buf_size || offset + size < offset)
         return BACKING_STORE_INVALID;
-    if (VIR_ALLOC_N(*res, size + 1) < 0) {
-        virReportOOMError();
+    if (VIR_ALLOC_N(*res, size + 1) < 0)
         return BACKING_STORE_ERROR;
-    }
     memcpy(*res, buf + offset, size);
     (*res)[size] = '\0';
 
@@ -686,10 +680,8 @@ virStorageFileGetMetadataInternal(const char *path,
 
     VIR_DEBUG("path=%s, fd=%d, format=%d", path, fd, format);
 
-    if (VIR_ALLOC(meta) < 0) {
-        virReportOOMError();
+    if (VIR_ALLOC(meta) < 0)
         return NULL;
-    }
 
     if (fstat(fd, &sb) < 0) {
         virReportSystemError(errno,
@@ -707,10 +699,8 @@ virStorageFileGetMetadataInternal(const char *path,
         goto cleanup;
     }
 
-    if (VIR_ALLOC_N(buf, len) < 0) {
-        virReportOOMError();
+    if (VIR_ALLOC_N(buf, len) < 0)
         goto cleanup;
-    }
 
     if ((len = read(fd, buf, len)) < 0) {
         virReportSystemError(errno, _("cannot read header '%s'"), path);
@@ -849,10 +839,8 @@ virStorageFileProbeFormatFromFD(const char *path, int fd)
         return VIR_STORAGE_FILE_DIR;
     }
 
-    if (VIR_ALLOC_N(head, len) < 0) {
-        virReportOOMError();
+    if (VIR_ALLOC_N(head, len) < 0)
         return -1;
-    }
 
     if (lseek(fd, 0, SEEK_SET) == (off_t)-1) {
         virReportSystemError(errno, _("cannot set to start of '%s'"), path);
diff --git a/src/util/virstring.c b/src/util/virstring.c
index 0420ca3..35d16be 100644
--- a/src/util/virstring.c
+++ b/src/util/virstring.c
@@ -79,7 +79,7 @@ char **virStringSplit(const char *string,
             size_t len = tmp - remainder;
 
             if (VIR_RESIZE_N(tokens, maxtokens, ntokens, 1) < 0)
-                goto no_memory;
+                goto error;
 
             if (!(tokens[ntokens] = strndup(remainder, len)))
                 goto no_memory;
@@ -90,7 +90,7 @@ char **virStringSplit(const char *string,
     }
     if (*string) {
         if (VIR_RESIZE_N(tokens, maxtokens, ntokens, 1) < 0)
-            goto no_memory;
+            goto error;
 
         if (!(tokens[ntokens] = strdup(remainder)))
             goto no_memory;
@@ -105,6 +105,7 @@ char **virStringSplit(const char *string,
 
 no_memory:
     virReportOOMError();
+error:
     for (i = 0 ; i < ntokens ; i++)
         VIR_FREE(tokens[i]);
     VIR_FREE(tokens);
diff --git a/src/util/virsysinfo.c b/src/util/virsysinfo.c
index 83c445d..cde7611 100644
--- a/src/util/virsysinfo.c
+++ b/src/util/virsysinfo.c
@@ -331,10 +331,8 @@ virSysinfoParseProcessor(const char *base, virSysinfoDefPtr ret)
     while ((tmp_base = strstr(tmp_base, "processor "))
            && (tmp_base = virSysinfoParseLine(tmp_base, "processor ",
                                               &procline))) {
-        if (VIR_EXPAND_N(ret->processor, ret->nprocessor, 1) < 0) {
-            virReportOOMError();
+        if (VIR_EXPAND_N(ret->processor, ret->nprocessor, 1) < 0)
             goto cleanup;
-        }
         processor = &ret->processor[ret->nprocessor - 1];
         processor->processor_manufacturer = strdup(manufacturer);
         if (!virSysinfoParseDelimited(procline, "version",
@@ -778,7 +776,7 @@ virSysinfoRead(void) {
         goto cleanup;
 
     if (VIR_ALLOC(ret) < 0)
-        goto no_memory;
+        goto error;
 
     ret->type = VIR_SYSINFO_SMBIOS;
 
@@ -806,7 +804,7 @@ cleanup:
 
 no_memory:
     virReportOOMError();
-
+error:
     virSysinfoDefFree(ret);
     ret = NULL;
     goto cleanup;
diff --git a/src/util/virthreadpool.c b/src/util/virthreadpool.c
index e657145..b1e2c0c 100644
--- a/src/util/virthreadpool.c
+++ b/src/util/virthreadpool.c
@@ -169,10 +169,8 @@ virThreadPoolPtr virThreadPoolNew(size_t minWorkers,
     if (minWorkers > maxWorkers)
         minWorkers = maxWorkers;
 
-    if (VIR_ALLOC(pool) < 0) {
-        virReportOOMError();
+    if (VIR_ALLOC(pool) < 0)
         return NULL;
-    }
 
     pool->jobList.tail = pool->jobList.head = NULL;
 
@@ -193,10 +191,8 @@ virThreadPoolPtr virThreadPoolNew(size_t minWorkers,
     pool->maxWorkers = maxWorkers;
 
     for (i = 0; i < minWorkers; i++) {
-        if (VIR_ALLOC(data) < 0) {
-            virReportOOMError();
+        if (VIR_ALLOC(data) < 0)
             goto error;
-        }
         data->pool = pool;
         data->cond = &pool->cond;
 
@@ -216,10 +212,8 @@ virThreadPoolPtr virThreadPoolNew(size_t minWorkers,
             goto error;
 
         for (i = 0; i < prioWorkers; i++) {
-            if (VIR_ALLOC(data) < 0) {
-                virReportOOMError();
+            if (VIR_ALLOC(data) < 0)
                 goto error;
-            }
             data->pool = pool;
             data->cond = &pool->prioCond;
             data->priority = true;
@@ -313,14 +307,11 @@ int virThreadPoolSendJob(virThreadPoolPtr pool,
 
     if (pool->freeWorkers - pool->jobQueueDepth <= 0 &&
         pool->nWorkers < pool->maxWorkers) {
-        if (VIR_EXPAND_N(pool->workers, pool->nWorkers, 1) < 0) {
-            virReportOOMError();
+        if (VIR_EXPAND_N(pool->workers, pool->nWorkers, 1) < 0)
             goto error;
-        }
 
         if (VIR_ALLOC(data) < 0) {
             pool->nWorkers--;
-            virReportOOMError();
             goto error;
         }
 
@@ -337,10 +328,8 @@ int virThreadPoolSendJob(virThreadPoolPtr pool,
         }
     }
 
-    if (VIR_ALLOC(job) < 0) {
-        virReportOOMError();
+    if (VIR_ALLOC(job) < 0)
         goto error;
-    }
 
     job->data = jobData;
     job->priority = priority;
diff --git a/src/util/virtime.c b/src/util/virtime.c
index b54a4e8..4684716 100644
--- a/src/util/virtime.c
+++ b/src/util/virtime.c
@@ -304,10 +304,8 @@ char *virTimeStringNow(void)
 {
     char *ret;
 
-    if (VIR_ALLOC_N(ret, VIR_TIME_STRING_BUFLEN) < 0) {
-        virReportOOMError();
+    if (VIR_ALLOC_N(ret, VIR_TIME_STRING_BUFLEN) < 0)
         return NULL;
-    }
 
     if (virTimeStringNowRaw(ret) < 0) {
         virReportSystemError(errno, "%s",
@@ -335,10 +333,8 @@ char *virTimeStringThen(unsigned long long when)
 {
     char *ret;
 
-    if (VIR_ALLOC_N(ret, VIR_TIME_STRING_BUFLEN) < 0) {
-        virReportOOMError();
+    if (VIR_ALLOC_N(ret, VIR_TIME_STRING_BUFLEN) < 0)
         return NULL;
-    }
 
     if (virTimeStringThenRaw(when, ret) < 0) {
         virReportSystemError(errno, "%s",
diff --git a/src/util/virtypedparam.c b/src/util/virtypedparam.c
index c196321..aa850f5 100644
--- a/src/util/virtypedparam.c
+++ b/src/util/virtypedparam.c
@@ -603,10 +603,8 @@ virTypedParamsAddInt(virTypedParameterPtr *params,
     virResetLastError();
 
     VIR_TYPED_PARAM_CHECK();
-    if (VIR_RESIZE_N(*params, max, n, 1) < 0) {
-        virReportOOMError();
+    if (VIR_RESIZE_N(*params, max, n, 1) < 0)
         goto error;
-    }
     *maxparams = max;
 
     if (virTypedParameterAssign(*params + n, name,
@@ -653,10 +651,8 @@ virTypedParamsAddUInt(virTypedParameterPtr *params,
     virResetLastError();
 
     VIR_TYPED_PARAM_CHECK();
-    if (VIR_RESIZE_N(*params, max, n, 1) < 0) {
-        virReportOOMError();
+    if (VIR_RESIZE_N(*params, max, n, 1) < 0)
         goto error;
-    }
     *maxparams = max;
 
     if (virTypedParameterAssign(*params + n, name,
@@ -703,10 +699,8 @@ virTypedParamsAddLLong(virTypedParameterPtr *params,
     virResetLastError();
 
     VIR_TYPED_PARAM_CHECK();
-    if (VIR_RESIZE_N(*params, max, n, 1) < 0) {
-        virReportOOMError();
+    if (VIR_RESIZE_N(*params, max, n, 1) < 0)
         goto error;
-    }
     *maxparams = max;
 
     if (virTypedParameterAssign(*params + n, name,
@@ -753,10 +747,8 @@ virTypedParamsAddULLong(virTypedParameterPtr *params,
     virResetLastError();
 
     VIR_TYPED_PARAM_CHECK();
-    if (VIR_RESIZE_N(*params, max, n, 1) < 0) {
-        virReportOOMError();
+    if (VIR_RESIZE_N(*params, max, n, 1) < 0)
         goto error;
-    }
     *maxparams = max;
 
     if (virTypedParameterAssign(*params + n, name,
@@ -803,10 +795,8 @@ virTypedParamsAddDouble(virTypedParameterPtr *params,
     virResetLastError();
 
     VIR_TYPED_PARAM_CHECK();
-    if (VIR_RESIZE_N(*params, max, n, 1) < 0) {
-        virReportOOMError();
+    if (VIR_RESIZE_N(*params, max, n, 1) < 0)
         goto error;
-    }
     *maxparams = max;
 
     if (virTypedParameterAssign(*params + n, name,
@@ -853,10 +843,8 @@ virTypedParamsAddBoolean(virTypedParameterPtr *params,
     virResetLastError();
 
     VIR_TYPED_PARAM_CHECK();
-    if (VIR_RESIZE_N(*params, max, n, 1) < 0) {
-        virReportOOMError();
+    if (VIR_RESIZE_N(*params, max, n, 1) < 0)
         goto error;
-    }
     *maxparams = max;
 
     if (virTypedParameterAssign(*params + n, name,
@@ -906,16 +894,12 @@ virTypedParamsAddString(virTypedParameterPtr *params,
     virResetLastError();
 
     VIR_TYPED_PARAM_CHECK();
-    if (VIR_RESIZE_N(*params, max, n, 1) < 0) {
-        virReportOOMError();
+    if (VIR_RESIZE_N(*params, max, n, 1) < 0)
         goto error;
-    }
     *maxparams = max;
 
-    if (value && !(str = strdup(value))) {
-        virReportOOMError();
+    if (value && !(str = strdup(value)))
         goto error;
-    }
 
     if (virTypedParameterAssign(*params + n, name,
                                 VIR_TYPED_PARAM_STRING, str) < 0) {
@@ -968,10 +952,8 @@ virTypedParamsAddFromString(virTypedParameterPtr *params,
     virResetLastError();
 
     VIR_TYPED_PARAM_CHECK();
-    if (VIR_RESIZE_N(*params, max, n, 1) < 0) {
-        virReportOOMError();
+    if (VIR_RESIZE_N(*params, max, n, 1) < 0)
         goto error;
-    }
     *maxparams = max;
 
     if (virTypedParameterAssignFromStr(*params + n, name, type, value) < 0)
diff --git a/src/util/viruri.c b/src/util/viruri.c
index 2888cb0..465fdf0 100644
--- a/src/util/viruri.c
+++ b/src/util/viruri.c
@@ -168,7 +168,7 @@ virURIParse(const char *uri)
     }
 
     if (VIR_ALLOC(ret) < 0)
-        goto no_memory;
+        goto error;
 
     if (xmluri->scheme &&
         !(ret->scheme = strdup(xmluri->scheme)))
diff --git a/src/util/virusb.c b/src/util/virusb.c
index 5974602..4ba6de5 100644
--- a/src/util/virusb.c
+++ b/src/util/virusb.c
@@ -332,10 +332,8 @@ virUSBDeviceNew(unsigned int bus,
 {
     virUSBDevicePtr dev;
 
-    if (VIR_ALLOC(dev) < 0) {
-        virReportOOMError();
+    if (VIR_ALLOC(dev) < 0)
         return NULL;
-    }
 
     dev->bus     = bus;
     dev->dev     = devno;
@@ -454,10 +452,8 @@ virUSBDeviceListAdd(virUSBDeviceListPtr list,
         return -1;
     }
 
-    if (VIR_REALLOC_N(list->devs, list->count+1) < 0) {
-        virReportOOMError();
+    if (VIR_REALLOC_N(list->devs, list->count+1) < 0)
         return -1;
-    }
 
     list->devs[list->count++] = dev;
 
diff --git a/src/util/virutil.c b/src/util/virutil.c
index 42b4295..7f375d4 100644
--- a/src/util/virutil.c
+++ b/src/util/virutil.c
@@ -368,10 +368,8 @@ virPipeReadUntilEOF(int outfd, int errfd,
 
             buf = ((fds[i].fd == outfd) ? outbuf : errbuf);
             size = (*buf ? strlen(*buf) : 0);
-            if (VIR_REALLOC_N(*buf, size+got+1) < 0) {
-                virReportOOMError();
+            if (VIR_REALLOC_N(*buf, size+got+1) < 0)
                 goto error;
-            }
             memmove(*buf+size, data, got);
             (*buf)[size+got] = '\0';
         }
@@ -2233,10 +2231,8 @@ char *virIndexToDiskName(int idx, const char *prefix)
 
     offset = strlen(prefix);
 
-    if (VIR_ALLOC_N(name, offset + i + 1)) {
-        virReportOOMError();
+    if (VIR_ALLOC_N(name, offset + i + 1))
         return NULL;
-    }
 
     strcpy(name, prefix);
     name[offset + i] = '\0';
@@ -2355,10 +2351,8 @@ static char *virGetUserEnt(uid_t uid,
     if (val < 0)
         strbuflen = 1024;
 
-    if (VIR_ALLOC_N(strbuf, strbuflen) < 0) {
-        virReportOOMError();
+    if (VIR_ALLOC_N(strbuf, strbuflen) < 0)
         return NULL;
-    }
 
     /*
      * From the manpage (terrifying but true):
@@ -2369,7 +2363,6 @@ static char *virGetUserEnt(uid_t uid,
      */
     while ((rc = getpwuid_r(uid, &pwbuf, strbuf, strbuflen, &pw)) == ERANGE) {
         if (VIR_RESIZE_N(strbuf, strbuflen, strbuflen, strbuflen) < 0) {
-            virReportOOMError();
             VIR_FREE(strbuf);
             return NULL;
         }
@@ -2408,10 +2401,8 @@ static char *virGetGroupEnt(gid_t gid)
     if (val < 0)
         strbuflen = 1024;
 
-    if (VIR_ALLOC_N(strbuf, strbuflen) < 0) {
-        virReportOOMError();
+    if (VIR_ALLOC_N(strbuf, strbuflen) < 0)
         return NULL;
-    }
 
     /*
      * From the manpage (terrifying but true):
@@ -2422,7 +2413,6 @@ static char *virGetGroupEnt(gid_t gid)
      */
     while ((rc = getgrgid_r(gid, &grbuf, strbuf, strbuflen, &gr)) == ERANGE) {
         if (VIR_RESIZE_N(strbuf, strbuflen, strbuflen, strbuflen) < 0) {
-            virReportOOMError();
             VIR_FREE(strbuf);
             return NULL;
         }
@@ -2527,16 +2517,12 @@ virGetUserIDByName(const char *name, uid_t *uid)
     if (val < 0)
         strbuflen = 1024;
 
-    if (VIR_ALLOC_N(strbuf, strbuflen) < 0) {
-        virReportOOMError();
+    if (VIR_ALLOC_N(strbuf, strbuflen) < 0)
         goto cleanup;
-    }
 
     while ((rc = getpwnam_r(name, &pwbuf, strbuf, strbuflen, &pw)) == ERANGE) {
-        if (VIR_RESIZE_N(strbuf, strbuflen, strbuflen, strbuflen) < 0) {
-            virReportOOMError();
+        if (VIR_RESIZE_N(strbuf, strbuflen, strbuflen, strbuflen) < 0)
             goto cleanup;
-        }
     }
 
     if (!pw) {
@@ -2611,16 +2597,12 @@ virGetGroupIDByName(const char *name, gid_t *gid)
     if (val < 0)
         strbuflen = 1024;
 
-    if (VIR_ALLOC_N(strbuf, strbuflen) < 0) {
-        virReportOOMError();
+    if (VIR_ALLOC_N(strbuf, strbuflen) < 0)
         goto cleanup;
-    }
 
     while ((rc = getgrnam_r(name, &grbuf, strbuf, strbuflen, &gr)) == ERANGE) {
-        if (VIR_RESIZE_N(strbuf, strbuflen, strbuflen, strbuflen) < 0) {
-            virReportOOMError();
+        if (VIR_RESIZE_N(strbuf, strbuflen, strbuflen, strbuflen) < 0)
             goto cleanup;
-        }
     }
 
     if (!gr) {
@@ -2708,14 +2690,12 @@ virSetUIDGID(uid_t uid, gid_t gid)
             bufsize = 16384;
 
         if (VIR_ALLOC_N(buf, bufsize) < 0) {
-            virReportOOMError();
             err = ENOMEM;
             goto error;
         }
         while ((rc = getpwuid_r(uid, &pwd, buf, bufsize,
                                 &pwd_result)) == ERANGE) {
             if (VIR_RESIZE_N(buf, bufsize, bufsize, bufsize) < 0) {
-                virReportOOMError();
                 err = ENOMEM;
                 goto error;
             }
diff --git a/src/util/virxml.c b/src/util/virxml.c
index aa55a33..c8ec805 100644
--- a/src/util/virxml.c
+++ b/src/util/virxml.c
@@ -609,7 +609,6 @@ virXPathNodeSet(const char *xpath,
     ret = obj->nodesetval->nodeNr;
     if (list != NULL && ret) {
         if (VIR_ALLOC_N(*list, ret) < 0) {
-            virReportOOMError();
             ret = -1;
         } else {
             memcpy(*list, obj->nodesetval->nodeTab,
-- 
1.8.1.5




More information about the libvir-list mailing list