[libvirt] [PATCH v2 5/9] conf: Clean up virStoragePoolObjLoad error processing
John Ferlan
jferlan at redhat.com
Wed Mar 28 21:19:29 UTC 2018
Use an error label to converge all the clean up processing options.
Signed-off-by: John Ferlan <jferlan at redhat.com>
---
src/conf/virstorageobj.c | 37 +++++++++++++++++++------------------
1 file changed, 19 insertions(+), 18 deletions(-)
diff --git a/src/conf/virstorageobj.c b/src/conf/virstorageobj.c
index 799b8c9fa..471262f29 100644
--- a/src/conf/virstorageobj.c
+++ b/src/conf/virstorageobj.c
@@ -1115,8 +1115,8 @@ virStoragePoolObjLoad(virStoragePoolObjListPtr pools,
const char *path,
const char *autostartLink)
{
- virStoragePoolDefPtr def;
- virStoragePoolObjPtr obj;
+ virStoragePoolDefPtr def = NULL;
+ virStoragePoolObjPtr obj = NULL;
if (!(def = virStoragePoolDefParseFile(path)))
return NULL;
@@ -1126,32 +1126,33 @@ virStoragePoolObjLoad(virStoragePoolObjListPtr pools,
_("Storage pool config filename '%s' does "
"not match pool name '%s'"),
path, def->name);
- virStoragePoolDefFree(def);
- return NULL;
+ goto error;
}
- if (!(obj = virStoragePoolObjAssignDef(pools, def))) {
- virStoragePoolDefFree(def);
- return NULL;
- }
+ if (!(obj = virStoragePoolObjAssignDef(pools, def)))
+ goto error;
+ def = NULL;
VIR_FREE(obj->configFile); /* for driver reload */
- if (VIR_STRDUP(obj->configFile, path) < 0) {
- virStoragePoolObjRemove(pools, obj);
- virObjectUnref(obj);
- return NULL;
- }
+ if (VIR_STRDUP(obj->configFile, path) < 0)
+ goto error;
+
VIR_FREE(obj->autostartLink); /* for driver reload */
- if (VIR_STRDUP(obj->autostartLink, autostartLink) < 0) {
- virStoragePoolObjRemove(pools, obj);
- virObjectUnref(obj);
- return NULL;
- }
+ if (VIR_STRDUP(obj->autostartLink, autostartLink) < 0)
+ goto error;
obj->autostart = virFileLinkPointsTo(obj->autostartLink,
obj->configFile);
return obj;
+
+ error:
+ if (obj) {
+ virStoragePoolObjRemove(pools, obj);
+ virObjectUnref(obj);
+ }
+ virStoragePoolDefFree(def);
+ return NULL;
}
--
2.13.6
More information about the libvir-list
mailing list