diff options
author | Jelmer Vernooij <jelmer@samba.org> | 2009-03-01 17:29:04 +0100 |
---|---|---|
committer | Jelmer Vernooij <jelmer@samba.org> | 2009-03-01 17:29:04 +0100 |
commit | bbe2d30f66ebd8537203870b1225179f03d42744 (patch) | |
tree | 279b1d4d45bdcc69002565a52179c454460f39f0 /pidl/lib/Parse/Pidl/Samba4/NDR/Parser.pm | |
parent | 4903d20c215a01f70c242cb8cf4d455d0e352b7f (diff) | |
parent | 08b180e40e5179cc02d4aa1867d5063f47b85790 (diff) | |
download | samba-bbe2d30f66ebd8537203870b1225179f03d42744.tar.gz samba-bbe2d30f66ebd8537203870b1225179f03d42744.tar.bz2 samba-bbe2d30f66ebd8537203870b1225179f03d42744.zip |
Merge branch 'master' of git://git.samba.org/samba into convenience
Diffstat (limited to 'pidl/lib/Parse/Pidl/Samba4/NDR/Parser.pm')
-rw-r--r-- | pidl/lib/Parse/Pidl/Samba4/NDR/Parser.pm | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/pidl/lib/Parse/Pidl/Samba4/NDR/Parser.pm b/pidl/lib/Parse/Pidl/Samba4/NDR/Parser.pm index 0e4a7e2289..34aebc7f0f 100644 --- a/pidl/lib/Parse/Pidl/Samba4/NDR/Parser.pm +++ b/pidl/lib/Parse/Pidl/Samba4/NDR/Parser.pm @@ -586,9 +586,15 @@ sub ParseElementPushLevel my $length = ParseExpr($l->{LENGTH_IS}, $env, $e->{ORIGINAL}); my $counter = "cntr_$e->{NAME}_$l->{LEVEL_INDEX}"; + my $array_pointless = ($length eq "0"); + + if ($array_pointless) { + warning($e->{ORIGINAL}, "pointless array `$e->{NAME}' will always have size 0"); + } + $var_name = get_array_element($var_name, $counter); - if (($primitives and not $l->{IS_DEFERRED}) or ($deferred and $l->{IS_DEFERRED})) { + if ((($primitives and not $l->{IS_DEFERRED}) or ($deferred and $l->{IS_DEFERRED})) and not $array_pointless) { $self->pidl("for ($counter = 0; $counter < $length; $counter++) {"); $self->indent; $self->ParseElementPushLevel($e, GetNextLevel($e, $l), $ndr, $var_name, $env, 1, 0); @@ -596,7 +602,7 @@ sub ParseElementPushLevel $self->pidl("}"); } - if ($deferred and ContainsDeferred($e, $l)) { + if ($deferred and ContainsDeferred($e, $l) and not $array_pointless) { $self->pidl("for ($counter = 0; $counter < $length; $counter++) {"); $self->indent; $self->ParseElementPushLevel($e, GetNextLevel($e, $l), $ndr, $var_name, $env, 0, 1); |