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;
}
rv = 0;
cleanup:
- if (rv < 0)
+ if (rv < 0) {
remoteDispatchError(rerr);
- if (rv < 0)
VIR_FREE(ret->names.names_val);
+ }
return rv;
}
rv = 0;
cleanup:
- if (rv < 0)
+ if (rv < 0) {
remoteDispatchError(rerr);
- if (rv < 0)
VIR_FREE(ret->names.names_val);
+ }
return rv;
}
rv = 0;
cleanup:
- if (rv < 0)
+ if (rv < 0) {
remoteDispatchError(rerr);
- if (rv < 0)
VIR_FREE(ret->names.names_val);
+ }
return rv;
}
rv = 0;
cleanup:
- if (rv < 0)
+ if (rv < 0) {
remoteDispatchError(rerr);
- if (rv < 0)
VIR_FREE(ret->names.names_val);
+ }
return rv;
}
rv = 0;
cleanup:
- if (rv < 0)
+ if (rv < 0) {
remoteDispatchError(rerr);
- if (rv < 0)
VIR_FREE(ret->ids.ids_val);
+ }
return rv;
}
rv = 0;
cleanup:
- if (rv < 0)
+ if (rv < 0) {
remoteDispatchError(rerr);
- if (rv < 0)
VIR_FREE(ret->names.names_val);
+ }
return rv;
}
rv = 0;
cleanup:
- if (rv < 0)
+ if (rv < 0) {
remoteDispatchError(rerr);
- if (rv < 0)
VIR_FREE(ret->names.names_val);
+ }
return rv;
}
rv = 0;
cleanup:
- if (rv < 0)
+ if (rv < 0) {
remoteDispatchError(rerr);
- if (rv < 0)
VIR_FREE(ret->names.names_val);
+ }
return rv;
}
rv = 0;
cleanup:
- if (rv < 0)
+ if (rv < 0) {
remoteDispatchError(rerr);
- if (rv < 0)
VIR_FREE(ret->uuids.uuids_val);
+ }
return rv;
}
rv = 0;
cleanup:
- if (rv < 0)
+ if (rv < 0) {
remoteDispatchError(rerr);
- if (rv < 0)
VIR_FREE(ret->names.names_val);
+ }
return rv;
}
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;
}
rv = 0;
cleanup:
- if (rv < 0)
+ if (rv < 0) {
remoteDispatchError(rerr);
- if (rv < 0)
VIR_FREE(ret->freeMems.freeMems_val);
+ }
return rv;
}
rv = 0;
cleanup:
- if (rv < 0)
+ if (rv < 0) {
remoteDispatchError(rerr);
- if (rv < 0)
VIR_FREE(ret->names.names_val);
+ }
return rv;
}
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;
}
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
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";
} 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";
} 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;
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);