svn commit: samba r6891 - in branches/tmp/pidl2/source/build/pidl: .
jelmer at samba.org
jelmer at samba.org
Wed May 18 19:44:01 GMT 2005
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;
More information about the samba-cvs
mailing list