summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJelmer Vernooij <jelmer@samba.org>2006-05-14 00:22:24 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 14:06:02 -0500
commit2a9407fad39a472a356adbcdac3c0fa0a4d69a5f (patch)
tree1d906dbf8a2ca6aa5dc7e5599ee1b54499ad472a
parentddb43d8eeaef4c542bf98d99e76385209dfa54cc (diff)
downloadsamba-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.pm5
-rw-r--r--source4/pidl/lib/Parse/Pidl/ODL.pm15
-rw-r--r--source4/pidl/lib/Parse/Pidl/Samba3/Client.pm5
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}");
}