Author: metze
Date: 2005-06-06 12:04:24 +0000 (Mon, 06 Jun 2005)
New Revision: 7330

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

Log:
use ParseExpr() also for subcontext_size()

metze
Modified:
   branches/SAMBA_4_0/source/build/pidl/ndr_parser.pm


Changeset:
Modified: branches/SAMBA_4_0/source/build/pidl/ndr_parser.pm
===================================================================
--- branches/SAMBA_4_0/source/build/pidl/ndr_parser.pm  2005-06-06 10:30:45 UTC 
(rev 7329)
+++ branches/SAMBA_4_0/source/build/pidl/ndr_parser.pm  2005-06-06 12:04:24 UTC 
(rev 7330)
@@ -522,12 +522,14 @@
        return $retndr;
 }
 
-sub ParseSubcontextPushEnd($$$)
+sub ParseSubcontextPushEnd($$$$)
 {
        my $e = shift;
        my $l = shift;
        my $ndr_flags = shift;
+       my $env = shift;
        my $ndr = "_ndr_$e->{NAME}";
+       my $subcontext_size = ParseExpr($l->{SUBCONTEXT_SIZE},$env);
 
        if (defined $l->{COMPRESSION}) {
                ParseCompressionPushEnd($e, $l, $ndr);
@@ -537,7 +539,7 @@
                ParseObfuscationPushEnd($e, $ndr);
        }
 
-       pidl "NDR_CHECK(ndr_push_subcontext_header(ndr, $l->{HEADER_SIZE}, 
$l->{SUBCONTEXT_SIZE}, $ndr));";
+       pidl "NDR_CHECK(ndr_push_subcontext_header(ndr, $l->{HEADER_SIZE}, 
$subcontext_size, $ndr));";
        pidl "NDR_CHECK(ndr_push_bytes(ndr, $ndr->data, $ndr->offset));";
        deindent;
        pidl "}";
@@ -552,12 +554,13 @@
        my $ndr_flags = shift;  
        my $env = shift;
        my $retndr = "_ndr_$e->{NAME}";
+       my $subcontext_size = ParseExpr($l->{SUBCONTEXT_SIZE},$env);
 
        pidl "{";
        indent;
        pidl "struct ndr_pull *$retndr;";
        pidl "NDR_ALLOC(ndr, $retndr);";
-       pidl "NDR_CHECK(ndr_pull_subcontext_header($ndr, $l->{HEADER_SIZE}, 
$l->{SUBCONTEXT_SIZE}, $retndr));"; 
+       pidl "NDR_CHECK(ndr_pull_subcontext_header($ndr, $l->{HEADER_SIZE}, 
$subcontext_size, $retndr));"; 
 
        if (defined $l->{COMPRESSION}) {
                $retndr = ParseCompressionPullStart($e, $l, $retndr, $env);
@@ -570,10 +573,11 @@
        return ($retndr,$var_name);
 }
 
-sub ParseSubcontextPullEnd($$)
+sub ParseSubcontextPullEnd($$$)
 {
        my $e = shift;
        my $l = shift;
+       my $env = shift;
        my $ndr = "_ndr_$e->{NAME}";
 
        if (defined $l->{COMPRESSION}) {
@@ -586,7 +590,7 @@
 
        my $advance;
        if (defined($l->{SUBCONTEXT_SIZE}) and ($l->{SUBCONTEXT_SIZE} ne "-1")) 
{
-               $advance = $l->{SUBCONTEXT_SIZE};
+               $advance = ParseExpr($l->{SUBCONTEXT_SIZE},$env);
        } elsif ($l->{HEADER_SIZE}) {
                $advance = "$ndr->data_size";
        } else {
@@ -613,7 +617,7 @@
                if ($l->{TYPE} eq "SUBCONTEXT") {
                        $ndr = ParseSubcontextPushStart($e, $l, $ndr, 
$var_name, $ndr_flags);
                        ParseElementPushLevel($e, Ndr::GetNextLevel($e, $l), 
$ndr, $var_name, $env, 1, 1);
-                       ParseSubcontextPushEnd($e, $l, $ndr_flags);
+                       ParseSubcontextPushEnd($e, $l, $ndr_flags, $env);
                } elsif ($l->{TYPE} eq "POINTER") {
                        ParsePtrPush($e, $l, $var_name);
                } elsif ($l->{TYPE} eq "ARRAY") {
@@ -934,7 +938,7 @@
                if ($l->{TYPE} eq "SUBCONTEXT") {
                        ($ndr,$var_name) = ParseSubcontextPullStart($e, $l, 
$ndr, $var_name, $ndr_flags, $env);
                        ParseElementPullLevel($e,Ndr::GetNextLevel($e,$l), 
$ndr, $var_name, $env, 1, 1);
-                       ParseSubcontextPullEnd($e, $l);
+                       ParseSubcontextPullEnd($e, $l, $env);
                } elsif ($l->{TYPE} eq "ARRAY") {
                        my $length = ParseArrayPullHeader($e, $l, $ndr, 
$var_name, $env); 
 

Reply via email to