svn commit: samba r2933 - in branches/SAMBA_4_0/source/build/pidl: .

jelmer at samba.org jelmer at samba.org
Tue Oct 12 10:32:55 GMT 2004


Author: jelmer
Date: 2004-10-12 10:32:54 +0000 (Tue, 12 Oct 2004)
New Revision: 2933

WebSVN: http://websvn.samba.org/websvn/changeset.php?rep=samba&path=/branches/SAMBA_4_0/source/build/pidl&rev=2933&nolog=1

Log:
Only pull a union once when it occurs in a subcontext

Modified:
   branches/SAMBA_4_0/source/build/pidl/parser.pm


Changeset:
Modified: branches/SAMBA_4_0/source/build/pidl/parser.pm
===================================================================
--- branches/SAMBA_4_0/source/build/pidl/parser.pm	2004-10-12 06:12:24 UTC (rev 2932)
+++ branches/SAMBA_4_0/source/build/pidl/parser.pm	2004-10-12 10:32:54 UTC (rev 2933)
@@ -454,7 +454,9 @@
 
 	my $sub_size = util::has_property($e, "subcontext");
 	if (defined $sub_size) {
-		pidl "\tNDR_CHECK(ndr_pull_subcontext_union_fn(ndr, $sub_size, $switch_var, $cprefix$var_prefix$e->{NAME}, (ndr_pull_union_fn_t) ndr_pull_$e->{TYPE}));\n";
+		pidl "\tif (($ndr_flags) & NDR_SCALARS) {\n";
+		pidl "\t\tNDR_CHECK(ndr_pull_subcontext_union_fn(ndr, $sub_size, $switch_var, $cprefix$var_prefix$e->{NAME}, (ndr_pull_union_fn_t) ndr_pull_$e->{TYPE}));\n";
+		pidl "\t}\n";
 	} else {
 		pidl "\tNDR_CHECK(ndr_pull_$e->{TYPE}(ndr, $ndr_flags, $switch_var, $cprefix$var_prefix$e->{NAME}));\n";
 	}
@@ -484,7 +486,9 @@
 
 	my $sub_size = util::has_property($e, "subcontext");
 	if (defined $sub_size) {
-		pidl "\tNDR_CHECK(ndr_push_subcontext_union_fn(ndr, $sub_size, $switch_var, $cprefix$var_prefix$e->{NAME}, (ndr_push_union_fn_t) ndr_push_$e->{TYPE}));\n";
+		pidl "\tif(($ndr_flags) & NDR_SCALARS) {\n";
+		pidl "\t\tNDR_CHECK(ndr_push_subcontext_union_fn(ndr, $sub_size, $switch_var, $cprefix$var_prefix$e->{NAME}, (ndr_push_union_fn_t) ndr_push_$e->{TYPE}));\n";
+		pidl "\t}\n";
 	} else {
 		pidl "\tNDR_CHECK(ndr_push_$e->{TYPE}(ndr, $ndr_flags, $switch_var, $cprefix$var_prefix$e->{NAME}));\n";
 	}



More information about the samba-cvs mailing list