diff options
author | Matthias Bolte <matthias.bolte@googlemail.com> | 2011-06-15 17:34:19 +0200 |
---|---|---|
committer | Matthias Bolte <matthias.bolte@googlemail.com> | 2011-06-15 17:34:19 +0200 |
commit | 9fbfcd3b44e8b450c9371421fe884ba6f8321904 (patch) | |
tree | 3dfcae26c9245e72f8f5894a3a5c8485fa3f85d0 /daemon | |
parent | Fix apibuild.py warnings about missing comment headers (diff) | |
download | libvirt-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-x | daemon/remote_generator.pl | 17 |
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") { |