summaryrefslogtreecommitdiff
path: root/source4/pidl/lib/Parse
diff options
context:
space:
mode:
authorJelmer Vernooij <jelmer@samba.org>2006-09-14 12:25:41 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 14:18:42 -0500
commitdf08af841881d331285a56f76a826ebd19b426b8 (patch)
treeae8baa0e401e0a27728e1e01829b09c5d9870984 /source4/pidl/lib/Parse
parent5f68b76c4a02b2681e4533d010628a0dd6338768 (diff)
downloadsamba-df08af841881d331285a56f76a826ebd19b426b8.tar.gz
samba-df08af841881d331285a56f76a826ebd19b426b8.tar.bz2
samba-df08af841881d331285a56f76a826ebd19b426b8.zip
r18523: Allow [out] on arrays as well as pointers, use in unixinfo.
(This used to be commit f67b4d58acd2c3746e5ffeffa804e888ca3c49a5)
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};";
}