summaryrefslogtreecommitdiff
path: root/source4/pidl/lib/Parse
diff options
context:
space:
mode:
Diffstat (limited to 'source4/pidl/lib/Parse')
-rw-r--r--source4/pidl/lib/Parse/Pidl/NDR.pm7
-rw-r--r--source4/pidl/lib/Parse/Pidl/Samba3/ClientNDR.pm2
2 files changed, 5 insertions, 4 deletions
diff --git a/source4/pidl/lib/Parse/Pidl/NDR.pm b/source4/pidl/lib/Parse/Pidl/NDR.pm
index 21875a1297..f274836fe7 100644
--- a/source4/pidl/lib/Parse/Pidl/NDR.pm
+++ b/source4/pidl/lib/Parse/Pidl/NDR.pm
@@ -543,9 +543,10 @@ sub ParseFunction($$$)
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}});
+ nonfatal($x, "`$e->{NAME}' is [out] argument but not a pointer or array")
+ if ($e->{LEVELS}[0]->{TYPE} ne "POINTER" and
+ $e->{LEVELS}[0]->{TYPE} ne "ARRAY" and
+ grep(/out/, @{$e->{DIRECTION}}));
push (@elements, $e);
}
diff --git a/source4/pidl/lib/Parse/Pidl/Samba3/ClientNDR.pm b/source4/pidl/lib/Parse/Pidl/Samba3/ClientNDR.pm
index fa629e6101..31ea73f7aa 100644
--- a/source4/pidl/lib/Parse/Pidl/Samba3/ClientNDR.pm
+++ b/source4/pidl/lib/Parse/Pidl/Samba3/ClientNDR.pm
@@ -61,7 +61,7 @@ sub ParseFunction($$)
foreach my $e (@{$fn->{ELEMENTS}}) {
next unless (grep(/out/, @{$e->{DIRECTION}}));
- fatal($e, "[out] argument is not a pointer") if ($e->{LEVELS}[0]->{TYPE} ne "POINTER");
+ fatal($e, "[out] argument is not a pointer or array") if ($e->{LEVELS}[0]->{TYPE} ne "POINTER" and $e->{LEVELS}[0]->{TYPE} ne "ARRAY");
pidl "*$e->{NAME} = *r.out.$e->{NAME};";
}