diff options
Diffstat (limited to 'source4/build')
-rw-r--r-- | source4/build/pidl/Parse/Pidl/NDR.pm | 4 | ||||
-rw-r--r-- | source4/build/pidl/Parse/Pidl/Samba/NDR/Parser.pm | 6 | ||||
-rw-r--r-- | source4/build/pidl/TODO | 3 |
3 files changed, 9 insertions, 4 deletions
diff --git a/source4/build/pidl/Parse/Pidl/NDR.pm b/source4/build/pidl/Parse/Pidl/NDR.pm index e039934b1b..0c2b00539d 100644 --- a/source4/build/pidl/Parse/Pidl/NDR.pm +++ b/source4/build/pidl/Parse/Pidl/NDR.pm @@ -257,7 +257,9 @@ sub find_largest_alignment($) if ($e->{POINTERS}) { $a = 4; - } else { + } elsif (has_property($e, "subcontext")){ + $a = 1; + } else { $a = align_type($e->{TYPE}); } diff --git a/source4/build/pidl/Parse/Pidl/Samba/NDR/Parser.pm b/source4/build/pidl/Parse/Pidl/Samba/NDR/Parser.pm index b281dae9e7..bf245c0ac6 100644 --- a/source4/build/pidl/Parse/Pidl/Samba/NDR/Parser.pm +++ b/source4/build/pidl/Parse/Pidl/Samba/NDR/Parser.pm @@ -231,7 +231,7 @@ sub ParseArrayPushHeader($$$$$) } if ($l->{IS_VARYING}) { - pidl "NDR_CHECK(ndr_push_uint32($ndr, NDR_SCALARS, 0));"; + pidl "NDR_CHECK(ndr_push_uint32($ndr, NDR_SCALARS, 0));"; # array offset pidl "NDR_CHECK(ndr_push_uint32($ndr, NDR_SCALARS, $length));"; } @@ -552,7 +552,7 @@ sub ParseElementPushLevel } } $var_name = get_value_of($var_name); - ParseElementPushLevel($e, Parse::Pidl::NDR::GetNextLevel($e, $l), $ndr, $var_name, $env, $primitives, $deferred); + ParseElementPushLevel($e, Parse::Pidl::NDR::GetNextLevel($e, $l), $ndr, $var_name, $env, 1, 1); if ($l->{POINTER_TYPE} ne "ref") { deindent; @@ -865,7 +865,7 @@ sub ParseElementPullLevel } $var_name = get_value_of($var_name); - ParseElementPullLevel($e,Parse::Pidl::NDR::GetNextLevel($e,$l), $ndr, $var_name, $env, $primitives, $deferred); + ParseElementPullLevel($e,Parse::Pidl::NDR::GetNextLevel($e,$l), $ndr, $var_name, $env, 1, 1); if ($l->{POINTER_TYPE} ne "ref") { if ($l->{POINTER_TYPE} eq "relative") { diff --git a/source4/build/pidl/TODO b/source4/build/pidl/TODO index 00f875e00d..860b5d912c 100644 --- a/source4/build/pidl/TODO +++ b/source4/build/pidl/TODO @@ -4,3 +4,6 @@ - compatibility mode for generating MIDL-readable data: - strip out pidl-specific properties - convert subcontext() to an array of uint8. + +- don't be so strict on array boundaries.. arrays can and will be empty when + a (regular) remote error occurs |