summaryrefslogtreecommitdiff
path: root/source4/build/pidl
diff options
context:
space:
mode:
Diffstat (limited to 'source4/build/pidl')
-rw-r--r--source4/build/pidl/Parse/Pidl/NDR.pm4
-rw-r--r--source4/build/pidl/Parse/Pidl/Samba/NDR/Parser.pm6
-rw-r--r--source4/build/pidl/TODO3
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