pidl: use ndr_push_relative_ptr2_start and ndr_push_relative_ptr2_end.
authorGünther Deschner <gd@samba.org>
Mon, 14 Dec 2009 13:09:22 +0000 (14:09 +0100)
committerStefan Metzmacher <metze@samba.org>
Thu, 18 Feb 2010 12:43:59 +0000 (13:43 +0100)
Guenther

pidl/lib/Parse/Pidl/Samba4/NDR/Parser.pm

index bd6909361b4dfb13adf81fe537a69e921a389cab..4c23dfacd82d13401b0e32a1e57cd0a11d2d090a 100644 (file)
@@ -567,11 +567,12 @@ sub ParseElementPushLevel
        }
 
        if ($l->{TYPE} eq "POINTER" and $deferred) {
+               my $rel_var_name = $var_name;
                if ($l->{POINTER_TYPE} ne "ref") {
                        $self->pidl("if ($var_name) {");
                        $self->indent;
                        if ($l->{POINTER_TYPE} eq "relative") {
-                               $self->pidl("NDR_CHECK(ndr_push_relative_ptr2($ndr, $var_name));");
+                               $self->pidl("NDR_CHECK(ndr_push_relative_ptr2_start($ndr, $rel_var_name));");
                        }
                        if ($l->{POINTER_TYPE} eq "relative_short") {
                                $self->pidl("NDR_CHECK(ndr_push_short_relative_ptr2($ndr, $var_name));");
@@ -581,6 +582,9 @@ sub ParseElementPushLevel
                $self->ParseElementPushLevel($e, GetNextLevel($e, $l), $ndr, $var_name, $env, 1, 1);
 
                if ($l->{POINTER_TYPE} ne "ref") {
+                       if ($l->{POINTER_TYPE} eq "relative") {
+                               $self->pidl("NDR_CHECK(ndr_push_relative_ptr2_end($ndr, $rel_var_name));");
+                       }
                        $self->deindent;
                        $self->pidl("}");
                }