svn commit: samba r6948 - in branches/tmp/pidl2/source/build/pidl: .
jelmer at samba.org
jelmer at samba.org
Tue May 24 01:31:18 GMT 2005
Author: jelmer
Date: 2005-05-24 01:31:04 +0000 (Tue, 24 May 2005)
New Revision: 6948
WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=6948
Log:
Array fixes (should fix RPC-EPMAPPER test)
Modified:
branches/tmp/pidl2/source/build/pidl/ndr_parser.pm
Changeset:
Modified: branches/tmp/pidl2/source/build/pidl/ndr_parser.pm
===================================================================
--- branches/tmp/pidl2/source/build/pidl/ndr_parser.pm 2005-05-24 00:42:11 UTC (rev 6947)
+++ branches/tmp/pidl2/source/build/pidl/ndr_parser.pm 2005-05-24 01:31:04 UTC (rev 6948)
@@ -662,21 +662,18 @@
$var_name = get_pointer_to($var_name);
}
- # primitives if $primitives or IS_DEFERRED
- if ($primitives or $l->{IS_DEFERRED}) {
+ if (($primitives and not $l->{IS_DEFERRED}) or ($deferred and $l->{IS_DEFERRED})) {
pidl "for ($counter = 0; $counter < $length; $counter++) {";
indent;
- ParseElementPushLevel($e, GetNextLevel($e, $l), $ndr, $var_name, $env, 1, !($l->{CONTAINS_DEFERRED} or $l->{IS_DEFERRED}));
-
+ ParseElementPushLevel($e, GetNextLevel($e, $l), $ndr, $var_name, $env, 1, 0);
deindent;
pidl "}";
}
- if ($deferred and ($l->{CONTAINS_DEFERRED} or $l->{IS_DEFERRED})) {
+ if ($deferred and ContainsDeferred($e, $l)) {
pidl "for ($counter = 0; $counter < $length; $counter++) {";
indent;
ParseElementPushLevel($e, GetNextLevel($e, $l), $ndr, $var_name, $env, 0, 1);
-
deindent;
pidl "}";
}
@@ -699,7 +696,7 @@
$var_name = append_prefix($e, $var_name);
- return unless $primitives or ($deferred and ContainsDeferred($e));
+ return unless $primitives or ($deferred and ContainsDeferred($e, $e->{LEVELS}[0]));
start_flags($e);
@@ -951,14 +948,15 @@
return undef;
}
-sub ContainsDeferred($)
+sub ContainsDeferred($$)
{
my $e = shift;
+ my $l = shift;
- foreach my $l (@{$e->{LEVELS}}) {
+ do {
return 1 if ($l->{IS_DEFERRED});
return 1 if ($l->{CONTAINS_DEFERRED});
- }
+ } while ($l = GetNextLevel($e,$l));
return 0;
}
@@ -1036,15 +1034,15 @@
$var_name = get_pointer_to($var_name);
}
- if ($primitives or $l->{IS_DEFERRED}) {
+ if (($primitives and not $l->{IS_DEFERRED}) or ($deferred and $l->{IS_DEFERRED})) {
pidl "for ($counter = 0; $counter < $length; $counter++) {";
indent;
- ParseElementPullLevel($e,GetNextLevel($e,$l), $ndr, $var_name, $env, 1, !($l->{CONTAINS_DEFERRED} or $l->{IS_DEFERRED}));
+ ParseElementPullLevel($e,GetNextLevel($e,$l), $ndr, $var_name, $env, 1, 0);
deindent;
pidl "}";
}
- if ($deferred and ($l->{CONTAINS_DEFERRED} or $l->{IS_DEFERRED})) {
+ if ($deferred and ContainsDeferred($e, $l)) {
pidl "for ($counter = 0; $counter < $length; $counter++) {";
indent;
ParseElementPullLevel($e,GetNextLevel($e,$l), $ndr, $var_name, $env, 0, 1);
@@ -1069,7 +1067,7 @@
$var_name = append_prefix($e, $var_name);
- return unless $primitives or ($deferred and ContainsDeferred($e));
+ return unless $primitives or ($deferred and ContainsDeferred($e, $e->{LEVELS}[0]));
start_flags($e);
More information about the samba-cvs
mailing list