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