summaryrefslogtreecommitdiff
path: root/source4/pidl
diff options
context:
space:
mode:
Diffstat (limited to 'source4/pidl')
-rw-r--r--source4/pidl/lib/Parse/Pidl/Samba4/Header.pm8
1 files changed, 5 insertions, 3 deletions
diff --git a/source4/pidl/lib/Parse/Pidl/Samba4/Header.pm b/source4/pidl/lib/Parse/Pidl/Samba4/Header.pm
index f03f7c0c43..9d8b521a49 100644
--- a/source4/pidl/lib/Parse/Pidl/Samba4/Header.pm
+++ b/source4/pidl/lib/Parse/Pidl/Samba4/Header.pm
@@ -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);