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;