r24463: we have a function to correctly create an $env object
authorStefan Metzmacher <metze@samba.org>
Wed, 15 Aug 2007 14:02:23 +0000 (14:02 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 20:01:54 +0000 (15:01 -0500)
so don't try it manually and introduce bugs:-)

metze
(This used to be commit a79129a4ae412f29a0d730f49327269a92ec8402)

source4/pidl/lib/Parse/Pidl/Samba3/ServerNDR.pm

index aa4f3dd1ce2e554a4d1de1947868c610f2ef6fbb..d6311ed3608d703c14aff330ad720d6141049666 100644 (file)
@@ -12,6 +12,7 @@ use Parse::Pidl::Typelist qw(mapTypeName scalar_is_reference);
 use Parse::Pidl::Util qw(ParseExpr has_property is_constant);
 use Parse::Pidl::NDR qw(GetNextLevel);
 use Parse::Pidl::Samba4 qw(DeclLong);
+use Parse::Pidl::Samba4::NDR::Parser qw(GenerateFunctionOutEnv);
 
 use vars qw($VERSION);
 $VERSION = '0.01';
@@ -123,12 +124,10 @@ sub ParseFunction($$)
        pidl "\tNDR_PRINT_IN_DEBUG($fn->{NAME}, &r);";
        pidl "";
 
-       my %env = ();
+       my $env = GenerateFunctionOutEnv($fn, "r.");
        my $hasout = 0;
        foreach (@{$fn->{ELEMENTS}}) {
                if (grep(/out/, @{$_->{DIRECTION}})) { $hasout = 1; }
-               next unless (grep (/in/, @{$_->{DIRECTION}}));
-               $env{$_->{NAME}} = "r.in.$_->{NAME}";
        }
 
        pidl "ZERO_STRUCT(r.out);" if ($hasout);
@@ -141,7 +140,7 @@ sub ParseFunction($$)
                        pidl "r.out.$_->{NAME} = r.in.$_->{NAME};";
                } elsif (grep(/out/, @dir) and not 
                                 has_property($_, "represent_as")) {
-                       AllocOutVar($_, "mem_ctx", "r.out.$_->{NAME}", \%env);
+                       AllocOutVar($_, "mem_ctx", "r.out.$_->{NAME}", $env);
                }
        }
        $ret .= ")";