diff options
author | Stefan Metzmacher <metze@samba.org> | 2008-02-01 09:54:25 +0100 |
---|---|---|
committer | Stefan Metzmacher <metze@samba.org> | 2008-02-02 11:16:01 +0100 |
commit | b3d4f22b30b98d16d9a779e26cd9555fe18a67e4 (patch) | |
tree | b0979b7de47442f0d923818e985c99b836695b16 /source4/pidl/lib/Parse | |
parent | 9475a76afc41675a9c6a9b42d618a49821a8a5b4 (diff) | |
download | samba-b3d4f22b30b98d16d9a779e26cd9555fe18a67e4.tar.gz samba-b3d4f22b30b98d16d9a779e26cd9555fe18a67e4.tar.bz2 samba-b3d4f22b30b98d16d9a779e26cd9555fe18a67e4.zip |
pidl/Samba4::NDR::Parser: fix $var_name for arrays of scalar reference types
uint32 num;
nstring strings[num];
this should use 'r->strings' instead of
'*r->strings' as the pointer to the array.
metze
(This used to be commit 7c7acae817cd00ab5c915742338b019af79e9193)
Diffstat (limited to 'source4/pidl/lib/Parse')
-rw-r--r-- | source4/pidl/lib/Parse/Pidl/Samba4/NDR/Parser.pm | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/source4/pidl/lib/Parse/Pidl/Samba4/NDR/Parser.pm b/source4/pidl/lib/Parse/Pidl/Samba4/NDR/Parser.pm index 81e8a21625..281018d4cc 100644 --- a/source4/pidl/lib/Parse/Pidl/Samba4/NDR/Parser.pm +++ b/source4/pidl/lib/Parse/Pidl/Samba4/NDR/Parser.pm @@ -42,19 +42,21 @@ sub append_prefix($$) { my ($e, $var_name) = @_; my $pointers = 0; + my $arrays = 0; foreach my $l (@{$e->{LEVELS}}) { if ($l->{TYPE} eq "POINTER") { $pointers++; } elsif ($l->{TYPE} eq "ARRAY") { + $arrays++; if (($pointers == 0) and (not $l->{IS_FIXED}) and (not $l->{IS_INLINE})) { - return get_value_of($var_name); + return get_value_of($var_name); } } elsif ($l->{TYPE} eq "DATA") { if (Parse::Pidl::Typelist::scalar_is_reference($l->{DATA_TYPE})) { - return get_value_of($var_name) unless ($pointers); + return get_value_of($var_name) unless ($pointers or $arrays); } } } @@ -684,8 +686,17 @@ sub need_pointer_to($$$) return 1 if $scalar_only; } + my $arrays = 0; + + foreach my $tl (@{$e->{LEVELS}}) { + last if $l == $tl; + if ($tl->{TYPE} eq "ARRAY") { + $arrays++; + } + } + if (Parse::Pidl::Typelist::scalar_is_reference($t)) { - return 1; + return 1 unless $arrays; } return 0; |