]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
virNWFilterRuleDefToRuleInst: Restructure code to avoid cleanup
authorPeter Krempa <pkrempa@redhat.com>
Wed, 4 Aug 2021 09:21:18 +0000 (11:21 +0200)
committerPeter Krempa <pkrempa@redhat.com>
Fri, 6 Aug 2021 06:53:26 +0000 (08:53 +0200)
Construct the 'ruleinst->vars' hash table separately in a temporary
variable so that 'ruleinst' can be allocated on success. This allows us
to get rid of the cleanup section.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
src/nwfilter/nwfilter_gentech_driver.c

index 4ea0f6f0d6f7478fdc690d8b3768dc41fc5889bb..c9ffa3083903451c62c7601ceef1c24ce027aae2 100644 (file)
@@ -252,8 +252,11 @@ virNWFilterRuleDefToRuleInst(virNWFilterDef *def,
                              GHashTable *vars,
                              virNWFilterInst *inst)
 {
+    g_autoptr(GHashTable) tmpvars = virHashNew(virNWFilterVarValueHashFree);
     virNWFilterRuleInst *ruleinst;
-    int ret = -1;
+
+    if (virNWFilterHashTablePutAll(vars, tmpvars) < 0)
+        return -1;
 
     ruleinst = g_new0(virNWFilterRuleInst, 1);
 
@@ -261,17 +264,11 @@ virNWFilterRuleDefToRuleInst(virNWFilterDef *def,
     ruleinst->chainPriority = def->chainPriority;
     ruleinst->def = rule;
     ruleinst->priority = rule->priority;
-    ruleinst->vars = virHashNew(virNWFilterVarValueHashFree);
-
-    if (virNWFilterHashTablePutAll(vars, ruleinst->vars) < 0)
-        goto cleanup;
+    ruleinst->vars = g_steal_pointer(&tmpvars);
 
     VIR_APPEND_ELEMENT(inst->rules, inst->nrules, ruleinst);
 
-    ret = 0;
- cleanup:
-    virNWFilterRuleInstFree(ruleinst);
-    return ret;
+    return 0;
 }