diff options
author | Jelmer Vernooij <jelmer@samba.org> | 2005-07-18 23:58:59 +0000 |
---|---|---|
committer | Gerald (Jerry) Carter <jerry@samba.org> | 2007-10-10 13:29:38 -0500 |
commit | 762a6a14e8e99b079a226350eec8605edc51a8f9 (patch) | |
tree | 1c8506094ffe5d725f09add076a38f9650c6ae9f /source4/build/pidl | |
parent | 09fb6d2280187527898ae5af9c266c7474901dac (diff) | |
download | samba-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.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 |