From 762a6a14e8e99b079a226350eec8605edc51a8f9 Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Mon, 18 Jul 2005 23:58:59 +0000 Subject: 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) --- source4/build/pidl/Parse/Pidl/NDR.pm | 4 +++- source4/build/pidl/Parse/Pidl/Samba/NDR/Parser.pm | 6 +++--- source4/build/pidl/TODO | 3 +++ 3 files changed, 9 insertions(+), 4 deletions(-) (limited to 'source4/build/pidl') 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 -- cgit