Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-cw
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-cw
Commits
c1d00c54
Commit
c1d00c54
authored
May 18, 2006
by
Robert Shearman
Committed by
Alexandre Julliard
May 18, 2006
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
rpcrt4: Implement NdrNonEncapsulatedUnionMemorySize.
parent
62bbaf70
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
50 additions
and
6 deletions
+50
-6
ndr_marshall.c
dlls/rpcrt4/ndr_marshall.c
+50
-6
No files found.
dlls/rpcrt4/ndr_marshall.c
View file @
c1d00c54
...
...
@@ -3834,15 +3834,59 @@ void WINAPI NdrNonEncapsulatedUnionBufferSize(PMIDL_STUB_MESSAGE pStubMsg,
unsigned
long
WINAPI
NdrNonEncapsulatedUnionMemorySize
(
PMIDL_STUB_MESSAGE
pStubMsg
,
PFORMAT_STRING
pFormat
)
{
unsigned
long
discriminant
;
unsigned
short
type
,
size
;
pFormat
++
;
/* Unmarshall discriminant */
discriminant
=
unmarshall_discriminant
(
pStubMsg
,
&
pFormat
);
TRACE
(
"unmarshalled discriminant 0x%lx
\n
"
,
discriminant
);
pFormat
+=
*
(
const
SHORT
*
)
pFormat
;
size
=
*
(
const
unsigned
short
*
)
pFormat
;
pFormat
+=
2
;
if
(
pStubMsg
->
fHasNewCorrDesc
)
pFormat
+=
6
;
pFormat
=
get_arm_offset_from_union_arm_selector
(
pStubMsg
,
discriminant
,
pFormat
);
if
(
!
pFormat
)
return
0
;
pStubMsg
->
Memory
+=
size
;
type
=
*
(
const
unsigned
short
*
)
pFormat
;
if
((
type
&
0xff00
)
==
0x8000
)
{
return
NdrBaseTypeMemorySize
(
pStubMsg
,
pFormat
);
}
else
pFormat
+=
4
;
{
PFORMAT_STRING
desc
=
pFormat
+
*
(
const
SHORT
*
)
pFormat
;
NDR_MEMORYSIZE
m
=
NdrMemorySizer
[
*
desc
&
NDR_TABLE_MASK
];
unsigned
char
*
saved_buffer
;
if
(
m
)
{
switch
(
*
desc
)
{
case
RPC_FC_RP
:
case
RPC_FC_UP
:
case
RPC_FC_OP
:
case
RPC_FC_FP
:
ALIGN_POINTER
(
pStubMsg
->
Buffer
,
4
);
saved_buffer
=
pStubMsg
->
Buffer
;
pStubMsg
->
Buffer
+=
4
;
ALIGN_LENGTH
(
pStubMsg
->
MemorySize
,
4
);
pStubMsg
->
MemorySize
+=
4
;
PointerMemorySize
(
pStubMsg
,
saved_buffer
,
pFormat
);
break
;
default:
return
m
(
pStubMsg
,
desc
);
}
}
else
FIXME
(
"no marshaller for embedded type %02x
\n
"
,
*
desc
);
}
pFormat
+=
*
(
const
SHORT
*
)
pFormat
;
TRACE
(
"size %d
\n
"
,
*
(
const
SHORT
*
)
pFormat
);
return
*
(
const
SHORT
*
)
pFormat
;
TRACE
(
"size %d
\n
"
,
size
);
return
size
;
}
/***********************************************************************
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment