Move the consumption of @def in virInterfaceObjNew and then handle that in the error path of virInterfaceObjListAssignDef since it's caller expects to need to free @def when NULL is returned and so would virInterfaceObjFree. Signed-off-by: John Ferlan <jferlan@xxxxxxxxxx> --- src/conf/virinterfaceobj.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/conf/virinterfaceobj.c b/src/conf/virinterfaceobj.c index 1e3f25c..159fcb2 100644 --- a/src/conf/virinterfaceobj.c +++ b/src/conf/virinterfaceobj.c @@ -47,7 +47,7 @@ struct _virInterfaceObjList { /* virInterfaceObj manipulation */ static virInterfaceObjPtr -virInterfaceObjNew(void) +virInterfaceObjNew(virInterfaceDefPtr def) { virInterfaceObjPtr obj; @@ -62,6 +62,7 @@ virInterfaceObjNew(void) } virInterfaceObjLock(obj); + obj->def = def; return obj; } @@ -251,17 +252,17 @@ virInterfaceObjListAssignDef(virInterfaceObjListPtr interfaces, return obj; } - if (!(obj = virInterfaceObjNew())) + if (!(obj = virInterfaceObjNew(def))) return NULL; if (VIR_APPEND_ELEMENT_COPY(interfaces->objs, interfaces->count, obj) < 0) { + obj->def = NULL; virInterfaceObjUnlock(obj); virInterfaceObjFree(obj); return NULL; } - obj->def = def; return obj; } -- 2.9.4 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list