diff options
author | Jelmer Vernooij <jelmer@samba.org> | 2006-05-14 00:22:24 +0000 |
---|---|---|
committer | Gerald (Jerry) Carter <jerry@samba.org> | 2007-10-10 14:06:02 -0500 |
commit | 2a9407fad39a472a356adbcdac3c0fa0a4d69a5f (patch) | |
tree | 1d906dbf8a2ca6aa5dc7e5599ee1b54499ad472a | |
parent | ddb43d8eeaef4c542bf98d99e76385209dfa54cc (diff) | |
download | samba-2a9407fad39a472a356adbcdac3c0fa0a4d69a5f.tar.gz samba-2a9407fad39a472a356adbcdac3c0fa0a4d69a5f.tar.bz2 samba-2a9407fad39a472a356adbcdac3c0fa0a4d69a5f.zip |
r15593: Warn about [out] arguments that are not pointers. These can all be
fixed by adding [ref] pointers.
This will cause a lot of warnings to be outputted by pidl for now. I will
fix these gradually over the next few days.
We need to avoid [out] arguments that are not pointers because they are
not understood by other IDL compilers and don't work with some of
our output modules (Samba3, Samba3NDR and ethereal)
(This used to be commit c4ab021ee8d93aa74f15deebf64a366b33b7bb9f)
-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}"); } |