svn commit: samba r9298 - in branches/SAMBA_4_0/source/build/pidl/Parse/Pidl/Samba: .

tridge at samba.org tridge at samba.org
Sat Aug 13 03:14:48 GMT 2005


Author: tridge
Date: 2005-08-13 03:14:47 +0000 (Sat, 13 Aug 2005)
New Revision: 9298

WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=9298

Log:
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

Modified:
   branches/SAMBA_4_0/source/build/pidl/Parse/Pidl/Samba/EJS.pm


Changeset:
Modified: branches/SAMBA_4_0/source/build/pidl/Parse/Pidl/Samba/EJS.pm
===================================================================
--- branches/SAMBA_4_0/source/build/pidl/Parse/Pidl/Samba/EJS.pm	2005-08-13 02:59:56 UTC (rev 9297)
+++ branches/SAMBA_4_0/source/build/pidl/Parse/Pidl/Samba/EJS.pm	2005-08-13 03:14:47 UTC (rev 9298)
@@ -374,11 +374,23 @@
 	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);
+	}
+
 	pidl "return NT_STATUS_OK;";
 	deindent;
 	pidl "}\n";



More information about the samba-cvs mailing list