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