From df036e08294ec98a2c7049f7f2fe03de1fd2ae44 Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Sat, 5 Mar 2005 16:50:02 +0000 Subject: r5660: Reduce number of generated "{}"'s No longer complain about pointers to arrays - we support those. (This used to be commit 128c0ecf030043e81d73aaeda6afb731075f8f9e) --- source4/build/pidl/ndr.pm | 13 ++++++++----- source4/build/pidl/validator.pm | 3 --- 2 files changed, 8 insertions(+), 8 deletions(-) (limited to 'source4') diff --git a/source4/build/pidl/ndr.pm b/source4/build/pidl/ndr.pm index c460c92c95..8a654f7165 100644 --- a/source4/build/pidl/ndr.pm +++ b/source4/build/pidl/ndr.pm @@ -1820,15 +1820,18 @@ sub ParseFunctionElementPull($$) pidl "NDR_CHECK(ndr_pull_unique_ptr(ndr, &_ptr_$e->{NAME}));"; pidl "r->$inout.$e->{NAME} = NULL;"; pidl "if (_ptr_$e->{NAME}) {"; + indent; } elsif ($inout eq "out" && util::has_property($e, "ref")) { pidl "if (r->$inout.$e->{NAME}) {"; - } else { - pidl "{"; + indent; } - indent; + ParseArrayPull($e, "ndr", "r->$inout.", "NDR_SCALARS|NDR_BUFFERS"); - deindent; - pidl "}"; + + if (need_wire_pointer($e) or ($inout eq "out" and util::has_property($e, "ref"))) { + deindent; + pidl "}"; + } } else { if ($inout eq "out" && util::has_property($e, "ref")) { pidl "if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {"; diff --git a/source4/build/pidl/validator.pm b/source4/build/pidl/validator.pm index cf7df0dcb2..37f2e26e41 100644 --- a/source4/build/pidl/validator.pm +++ b/source4/build/pidl/validator.pm @@ -40,9 +40,6 @@ sub el_name($) sub ValidElement($) { my $e = shift; - if ($e->{POINTERS} && $e->{ARRAY_LEN}) { - fatal(el_name($e) . " : pidl cannot handle pointers to arrays. Use a substructure instead\n"); - } if (util::has_property($e, "ptr")) { fatal(el_name($e) . " : pidl does not support full NDR pointers yet\n"); -- cgit