Author: jelmer
Date: 2005-05-18 19:44:00 +0000 (Wed, 18 May 2005)
New Revision: 6891

WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=6891

Log:
Fix another allocation bug. smbd appears to work correctly now! :-)

Modified:
   branches/tmp/pidl2/source/build/pidl/ndr_parser.pm


Changeset:
Modified: branches/tmp/pidl2/source/build/pidl/ndr_parser.pm
===================================================================
--- branches/tmp/pidl2/source/build/pidl/ndr_parser.pm  2005-05-18 18:02:15 UTC 
(rev 6890)
+++ branches/tmp/pidl2/source/build/pidl/ndr_parser.pm  2005-05-18 19:44:00 UTC 
(rev 6891)
@@ -1939,8 +1939,27 @@
                ParseElementPull($e, "ndr", "r->in.", $env, 1, 1);
        }
 
+       # allocate the "simple" out ref variables. FIXME: Shouldn't this have 
it's
+       # own flag rather then be in NDR_IN ?
+
+       foreach my $e (@{$fn->{ELEMENTS}}) {
+               next unless (grep(/out/, @{$e->{DIRECTION}}));
+               next unless ($e->{LEVELS}[0]->{TYPE} eq "POINTER" and 
+                            $e->{LEVELS}[0]->{POINTER_TYPE} eq "ref");
+               next unless ($e->{LEVELS}[1]->{TYPE} eq "DATA");
+
+               pidl "NDR_ALLOC(ndr, r->out.$e->{NAME});";
+               
+               if (grep(/in/, @{$e->{DIRECTION}})) {
+                       pidl "*r->out.$e->{NAME} = *r->in.$e->{NAME};";
+               } else {
+                       pidl "ZERO_STRUCTP(r->out.$e->{NAME});";
+               }
+       }
+
        deindent;
        pidl "}";
+       
        pidl "if (flags & NDR_OUT) {";
        indent;
 

Reply via email to