From e5de09860ce20b8a62e5e0828874f0bb51460cea Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Sat, 13 Aug 2005 03:14:47 +0000 Subject: r9298: pull non-array elements before array elements to overcome the problem of arrays that have length_is() or size_is() properties that refer to later elements (This used to be commit 9526f2a5104b50f4b6ab575cfa6270abb0377e51) --- source4/build/pidl/Parse/Pidl/Samba/EJS.pm | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'source4') diff --git a/source4/build/pidl/Parse/Pidl/Samba/EJS.pm b/source4/build/pidl/Parse/Pidl/Samba/EJS.pm index 415ca584b5..1227e7aeb8 100644 --- a/source4/build/pidl/Parse/Pidl/Samba/EJS.pm +++ b/source4/build/pidl/Parse/Pidl/Samba/EJS.pm @@ -374,8 +374,20 @@ sub EjsPullFunction($) indent; pidl "NDR_CHECK(ejs_pull_struct_start(ejs, &v, \"input\"));"; + # we pull non-array elements before array elements as arrays + # may have length_is() or size_is() properties that depend + # on the non-array elements foreach my $e (@{$d->{ELEMENTS}}) { next unless (grep(/in/, @{$e->{DIRECTION}})); + next if (has_property($e, "length_is") || + has_property($e, "size_is")); + EjsPullElementTop($e, $env); + } + + foreach my $e (@{$d->{ELEMENTS}}) { + next unless (grep(/in/, @{$e->{DIRECTION}})); + next unless (has_property($e, "length_is") || + has_property($e, "size_is")); EjsPullElementTop($e, $env); } -- cgit