]> xenbits.xensource.com Git - libvirt.git/commitdiff
remote generator, daemon: Combine multiple ifs in the generated code
authorMatthias Bolte <matthias.bolte@googlemail.com>
Sat, 23 Apr 2011 06:35:03 +0000 (08:35 +0200)
committerMatthias Bolte <matthias.bolte@googlemail.com>
Fri, 6 May 2011 18:08:34 +0000 (20:08 +0200)
daemon/remote_dispatch_bodies.c
daemon/remote_generator.pl

index 17de412cd13dfe42ae7224a9137e322945c686d1..21b930d3e839d9c54674d4322c735b9fdd66a532 100644 (file)
@@ -1801,12 +1801,12 @@ remoteDispatchDomainSnapshotListNames(
     rv = 0;
 
 cleanup:
-    if (rv < 0)
+    if (rv < 0) {
         remoteDispatchError(rerr);
+        VIR_FREE(ret->names.names_val);
+    }
     if (dom)
         virDomainFree(dom);
-    if (rv < 0)
-        VIR_FREE(ret->names.names_val);
     return rv;
 }
 
@@ -2631,10 +2631,10 @@ remoteDispatchListDefinedDomains(
     rv = 0;
 
 cleanup:
-    if (rv < 0)
+    if (rv < 0) {
         remoteDispatchError(rerr);
-    if (rv < 0)
         VIR_FREE(ret->names.names_val);
+    }
     return rv;
 }
 
@@ -2675,10 +2675,10 @@ remoteDispatchListDefinedInterfaces(
     rv = 0;
 
 cleanup:
-    if (rv < 0)
+    if (rv < 0) {
         remoteDispatchError(rerr);
-    if (rv < 0)
         VIR_FREE(ret->names.names_val);
+    }
     return rv;
 }
 
@@ -2719,10 +2719,10 @@ remoteDispatchListDefinedNetworks(
     rv = 0;
 
 cleanup:
-    if (rv < 0)
+    if (rv < 0) {
         remoteDispatchError(rerr);
-    if (rv < 0)
         VIR_FREE(ret->names.names_val);
+    }
     return rv;
 }
 
@@ -2763,10 +2763,10 @@ remoteDispatchListDefinedStoragePools(
     rv = 0;
 
 cleanup:
-    if (rv < 0)
+    if (rv < 0) {
         remoteDispatchError(rerr);
-    if (rv < 0)
         VIR_FREE(ret->names.names_val);
+    }
     return rv;
 }
 
@@ -2807,10 +2807,10 @@ remoteDispatchListDomains(
     rv = 0;
 
 cleanup:
-    if (rv < 0)
+    if (rv < 0) {
         remoteDispatchError(rerr);
-    if (rv < 0)
         VIR_FREE(ret->ids.ids_val);
+    }
     return rv;
 }
 
@@ -2851,10 +2851,10 @@ remoteDispatchListInterfaces(
     rv = 0;
 
 cleanup:
-    if (rv < 0)
+    if (rv < 0) {
         remoteDispatchError(rerr);
-    if (rv < 0)
         VIR_FREE(ret->names.names_val);
+    }
     return rv;
 }
 
@@ -2895,10 +2895,10 @@ remoteDispatchListNetworks(
     rv = 0;
 
 cleanup:
-    if (rv < 0)
+    if (rv < 0) {
         remoteDispatchError(rerr);
-    if (rv < 0)
         VIR_FREE(ret->names.names_val);
+    }
     return rv;
 }
 
@@ -2939,10 +2939,10 @@ remoteDispatchListNWFilters(
     rv = 0;
 
 cleanup:
-    if (rv < 0)
+    if (rv < 0) {
         remoteDispatchError(rerr);
-    if (rv < 0)
         VIR_FREE(ret->names.names_val);
+    }
     return rv;
 }
 
@@ -2983,10 +2983,10 @@ remoteDispatchListSecrets(
     rv = 0;
 
 cleanup:
-    if (rv < 0)
+    if (rv < 0) {
         remoteDispatchError(rerr);
-    if (rv < 0)
         VIR_FREE(ret->uuids.uuids_val);
+    }
     return rv;
 }
 
@@ -3027,10 +3027,10 @@ remoteDispatchListStoragePools(
     rv = 0;
 
 cleanup:
-    if (rv < 0)
+    if (rv < 0) {
         remoteDispatchError(rerr);
-    if (rv < 0)
         VIR_FREE(ret->names.names_val);
+    }
     return rv;
 }
 
