svn commit: samba r15593 - in branches/SAMBA_4_0/source/pidl/lib/Parse/Pidl: . Samba3

jelmer at samba.org jelmer at samba.org
Sun May 14 00:22:30 GMT 2006


Author: jelmer
Date: 2006-05-14 00:22:24 +0000 (Sun, 14 May 2006)
New Revision: 15593

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

Log:
Warn about [out] arguments that are not pointers. These can all be 
fixed by adding [ref] pointers. 

This will cause a lot of warnings to be outputted by pidl for now. I will 
fix these gradually over the next few days.

We need to avoid [out] arguments that are not pointers because they are 
not understood by other IDL compilers and don't work with some of 
our output modules (Samba3, Samba3NDR and ethereal)

Modified:
   branches/SAMBA_4_0/source/pidl/lib/Parse/Pidl/NDR.pm
   branches/SAMBA_4_0/source/pidl/lib/Parse/Pidl/ODL.pm
   branches/SAMBA_4_0/source/pidl/lib/Parse/Pidl/Samba3/Client.pm


Changeset:
Modified: branches/SAMBA_4_0/source/pidl/lib/Parse/Pidl/NDR.pm
===================================================================
--- branches/SAMBA_4_0/source/pidl/lib/Parse/Pidl/NDR.pm	2006-05-14 00:07:03 UTC (rev 15592)
+++ branches/SAMBA_4_0/source/pidl/lib/Parse/Pidl/NDR.pm	2006-05-14 00:22:24 UTC (rev 15593)
@@ -540,6 +540,11 @@
 		my $e = ParseElement($x);
 		push (@{$e->{DIRECTION}}, "in") if (has_property($x, "in"));
 		push (@{$e->{DIRECTION}}, "out") if (has_property($x, "out"));
+
+		nonfatal($x, "`$e->{NAME}' is [out] argument but not a pointer")
+			if ($e->{LEVELS}[0]->{TYPE} ne "POINTER") and 
+			    grep(/out/, @{$e->{DIRECTION}});
+
 		push (@elements, $e);
 	}
 

Modified: branches/SAMBA_4_0/source/pidl/lib/Parse/Pidl/ODL.pm
===================================================================
--- branches/SAMBA_4_0/source/pidl/lib/Parse/Pidl/ODL.pm	2006-05-14 00:07:03 UTC (rev 15592)
+++ branches/SAMBA_4_0/source/pidl/lib/Parse/Pidl/ODL.pm	2006-05-14 00:22:24 UTC (rev 15593)
@@ -15,11 +15,10 @@
 # find an interface in an array of interfaces
 sub get_interface($$)
 {
-	my($if) = shift;
-	my($n) = shift;
+	my($if,$n) = @_;
 
-	foreach(@{$if}) {
-		if($_->{NAME} eq $n) { return $_; }
+	foreach(@$if) {
+		return $_ if($_->{NAME} eq $n);
 	}
 	
 	return 0;
@@ -33,13 +32,17 @@
 		'NAME' => 'ORPCthis',
 		'POINTERS' => 0,
 		'PROPERTIES' => { 'in' => '1' },
-		'TYPE' => 'ORPCTHIS'
+		'TYPE' => 'ORPCTHIS',
+		'FILE' => $e->{FILE},
+		'LINE' => $e->{LINE}
 	});
 	unshift(@{$e->{ELEMENTS}}, {
 		'NAME' => 'ORPCthat',
 		'POINTERS' => 0,
 		'PROPERTIES' => { 'out' => '1' },
-		'TYPE' => 'ORPCTHAT'
+		'TYPE' => 'ORPCTHAT',
+		'FILE' => $e->{FILE},
+		'LINE' => $e->{LINE}
 	});
 }
 

Modified: branches/SAMBA_4_0/source/pidl/lib/Parse/Pidl/Samba3/Client.pm
===================================================================
--- branches/SAMBA_4_0/source/pidl/lib/Parse/Pidl/Samba3/Client.pm	2006-05-14 00:07:03 UTC (rev 15592)
+++ branches/SAMBA_4_0/source/pidl/lib/Parse/Pidl/Samba3/Client.pm	2006-05-14 00:22:24 UTC (rev 15593)
@@ -85,11 +85,6 @@
 	foreach my $e (@{$fn->{ELEMENTS}}) {
 		next unless (grep(/out/, @{$e->{DIRECTION}}));
 
-		if ($e->{LEVELS}[0]->{TYPE} ne "POINTER") {
-			warning($e->{ORIGINAL}, "First element not a pointer for [out] argument");
-			next;
-		}
-
 		CopyLevel($e, $e->{LEVELS}[1], $e->{NAME}, "r.$e->{NAME}");
 	}
 



More information about the samba-cvs mailing list