1
0
mirror of https://github.com/samba-team/samba.git synced 2024-12-24 21:34:56 +03:00

pidl/NDR: fix handling of multilevel pointers in function elements

The 2nd or higher level of wire pointers needs to be marked as deferred.

metze
(This used to be commit d7970d7032)
This commit is contained in:
Stefan Metzmacher 2008-02-01 23:09:37 +01:00
parent 1ea5b06307
commit c713b58a00
2 changed files with 14 additions and 14 deletions

View File

@ -173,9 +173,9 @@ sub GetElementLevelTable($$)
#
# --metze
#
if ($i == 1) {
$pt = pointer_type($e);
} else {
$pt = pointer_type($e);
if ($i > 1) {
$is_deferred = 1 if ($pt ne "ref" and $e->{PARENT}->{TYPE} eq "FUNCTION");
$pt = $pointer_default;
}
@ -195,7 +195,7 @@ sub GetElementLevelTable($$)
$pointer_idx++;
# everything that follows will be deferred
$is_deferred = 1 if ($e->{PARENT}->{TYPE} ne "FUNCTION");
$is_deferred = 1 if ($level ne "TOP");
my $array_size = shift @size_is;
my $array_length;

View File

@ -299,14 +299,14 @@ is_deeply(GetElementLevelTable($e, "unique"), [
},
{
LEVEL_INDEX => 2,
IS_DEFERRED => 0,
IS_DEFERRED => 1,
TYPE => 'POINTER',
POINTER_TYPE => "unique",
POINTER_INDEX => 2,
LEVEL => 'EMBEDDED'
},
{
'IS_DEFERRED' => 0,
'IS_DEFERRED' => 1,
'LEVEL_INDEX' => 3,
'DATA_TYPE' => 'uint8',
'CONTAINS_DEFERRED' => 0,
@ -337,7 +337,7 @@ is_deeply(GetElementLevelTable($e, "unique"), [
},
{
LEVEL_INDEX => 1,
IS_DEFERRED => 0,
IS_DEFERRED => 1,
TYPE => 'POINTER',
POINTER_TYPE => "unique",
POINTER_INDEX => 1,
@ -345,14 +345,14 @@ is_deeply(GetElementLevelTable($e, "unique"), [
},
{
LEVEL_INDEX => 2,
IS_DEFERRED => 0,
IS_DEFERRED => 1,
TYPE => 'POINTER',
POINTER_TYPE => "unique",
POINTER_INDEX => 2,
LEVEL => 'EMBEDDED'
},
{
'IS_DEFERRED' => 0,
'IS_DEFERRED' => 1,
'LEVEL_INDEX' => 3,
'DATA_TYPE' => 'uint8',
'CONTAINS_DEFERRED' => 0,
@ -383,7 +383,7 @@ is_deeply(GetElementLevelTable($e, "ref"), [
},
{
LEVEL_INDEX => 1,
IS_DEFERRED => 0,
IS_DEFERRED => 1,
TYPE => 'POINTER',
POINTER_TYPE => "ref",
POINTER_INDEX => 1,
@ -391,14 +391,14 @@ is_deeply(GetElementLevelTable($e, "ref"), [
},
{
LEVEL_INDEX => 2,
IS_DEFERRED => 0,
IS_DEFERRED => 1,
TYPE => 'POINTER',
POINTER_TYPE => "ref",
POINTER_INDEX => 2,
LEVEL => 'EMBEDDED'
},
{
'IS_DEFERRED' => 0,
'IS_DEFERRED' => 1,
'LEVEL_INDEX' => 3,
'DATA_TYPE' => 'uint8',
'CONTAINS_DEFERRED' => 0,
@ -437,14 +437,14 @@ is_deeply(GetElementLevelTable($e, "ref"), [
},
{
LEVEL_INDEX => 2,
IS_DEFERRED => 0,
IS_DEFERRED => 1,
TYPE => 'POINTER',
POINTER_TYPE => "ref",
POINTER_INDEX => 2,
LEVEL => 'EMBEDDED'
},
{
'IS_DEFERRED' => 0,
'IS_DEFERRED' => 1,
'LEVEL_INDEX' => 3,
'DATA_TYPE' => 'uint8',
'CONTAINS_DEFERRED' => 0,