summaryrefslogtreecommitdiff
path: root/daemon
diff options
context:
space:
mode:
authorMatthias Bolte <matthias.bolte@googlemail.com>2011-06-15 17:34:19 +0200
committerMatthias Bolte <matthias.bolte@googlemail.com>2011-06-15 17:34:19 +0200
commit9fbfcd3b44e8b450c9371421fe884ba6f8321904 (patch)
tree3dfcae26c9245e72f8f5894a3a5c8485fa3f85d0 /daemon
parentFix apibuild.py warnings about missing comment headers (diff)
downloadlibvirt-9fbfcd3b44e8b450c9371421fe884ba6f8321904.tar.gz
libvirt-9fbfcd3b44e8b450c9371421fe884ba6f8321904.tar.bz2
libvirt-9fbfcd3b44e8b450c9371421fe884ba6f8321904.zip
remote generator: Handle struct returning functions better (part 2)
Commit 64000eabedf2 is part 1, that only covered the daemon side by accident. Part 2 covers the client side too.
Diffstat (limited to 'daemon')
-rwxr-xr-xdaemon/remote_generator.pl17
1 files changed, 5 insertions, 12 deletions
diff --git a/daemon/remote_generator.pl b/daemon/remote_generator.pl
index 351866b4c..bcf5fd446 100755
--- a/daemon/remote_generator.pl
+++ b/daemon/remote_generator.pl
@@ -1225,21 +1225,14 @@ elsif ($opt_k) {
# select struct type for multi-return-value functions
if ($multi_ret) {
- my $last_arg;
- my $struct_name = $call->{ProcName};
- $struct_name =~ s/Get//;
-
- if ($call->{ProcName} eq "DomainGetBlockInfo") {
- # SPECIAL: virDomainGetBlockInfo has flags parameter after
- # the struct parameter in its signature
- $last_arg = pop(@args_list);
+ if (!(defined $call->{ret_offset})) {
+ die "multi-return-value without insert@<offset> annotation: $call->{ret}";
}
- push(@args_list, "vir${struct_name}Ptr result");
+ my $struct_name = $call->{ProcName};
+ $struct_name =~ s/Get//;
- if (defined $last_arg) {
- push(@args_list, $last_arg);
- }
+ splice(@args_list, $call->{ret_offset}, 0, ("vir${struct_name}Ptr result"));
}
if ($call->{streamflag} ne "none") {