
On Thu, May 16, 2013 at 08:40:53PM +0800, Osier Yang wrote:
virStorageVolDefParseXML: * Create "virStorageVolDefPtr def", and use ret to track the return value; frees the strings at "cleanup" label instead of freeing them in the middle.
virStorageVolDefFormat: * Use macro NULLSTR --- src/conf/storage_conf.c | 93 ++++++++++++++++++++++++------------------------- 1 file changed, 46 insertions(+), 47 deletions(-)
diff --git a/src/conf/storage_conf.c b/src/conf/storage_conf.c index dd55d2c..431a8eb 100644 --- a/src/conf/storage_conf.c +++ b/src/conf/storage_conf.c @@ -972,8 +972,8 @@ virStoragePoolDefParseNode(xmlDocPtr xml, virStoragePoolDefPtr def = NULL;
if (STRNEQ((const char *)root->name, "pool")) { - virReportError(VIR_ERR_XML_ERROR, - "%s", _("unknown root element for storage pool")); + virReportError(VIR_ERR_XML_ERROR, "%s", + _("unknown root element for storage pool")); goto cleanup; }
@@ -1149,8 +1149,8 @@ virStoragePoolDefFormat(virStoragePoolDefPtr def)
type = virStoragePoolTypeToString(def->type); if (!type) { - virReportError(VIR_ERR_INTERNAL_ERROR, - "%s", _("unexpected pool type")); + virReportError(VIR_ERR_INTERNAL_ERROR, "%s", + _("unexpected pool type")); goto cleanup; } virBufferAsprintf(&buf, "<pool type='%s'>\n", type); @@ -1214,8 +1214,8 @@ virStorageSize(const char *unit, unsigned long long *ret) { if (virStrToLong_ull(val, NULL, 10, ret) < 0) { - virReportError(VIR_ERR_XML_ERROR, - "%s", _("malformed capacity element")); + virReportError(VIR_ERR_XML_ERROR, "%s", + _("malformed capacity element")); return -1; } /* off_t is signed, so you cannot create a file larger than 2**63 @@ -1230,64 +1230,62 @@ static virStorageVolDefPtr virStorageVolDefParseXML(virStoragePoolDefPtr pool, xmlXPathContextPtr ctxt) { - virStorageVolDefPtr ret; + virStorageVolDefPtr def; virStorageVolOptionsPtr options; char *allocation = NULL; char *capacity = NULL; char *unit = NULL; xmlNodePtr node; + virStorageVolDefPtr ret = NULL;
IMHO having 2 variables for the same thing is a bit odd. IOW, I think the current code is better than what you've done here. If you want to have unified cleanup, do it like cleanup: VIR_FREE(allocation); VIR_FREE(capacity); VIR_FREE(unit); return ret; error: virStorageVolDefFree(ret); ret = NULL; goto cleanup; Daniel -- |: http://berrange.com -o- http://www.flickr.com/photos/dberrange/ :| |: http://libvirt.org -o- http://virt-manager.org :| |: http://autobuild.org -o- http://search.cpan.org/~danberr/ :| |: http://entangle-photo.org -o- http://live.gnome.org/gtk-vnc :|