[libvirt] [PATCH] conf: eliminate redundat VIR_ALLOC of first element of hosts.

virNetworkDNSHostsDefParseXML was calling VIR_ALLOC(def->hosts) if def->nhosts was 0. This is a waste of time, though, since VIR_REALLOC_N is called a few lines further down, prior to any use of def->hosts. --- src/conf/network_conf.c | 8 -------- 1 files changed, 0 insertions(+), 8 deletions(-) diff --git a/src/conf/network_conf.c b/src/conf/network_conf.c index e055094..109739f 100644 --- a/src/conf/network_conf.c +++ b/src/conf/network_conf.c @@ -495,14 +495,6 @@ virNetworkDNSHostsDefParseXML(virNetworkDNSDefPtr def, virSocketAddr inaddr; int ret = -1; - if (def->hosts == NULL) { - if (VIR_ALLOC(def->hosts) < 0) { - virReportOOMError(); - goto error; - } - def->nhosts = 0; - } - if (!(ip = virXMLPropString(node, "ip")) || (virSocketParseAddr(ip, &inaddr, AF_UNSPEC) < 0)) { virNetworkReportError(VIR_ERR_XML_DETAIL, -- 1.7.3.4

On Thu, Aug 11, 2011 at 12:15:03AM -0400, Laine Stump wrote:
virNetworkDNSHostsDefParseXML was calling VIR_ALLOC(def->hosts) if def->nhosts was 0. This is a waste of time, though, since VIR_REALLOC_N is called a few lines further down, prior to any use of def->hosts. --- src/conf/network_conf.c | 8 -------- 1 files changed, 0 insertions(+), 8 deletions(-)
diff --git a/src/conf/network_conf.c b/src/conf/network_conf.c index e055094..109739f 100644 --- a/src/conf/network_conf.c +++ b/src/conf/network_conf.c @@ -495,14 +495,6 @@ virNetworkDNSHostsDefParseXML(virNetworkDNSDefPtr def, virSocketAddr inaddr; int ret = -1;
- if (def->hosts == NULL) { - if (VIR_ALLOC(def->hosts) < 0) { - virReportOOMError(); - goto error; - } - def->nhosts = 0; - } - if (!(ip = virXMLPropString(node, "ip")) || (virSocketParseAddr(ip, &inaddr, AF_UNSPEC) < 0)) { virNetworkReportError(VIR_ERR_XML_DETAIL,
But that allowed to make sure that def->nhosts was initialized in that case and that's used later. Maybe just remove the if (VIR_ALLOC(def->hosts) < 0) { ... } block ? Daniel -- Daniel Veillard | libxml Gnome XML XSLT toolkit http://xmlsoft.org/ daniel@veillard.com | Rpmfind RPM search engine http://rpmfind.net/ http://veillard.com/ | virtualization library http://libvirt.org/

On 08/11/2011 02:28 AM, Daniel Veillard wrote:
On Thu, Aug 11, 2011 at 12:15:03AM -0400, Laine Stump wrote:
virNetworkDNSHostsDefParseXML was calling VIR_ALLOC(def->hosts) if def->nhosts was 0. This is a waste of time, though, since VIR_REALLOC_N is called a few lines further down, prior to any use of def->hosts. --- src/conf/network_conf.c | 8 -------- 1 files changed, 0 insertions(+), 8 deletions(-)
diff --git a/src/conf/network_conf.c b/src/conf/network_conf.c index e055094..109739f 100644 --- a/src/conf/network_conf.c +++ b/src/conf/network_conf.c @@ -495,14 +495,6 @@ virNetworkDNSHostsDefParseXML(virNetworkDNSDefPtr def, virSocketAddr inaddr; int ret = -1;
- if (def->hosts == NULL) { - if (VIR_ALLOC(def->hosts)< 0) { - virReportOOMError(); - goto error; - } - def->nhosts = 0; - } - if (!(ip = virXMLPropString(node, "ip")) || (virSocketParseAddr(ip,&inaddr, AF_UNSPEC)< 0)) { virNetworkReportError(VIR_ERR_XML_DETAIL, But that allowed to make sure that def->nhosts was initialized in that case and that's used later. Maybe just remove the if (VIR_ALLOC(def->hosts)< 0) { ... }
block ?
That crossed my mind when I first thought of cutting out this code, so I audited just to be sure - virNetworkDNSHostsDefParseXML() is called only by virNetworkDNSDefParseXML(), which always allocates the passed in def with VIR_ALLOC(), so def->nhosts is guaranteed to be initialized to 0. (Every other "nItems" in the virNetworkDNSDef is implicitly initialized; this is the only odd one, so removing it will eliminate potential confusion by anyone who is "coding by example". In general it seems that all of the ...ParseXML() functions assume that they're working with a struct that has been 0-filled.) If we don't want to assume 0-filled structs, there's a *lot* of work to be done in the conf directory :-)
participants (2)
-
Daniel Veillard
-
Laine Stump