summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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}");
}