diff options
-rw-r--r-- | source4/build/pidl/parser.pm | 2 | ||||
-rw-r--r-- | source4/build/pidl/util.pm | 4 |
2 files changed, 5 insertions, 1 deletions
diff --git a/source4/build/pidl/parser.pm b/source4/build/pidl/parser.pm index b52026a8d3..14314886dc 100644 --- a/source4/build/pidl/parser.pm +++ b/source4/build/pidl/parser.pm @@ -276,6 +276,8 @@ sub ParseElementPullBuffer($$$) ParseElementPullSwitch($e, $var_prefix, $ndr_flags, $switch); } elsif (util::is_builtin_type($e->{TYPE})) { $res .= "\t\tNDR_CHECK(ndr_pull_$e->{TYPE}(ndr, $cprefix$var_prefix$e->{NAME}));\n"; + } elsif ($e->{POINTERS}) { + $res .= "\t\tNDR_CHECK(ndr_pull_$e->{TYPE}(ndr, NDR_SCALARS|NDR_BUFFERS, $cprefix$var_prefix$e->{NAME}));\n"; } else { $res .= "\t\tNDR_CHECK(ndr_pull_$e->{TYPE}(ndr, $ndr_flags, $cprefix$var_prefix$e->{NAME}));\n"; } diff --git a/source4/build/pidl/util.pm b/source4/build/pidl/util.pm index 17d1d146ab..72176abab3 100644 --- a/source4/build/pidl/util.pm +++ b/source4/build/pidl/util.pm @@ -235,7 +235,9 @@ sub is_pure_scalar($) if (has_property($e, "ref")) { return 1; } - if (is_scalar_type($e->{TYPE}) && !$e->{POINTERS}) { + if (is_scalar_type($e->{TYPE}) && + !$e->{POINTERS} && + !array_size($e)) { return 1; } return 0; |