From 3c20e210de357e4f7b6dd54880110a56ae1d7eb0 Mon Sep 17 00:00:00 2001
From: Stefan Metzmacher <metze@samba.org>
Date: Wed, 27 Dec 2006 15:36:50 +0000
Subject: r20358: - fix ejs generated code for ipv4address - (not
 Parse::Pidl::Typelist::scalar_is_reference($e->{TYPE}))   is much more
 generic than ($e->{TYPE} ne "string")   and handles ipv4address and other
 special types...

metze
(This used to be commit 02d2ce65e614a0c99ef3246bc738eb0f8d91b24a)
---
 source4/pidl/lib/Parse/Pidl/Samba4/EJS.pm | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

(limited to 'source4/pidl/lib')

diff --git a/source4/pidl/lib/Parse/Pidl/Samba4/EJS.pm b/source4/pidl/lib/Parse/Pidl/Samba4/EJS.pm
index 960f610cd9..f820dbbc5a 100644
--- a/source4/pidl/lib/Parse/Pidl/Samba4/EJS.pm
+++ b/source4/pidl/lib/Parse/Pidl/Samba4/EJS.pm
@@ -153,7 +153,8 @@ sub EjsPullScalar($$$$$)
         my $pl = Parse::Pidl::NDR::GetPrevLevel($e, $l);
         $var = get_pointer_to($var);
         # have to handle strings specially :(
-        if ($e->{TYPE} eq "string" && $pl && $pl->{TYPE} eq "POINTER") {
+	if (Parse::Pidl::Typelist::scalar_is_reference($e->{TYPE})
+	    and (defined($pl) and $pl->{TYPE} eq "POINTER")) {
                 $var = get_pointer_to($var);
         }
 	pidl "NDR_CHECK(ejs_pull_$e->{TYPE}(ejs, v, $name, $var));";
@@ -445,7 +446,9 @@ sub EjsPushScalar($$$$$)
 	my ($e, $l, $var, $name, $env) = @_;
         # have to handle strings specially :(
         my $pl = Parse::Pidl::NDR::GetPrevLevel($e, $l);
-        if ($e->{TYPE} ne "string" || ($pl && $pl->{TYPE} eq "POINTER")) {
+
+	if ((not Parse::Pidl::Typelist::scalar_is_reference($e->{TYPE}))
+	    or (defined($pl) and $pl->{TYPE} eq "POINTER")) {
                 $var = get_pointer_to($var);
         }
 	pidl "NDR_CHECK(ejs_push_$e->{TYPE}(ejs, v, $name, $var));";
-- 
cgit