[PATCH 2/3] src/tests: use g_autoptr for virNWFilterDef and virNWFilterRuleDef
Ján Tomko
jtomko at redhat.com
Mon Jan 9 15:00:41 UTC 2023
On a Monday in 2023, Jiang Jiacheng wrote:
>Use g_autoptr() for virNWFilterDef and virNWFilterRuleDef and remove
>unnecessary label.
>
>Signed-off-by: Jiang Jiacheng <jiangjiacheng at huawei.com>
>---
> src/conf/nwfilter_conf.c | 44 ++++++++++++++--------------------
> src/conf/virnwfilterobj.c | 19 +++++++--------
> src/nwfilter/nwfilter_driver.c | 7 +++---
> tests/nwfilterxml2xmltest.c | 22 +++++++----------
> 4 files changed, 37 insertions(+), 55 deletions(-)
>
>diff --git a/src/conf/virnwfilterobj.c b/src/conf/virnwfilterobj.c
>index 2e75e90cf1..2a2d877f49 100644
>--- a/src/conf/virnwfilterobj.c
>+++ b/src/conf/virnwfilterobj.c
>@@ -564,37 +564,34 @@ virNWFilterObjListLoadConfig(virNWFilterObjList *nwfilters,
> const char *configDir,
> const char *name)
> {
>- virNWFilterDef *def = NULL;
>+ g_autoptr(virNWFilterDef) def = NULL;
> virNWFilterObj *obj;
> g_autofree char *configFile = NULL;
>
> if (!(configFile = virFileBuildPath(configDir, name, ".xml")))
>- goto error;
>+ return NULL;
>
> if (!(def = virNWFilterDefParse(NULL, configFile, 0)))
>- goto error;
>+ return NULL;
>
> if (STRNEQ(name, def->name)) {
> virReportError(VIR_ERR_XML_ERROR,
> _("network filter config filename '%s' "
> "does not match name '%s'"),
> configFile, def->name);
>- goto error;
>+ return NULL;
> }
>
> /* We generated a UUID, make it permanent by saving the config to disk */
> if (!def->uuid_specified &&
> virNWFilterSaveConfig(configDir, def) < 0)
>- goto error;
>+ return NULL;
>
>- if (!(obj = virNWFilterObjListAssignDef(nwfilters, def)))
>- goto error;
>+ if (!(obj = virNWFilterObjListAssignDef(nwfilters,
>+ g_steal_pointer(&def))))
>+ return NULL;
Stealing the pointer here would lead to a memory leak if
virNWFilterObjListAssignDef fails.
The pointer can only be set to NULL after it was successfully assigned
to the definition.
>
> return obj;
>-
>- error:
>- virNWFilterDefFree(def);
>- return NULL;
> }
>
>
>diff --git a/src/nwfilter/nwfilter_driver.c b/src/nwfilter/nwfilter_driver.c
>index 8e45096eaa..be21aa12c2 100644
>--- a/src/nwfilter/nwfilter_driver.c
>+++ b/src/nwfilter/nwfilter_driver.c
>@@ -531,7 +531,7 @@ nwfilterDefineXMLFlags(virConnectPtr conn,
>@@ -552,10 +552,10 @@ nwfilterDefineXMLFlags(virConnectPtr conn,
> goto cleanup;
>
> VIR_WITH_MUTEX_LOCK_GUARD(&driver->updateLock) {
>- if (!(obj = virNWFilterObjListAssignDef(driver->nwfilters, def)))
>+ if (!(obj = virNWFilterObjListAssignDef(driver->nwfilters,
>+ g_steal_pointer(&def))))
> goto cleanup;
> }
>- def = NULL;
Same here. These two changes can be dropped.
Jano
> objdef = virNWFilterObjGetDef(obj);
>
> if (virNWFilterSaveConfig(driver->configDir, objdef) < 0) {
>@@ -566,7 +566,6 @@ nwfilterDefineXMLFlags(virConnectPtr conn,
> nwfilter = virGetNWFilter(conn, objdef->name, objdef->uuid);
>
> cleanup:
>- virNWFilterDefFree(def);
> if (obj)
> virNWFilterObjUnlock(obj);
> return nwfilter;
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 228 bytes
Desc: not available
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20230109/ab4f0ad6/attachment.sig>
More information about the libvir-list
mailing list