r7111: Patch from Alan DeKok for correct use of the needed variables in Decl*
authorJelmer Vernooij <jelmer@samba.org>
Mon, 30 May 2005 14:15:20 +0000 (14:15 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 18:17:18 +0000 (13:17 -0500)
source/build/pidl/eth_parser.pm

index a285dacf2391415623d73b44b7af22fd481ff0d7..7dc50fe0f54ff46ff89c2c741ee107e0779b66d2 100644 (file)
@@ -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;
        }
 }