diff options
Diffstat (limited to 'source4/pidl/lib/Parse/Pidl')
-rw-r--r-- | source4/pidl/lib/Parse/Pidl/NDR.pm | 5 | ||||
-rw-r--r-- | source4/pidl/lib/Parse/Pidl/ODL.pm | 15 | ||||
-rw-r--r-- | source4/pidl/lib/Parse/Pidl/Samba3/Client.pm | 5 |
3 files changed, 14 insertions, 11 deletions
diff --git a/source4/pidl/lib/Parse/Pidl/NDR.pm b/source4/pidl/lib/Parse/Pidl/NDR.pm index a4008a1545..3cbf416488 100644 --- a/source4/pidl/lib/Parse/Pidl/NDR.pm +++ b/source4/pidl/lib/Parse/Pidl/NDR.pm @@ -540,6 +540,11 @@ sub ParseFunction($$$) my $e = ParseElement($x); push (@{$e->{DIRECTION}}, "in") if (has_property($x, "in")); push (@{$e->{DIRECTION}}, "out") if (has_property($x, "out")); + + nonfatal($x, "`$e->{NAME}' is [out] argument but not a pointer") + if ($e->{LEVELS}[0]->{TYPE} ne "POINTER") and + grep(/out/, @{$e->{DIRECTION}}); + push (@elements, $e); } diff --git a/source4/pidl/lib/Parse/Pidl/ODL.pm b/source4/pidl/lib/Parse/Pidl/ODL.pm index 082deaea1d..b5d65b6239 100644 --- a/source4/pidl/lib/Parse/Pidl/ODL.pm +++ b/source4/pidl/lib/Parse/Pidl/ODL.pm @@ -15,11 +15,10 @@ $VERSION = '0.01'; # find an interface in an array of interfaces sub get_interface($$) { - my($if) = shift; - my($n) = shift; + my($if,$n) = @_; - foreach(@{$if}) { - if($_->{NAME} eq $n) { return $_; } + foreach(@$if) { + return $_ if($_->{NAME} eq $n); } return 0; @@ -33,13 +32,17 @@ sub FunctionAddObjArgs($) 'NAME' => 'ORPCthis', 'POINTERS' => 0, 'PROPERTIES' => { 'in' => '1' }, - 'TYPE' => 'ORPCTHIS' + 'TYPE' => 'ORPCTHIS', + 'FILE' => $e->{FILE}, + 'LINE' => $e->{LINE} }); unshift(@{$e->{ELEMENTS}}, { 'NAME' => 'ORPCthat', 'POINTERS' => 0, 'PROPERTIES' => { 'out' => '1' }, - 'TYPE' => 'ORPCTHAT' + 'TYPE' => 'ORPCTHAT', + 'FILE' => $e->{FILE}, + 'LINE' => $e->{LINE} }); } diff --git a/source4/pidl/lib/Parse/Pidl/Samba3/Client.pm b/source4/pidl/lib/Parse/Pidl/Samba3/Client.pm index 59f0341d02..9e26e9a21e 100644 --- a/source4/pidl/lib/Parse/Pidl/Samba3/Client.pm +++ b/source4/pidl/lib/Parse/Pidl/Samba3/Client.pm @@ -85,11 +85,6 @@ sub ParseFunction($$) foreach my $e (@{$fn->{ELEMENTS}}) { next unless (grep(/out/, @{$e->{DIRECTION}})); - if ($e->{LEVELS}[0]->{TYPE} ne "POINTER") { - warning($e->{ORIGINAL}, "First element not a pointer for [out] argument"); - next; - } - CopyLevel($e, $e->{LEVELS}[1], $e->{NAME}, "r.$e->{NAME}"); } |