svn commit: samba r20573 - in branches/SAMBA_4_0/source/pidl/lib/Parse/Pidl/Samba4: .

metze at samba.org metze at samba.org
Fri Jan 5 21:36:59 GMT 2007


Author: metze
Date: 2007-01-05 21:36:57 +0000 (Fri, 05 Jan 2007)
New Revision: 20573

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

Log:
fix handling of pointers handling to elements with the charset property

metze
Modified:
   branches/SAMBA_4_0/source/pidl/lib/Parse/Pidl/Samba4/EJS.pm


Changeset:
Modified: branches/SAMBA_4_0/source/pidl/lib/Parse/Pidl/Samba4/EJS.pm
===================================================================
--- branches/SAMBA_4_0/source/pidl/lib/Parse/Pidl/Samba4/EJS.pm	2007-01-05 21:27:24 UTC (rev 20572)
+++ branches/SAMBA_4_0/source/pidl/lib/Parse/Pidl/Samba4/EJS.pm	2007-01-05 21:36:57 UTC (rev 20573)
@@ -187,7 +187,11 @@
 sub EjsPullString($$$$$)
 {
 	my ($e, $l, $var, $name, $env) = @_;
+	my $pl = Parse::Pidl::NDR::GetPrevLevel($e, $l);
 	$var = get_pointer_to($var);
+	if (defined($pl) and $pl->{TYPE} eq "POINTER") {
+		$var = get_pointer_to($var);
+	}
 	pidl "NDR_CHECK(ejs_pull_string(ejs, v, $name, $var));";
 }
 
@@ -248,14 +252,14 @@
 sub EjsPullElement($$$$$)
 {
 	my ($e, $l, $var, $name, $env) = @_;
-	if (has_property($e, "charset")) {
+	if (($l->{TYPE} eq "POINTER")) {
+		EjsPullPointer($e, $l, $var, $name, $env);
+	} elsif (has_property($e, "charset")) {
 		EjsPullString($e, $l, $var, $name, $env);
 	} elsif ($l->{TYPE} eq "ARRAY") {
 		EjsPullArray($e, $l, $var, $name, $env);
 	} elsif ($l->{TYPE} eq "DATA") {
 		EjsPullScalar($e, $l, $var, $name, $env);
-	} elsif (($l->{TYPE} eq "POINTER")) {
-		EjsPullPointer($e, $l, $var, $name, $env);
 	} elsif (($l->{TYPE} eq "SWITCH")) {
 		EjsPullSwitch($e, $l, $var, $name, $env);
 	} else {
@@ -459,6 +463,10 @@
 sub EjsPushString($$$$$)
 {
 	my ($e, $l, $var, $name, $env) = @_;
+	my $pl = Parse::Pidl::NDR::GetPrevLevel($e, $l);
+	if (defined($pl) and $pl->{TYPE} eq "POINTER") {
+		$var = get_pointer_to($var);
+	}
 	pidl "NDR_CHECK(ejs_push_string(ejs, v, $name, $var));";
 }
 
@@ -531,14 +539,14 @@
 sub EjsPushElement($$$$$)
 {
 	my ($e, $l, $var, $name, $env) = @_;
-	if (has_property($e, "charset")) {
+	if (($l->{TYPE} eq "POINTER")) {
+		EjsPushPointer($e, $l, $var, $name, $env);
+	} elsif (has_property($e, "charset")) {
 		EjsPushString($e, $l, $var, $name, $env);
 	} elsif ($l->{TYPE} eq "ARRAY") {
 		EjsPushArray($e, $l, $var, $name, $env);
 	} elsif ($l->{TYPE} eq "DATA") {
 		EjsPushScalar($e, $l, $var, $name, $env);
-	} elsif (($l->{TYPE} eq "POINTER")) {
-		EjsPushPointer($e, $l, $var, $name, $env);
 	} elsif (($l->{TYPE} eq "SWITCH")) {
 		EjsPushSwitch($e, $l, $var, $name, $env);
 	} else {



More information about the samba-cvs mailing list