diff options
Diffstat (limited to 'source4/build/pidl')
-rw-r--r-- | source4/build/pidl/eth_parser.pm | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/source4/build/pidl/eth_parser.pm b/source4/build/pidl/eth_parser.pm index a285dacf23..7dc50fe0f5 100644 --- a/source4/build/pidl/eth_parser.pm +++ b/source4/build/pidl/eth_parser.pm @@ -62,6 +62,7 @@ sub NeededTypedef($$) if (util::has_property($t, "public")) { $needed->{"pull_$t->{NAME}"} = not util::has_property($t, "nopull"); + $needed->{"decl_$t->{NAME}"} = not util::has_property($t, "nopull"); } if ($t->{DATA}->{TYPE} eq "STRUCT" or $t->{DATA}->{TYPE} eq "UNION") { @@ -70,7 +71,7 @@ sub NeededTypedef($$) $e->{PARENT} = $t->{DATA}; if ($needed->{"pull_$t->{NAME}"} and not defined($needed->{"pull_$e->{TYPE}"})) { - $needed->{"pull_$e->{TYPE}"} = 1; + $needed->{"decl_$e->{TYPE}"} = $needed->{"pull_$e->{TYPE}"} = 1; } $needed->{"hf_$t->{NAME}_$e->{NAME}"} = { @@ -1182,19 +1183,20 @@ sub DeclInterface($$) # Typedefs foreach my $d (@{$interface->{TYPEDEFS}}) { - ($needed->{"pull_$d->{NAME}"}) && DeclTypedef($d); - - # Make sure we don't generate a function twice... - $needed->{"pull_$d->{NAME}"} = 0; + ($needed->{"decl_$d->{NAME}"}) && DeclTypedef($d, $needed); } } -sub DeclTypedef($) +sub DeclTypedef($$) { my $e = shift; + my $needed = shift; if (defined($typefamily{$e->{DATA}->{TYPE}}->{DECL})) { $typefamily{$e->{DATA}->{TYPE}}->{DECL}->($e->{DATA}, $e->{NAME}); + + # Make sure we don't generate a function twice... + $needed->{"decl_$e->{NAME}"} = 0; } } |