summaryrefslogtreecommitdiff
path: root/source4/build/pidl
diff options
context:
space:
mode:
authorJelmer Vernooij <jelmer@samba.org>2005-07-18 23:58:59 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 13:29:38 -0500
commit762a6a14e8e99b079a226350eec8605edc51a8f9 (patch)
tree1c8506094ffe5d725f09add076a38f9650c6ae9f /source4/build/pidl
parent09fb6d2280187527898ae5af9c266c7474901dac (diff)
downloadsamba-762a6a14e8e99b079a226350eec8605edc51a8f9.tar.gz
samba-762a6a14e8e99b079a226350eec8605edc51a8f9.tar.bz2
samba-762a6a14e8e99b079a226350eec8605edc51a8f9.zip
r8559: Couple of (D)COM updates:
- Fixes annoying array-of-pointers bug in pidl. - No longer "inherit" alignment thru subcontexts - Use "Image Object" as example DCOM object, rather then the "My Computer" object, which is built-in and can't be accessed remotely as far as I can see (This used to be commit bd706d496405d274b68c1ee560211837a8e63009)
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