1
0
mirror of https://github.com/samba-team/samba.git synced 2024-12-25 23:21:54 +03:00

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 commit is contained in:
Stefan Metzmacher 2008-02-01 09:54:25 +01:00
parent 26d7f5bf96
commit 7c7acae817

View File

@ -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;