@@ -3657,12 +3657,12 @@ remoteDispatchNodeDeviceListCaps(
     rv = 0;
 
 cleanup:
-    if (rv < 0)
+    if (rv < 0) {
         remoteDispatchError(rerr);
+        VIR_FREE(ret->names.names_val);
+    }
     if (dev)
         virNodeDeviceFree(dev);
-    if (rv < 0)
-        VIR_FREE(ret->names.names_val);
     return rv;
 }
 
@@ -3839,10 +3839,10 @@ remoteDispatchNodeGetCellsFreeMemory(
     rv = 0;
 
 cleanup:
-    if (rv < 0)
+    if (rv < 0) {
         remoteDispatchError(rerr);
-    if (rv < 0)
         VIR_FREE(ret->freeMems.freeMems_val);
+    }
     return rv;
 }
 
@@ -3920,10 +3920,10 @@ remoteDispatchNodeListDevices(
     rv = 0;
 
 cleanup:
-    if (rv < 0)
+    if (rv < 0) {
         remoteDispatchError(rerr);
-    if (rv < 0)
         VIR_FREE(ret->names.names_val);
+    }
     return rv;
 }
 
@@ -5017,12 +5017,12 @@ remoteDispatchStoragePoolListVolumes(
     rv = 0;
 
 cleanup:
-    if (rv < 0)
+    if (rv < 0) {
         remoteDispatchError(rerr);
+        VIR_FREE(ret->names.names_val);
+    }
     if (pool)
         virStoragePoolFree(pool);
-    if (rv < 0)
-        VIR_FREE(ret->names.names_val);
     return rv;
 }
 
index 1b43b8c9349ab933a0d453e2a04e908ba424cc6a..8bcd3d192ad19a25625572d4df3b96da841cd12e 100755 (executable)
@@ -333,6 +333,7 @@ elsif ($opt_b) {
         my @args_list = ();
         my @ret_list = ();
         my @free_list = ();
+        my @free_list_on_error = ("remoteDispatchError(rerr);");
 
         if ($calls{$_}->{args} ne "void") {
             # node device is special, as it's identified by name
@@ -425,9 +426,7 @@ elsif ($opt_b) {
                 if ($ret_member =~ m/remote_nonnull_string (\S+)<(\S+)>;/) {
                     push(@vars_list, "int len");
                     push(@ret_list, "ret->$1.$1_len = len;");
-                    push(@free_list,
-                         "    if (rv < 0)\n" .
-                         "        VIR_FREE(ret->$1.$1_val);");
+                    push(@free_list_on_error, "VIR_FREE(ret->$1.$1_val);");
                     $single_ret_var = "len";
                     $single_ret_by_ref = 0;
                     $single_ret_check = " < 0";
@@ -467,9 +466,7 @@ elsif ($opt_b) {
                 } elsif ($ret_member =~ m/int (\S+)<(\S+)>;/) {
                     push(@vars_list, "int len");
                     push(@ret_list, "ret->$1.$1_len = len;");
-                    push(@free_list,
-                         "    if (rv < 0)\n" .
-                         "        VIR_FREE(ret->$1.$1_val);");
+                    push(@free_list_on_error, "VIR_FREE(ret->$1.$1_val);");
                     $single_ret_var = "len";
                     $single_ret_by_ref = 0;
                     $single_ret_check = " < 0";
@@ -502,9 +499,7 @@ elsif ($opt_b) {
                 } elsif ($ret_member =~ m/hyper (\S+)<(\S+)>;/) {
                     push(@vars_list, "int len");
                     push(@ret_list, "ret->$1.$1_len = len;");
-                    push(@free_list,
-                         "    if (rv < 0)\n" .
-                         "        VIR_FREE(ret->$1.$1_val);");
+                    push(@free_list_on_error, "VIR_FREE(ret->$1.$1_val);");
                     $single_ret_var = "len";
                     $single_ret_by_ref = 0;
                     $single_ret_as_list = 1;
@@ -643,8 +638,19 @@ elsif ($opt_b) {
         print "    rv = 0;\n";
         print "\n";
         print "cleanup:\n";
-        print "    if (rv < 0)\n";
-        print "        remoteDispatchError(rerr);\n";
+        print "    if (rv < 0)";
+
+        if (scalar(@free_list_on_error) > 1) {
+            print " {";
+        }
+
+        print "\n        ";
+        print join("\n        ", @free_list_on_error);
+        print "\n";
+
+        if (scalar(@free_list_on_error) > 1) {
+            print "    }\n";
+        }
 
         print join("\n", @free_list);