r24517: move skipping pointer before an array logic into the
authorStefan Metzmacher <metze@samba.org>
Fri, 17 Aug 2007 12:55:47 +0000 (12:55 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 20:02:08 +0000 (15:02 -0500)
pointer loop as we do in other places

metze
(This used to be commit ee92d47b538e2f92e4c342893f04c598311e1021)

source4/pidl/lib/Parse/Pidl/Samba4/Header.pm

index f03f7c0c43a3bf41f43a20067680f0d2a2288b28..9d8b521a491c9ff54817508a832af40331a6857a 100644 (file)
@@ -10,7 +10,7 @@ use strict;
 use Parse::Pidl qw(fatal);
 use Parse::Pidl::Typelist qw(mapTypeName scalar_is_reference);
 use Parse::Pidl::Util qw(has_property is_constant);
-use Parse::Pidl::NDR qw(GetPrevLevel);
+use Parse::Pidl::NDR qw(GetNextLevel);
 use Parse::Pidl::Samba4 qw(is_intree);
 
 use vars qw($VERSION);
@@ -68,6 +68,10 @@ sub HeaderElement($)
                my $numstar = 0;
                foreach my $l (@{$element->{LEVELS}}) {
                        next unless ($l->{TYPE} eq "POINTER");
+
+                       my $nl = GetNextLevel($element, $l);
+                       next if (defined($nl) and $nl->{TYPE} eq "ARRAY");
+
                        $numstar++;
                }
                if ($numstar >= 1) {
@@ -77,8 +81,6 @@ sub HeaderElement($)
                        next unless ($l->{TYPE} eq "ARRAY");
                        next if ($l->{IS_FIXED}) and
                                not has_property($element, "charset");
-                       my $pl = GetPrevLevel($element, $l);
-                       next if (defined($pl) and $pl->{TYPE} eq "POINTER");
                        $numstar++;
                }
                pidl "*" foreach (1..$numstar);