Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-winehq
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-winehq
Commits
564b9604
Commit
564b9604
authored
May 19, 2009
by
Huw Davies
Committed by
Alexandre Julliard
May 19, 2009
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
ole32/tests: Cope with an alignment hole between the two marshalled interfaces.
parent
707f9628
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
28 additions
and
23 deletions
+28
-23
usrmarshal.c
dlls/ole32/tests/usrmarshal.c
+28
-23
No files found.
dlls/ole32/tests/usrmarshal.c
View file @
564b9604
...
...
@@ -633,25 +633,19 @@ static void test_marshal_STGMEDIUM(void)
USER_MARSHAL_CB
umcb
;
MIDL_STUB_MESSAGE
stub_msg
;
RPC_MESSAGE
rpc_msg
;
unsigned
char
*
buffer
,
*
buffer_end
,
*
unk_buffer
,
*
unk_buffer_end
,
*
stm_buffer
,
*
stm
_buffer_end
;
ULONG
size
,
unk_size
,
stm
_size
;
unsigned
char
*
buffer
,
*
buffer_end
,
*
expect_buffer
,
*
expect
_buffer_end
;
ULONG
size
,
expect
_size
;
STGMEDIUM
med
,
med2
;
IUnknown
*
unk
=
&
Test_Unknown
;
IStream
*
stm
=
&
Test_Stream
;
init_user_marshal_cb
(
&
umcb
,
&
stub_msg
,
&
rpc_msg
,
NULL
,
0
,
MSHCTX_DIFFERENTMACHINE
);
unk_size
=
WdtpInterfacePointer_UserSize
(
&
umcb
.
Flags
,
umcb
.
Flags
,
0
,
unk
,
&
IID_IUnknown
);
unk_buffer
=
HeapAlloc
(
GetProcessHeap
(),
0
,
unk_size
);
init_user_marshal_cb
(
&
umcb
,
&
stub_msg
,
&
rpc_msg
,
unk_buffer
,
unk_size
,
MSHCTX_DIFFERENTMACHINE
);
unk_buffer_end
=
WdtpInterfacePointer_UserMarshal
(
&
umcb
.
Flags
,
umcb
.
Flags
,
unk_buffer
,
unk
,
&
IID_IUnknown
);
/* TYMED_NULL with pUnkForRelease */
init_user_marshal_cb
(
&
umcb
,
&
stub_msg
,
&
rpc_msg
,
NULL
,
0
,
MSHCTX_DIFFERENTMACHINE
);
stm_size
=
WdtpInterfacePointer_UserSize
(
&
umcb
.
Flags
,
umcb
.
Flags
,
0
,
(
IUnknown
*
)
stm
,
&
IID_IStream
);
stm_buffer
=
HeapAlloc
(
GetProcessHeap
(),
0
,
stm_size
);
init_user_marshal_cb
(
&
umcb
,
&
stub_msg
,
&
rpc_msg
,
stm_buffer
,
stm_size
,
MSHCTX_DIFFERENTMACHINE
);
stm_buffer_end
=
WdtpInterfacePointer_UserMarshal
(
&
umcb
.
Flags
,
umcb
.
Flags
,
stm_buffer
,
(
IUnknown
*
)
stm
,
&
IID_IStream
);
/* TYMED_NULL with pUnkForRelease */
expect_size
=
WdtpInterfacePointer_UserSize
(
&
umcb
.
Flags
,
umcb
.
Flags
,
2
*
sizeof
(
DWORD
),
unk
,
&
IID_IUnknown
);
expect_buffer
=
HeapAlloc
(
GetProcessHeap
(),
0
,
expect_size
);
init_user_marshal_cb
(
&
umcb
,
&
stub_msg
,
&
rpc_msg
,
expect_buffer
,
expect_size
,
MSHCTX_DIFFERENTMACHINE
);
expect_buffer_end
=
WdtpInterfacePointer_UserMarshal
(
&
umcb
.
Flags
,
umcb
.
Flags
,
expect_buffer
+
2
*
sizeof
(
DWORD
),
unk
,
&
IID_IUnknown
);
med
.
tymed
=
TYMED_NULL
;
U
(
med
).
pstg
=
NULL
;
...
...
@@ -659,15 +653,15 @@ static void test_marshal_STGMEDIUM(void)
init_user_marshal_cb
(
&
umcb
,
&
stub_msg
,
&
rpc_msg
,
NULL
,
0
,
MSHCTX_DIFFERENTMACHINE
);
size
=
STGMEDIUM_UserSize
(
&
umcb
.
Flags
,
0
,
&
med
);
ok
(
size
==
unk_size
+
2
*
sizeof
(
DWORD
),
"size %d should be %d bytes
\n
"
,
size
,
unk_size
+
8
);
ok
(
size
==
expect_size
,
"size %d should be %d bytes
\n
"
,
size
,
expect_size
);
buffer
=
HeapAlloc
(
GetProcessHeap
(),
0
,
size
);
init_user_marshal_cb
(
&
umcb
,
&
stub_msg
,
&
rpc_msg
,
buffer
,
size
,
MSHCTX_DIFFERENTMACHINE
);
buffer_end
=
STGMEDIUM_UserMarshal
(
&
umcb
.
Flags
,
buffer
,
&
med
);
ok
(
buffer_end
-
buffer
-
2
*
sizeof
(
DWORD
)
==
unk_buffer_end
-
unk
_buffer
,
"buffer size mismatch
\n
"
);
ok
(
buffer_end
-
buffer
==
expect_buffer_end
-
expect
_buffer
,
"buffer size mismatch
\n
"
);
ok
(
*
(
DWORD
*
)
buffer
==
TYMED_NULL
,
"got %08x
\n
"
,
*
(
DWORD
*
)
buffer
);
ok
(
*
((
DWORD
*
)
buffer
+
1
)
!=
0
,
"got %08x
\n
"
,
*
((
DWORD
*
)
buffer
+
1
));
ok
(
!
memcmp
(
buffer
+
8
,
unk_buffer
,
unk_buffer_end
-
unk_buffer
),
"buffer mismatch
\n
"
);
ok
(
!
memcmp
(
buffer
+
8
,
expect_buffer
+
8
,
expect_buffer_end
-
expect_buffer
-
8
),
"buffer mismatch
\n
"
);
init_user_marshal_cb
(
&
umcb
,
&
stub_msg
,
&
rpc_msg
,
buffer
,
size
,
MSHCTX_DIFFERENTMACHINE
);
...
...
@@ -686,25 +680,38 @@ static void test_marshal_STGMEDIUM(void)
init_user_marshal_cb
(
&
umcb
,
&
stub_msg
,
&
rpc_msg
,
NULL
,
0
,
MSHCTX_DIFFERENTMACHINE
);
STGMEDIUM_UserFree
(
&
umcb
.
Flags
,
&
med2
);
HeapFree
(
GetProcessHeap
(),
0
,
expect_buffer
);
/* TYMED_ISTREAM with pUnkForRelease */
init_user_marshal_cb
(
&
umcb
,
&
stub_msg
,
&
rpc_msg
,
NULL
,
0
,
MSHCTX_DIFFERENTMACHINE
);
expect_size
=
WdtpInterfacePointer_UserSize
(
&
umcb
.
Flags
,
umcb
.
Flags
,
3
*
sizeof
(
DWORD
),
(
IUnknown
*
)
stm
,
&
IID_IStream
);
expect_size
=
WdtpInterfacePointer_UserSize
(
&
umcb
.
Flags
,
umcb
.
Flags
,
expect_size
,
unk
,
&
IID_IUnknown
);
expect_buffer
=
HeapAlloc
(
GetProcessHeap
(),
0
,
expect_size
);
/* There may be a hole between the two interfaces so init the buffer to something */
memset
(
expect_buffer
,
0xcc
,
expect_size
);
init_user_marshal_cb
(
&
umcb
,
&
stub_msg
,
&
rpc_msg
,
expect_buffer
,
expect_size
,
MSHCTX_DIFFERENTMACHINE
);
expect_buffer_end
=
WdtpInterfacePointer_UserMarshal
(
&
umcb
.
Flags
,
umcb
.
Flags
,
expect_buffer
+
3
*
sizeof
(
DWORD
),
(
IUnknown
*
)
stm
,
&
IID_IStream
);
expect_buffer_end
=
WdtpInterfacePointer_UserMarshal
(
&
umcb
.
Flags
,
umcb
.
Flags
,
expect_buffer_end
,
unk
,
&
IID_IUnknown
);
med
.
tymed
=
TYMED_ISTREAM
;
U
(
med
).
pstm
=
stm
;
med
.
pUnkForRelease
=
unk
;
init_user_marshal_cb
(
&
umcb
,
&
stub_msg
,
&
rpc_msg
,
NULL
,
0
,
MSHCTX_DIFFERENTMACHINE
);
size
=
STGMEDIUM_UserSize
(
&
umcb
.
Flags
,
0
,
&
med
);
ok
(
size
==
stm_size
+
unk_size
+
3
*
sizeof
(
DWORD
),
"size %d should be %d bytes
\n
"
,
size
,
stm_size
+
unk_size
+
3
*
sizeof
(
DWORD
)
);
ok
(
size
==
expect_size
,
"size %d should be %d bytes
\n
"
,
size
,
expect_size
);
buffer
=
HeapAlloc
(
GetProcessHeap
(),
0
,
size
);
memset
(
buffer
,
0xcc
,
size
);
init_user_marshal_cb
(
&
umcb
,
&
stub_msg
,
&
rpc_msg
,
buffer
,
size
,
MSHCTX_DIFFERENTMACHINE
);
buffer_end
=
STGMEDIUM_UserMarshal
(
&
umcb
.
Flags
,
buffer
,
&
med
);
ok
(
buffer_end
-
buffer
-
3
*
sizeof
(
DWORD
)
==
(
unk_buffer_end
-
unk_buffer
)
+
(
stm_buffer_end
-
stm_buffer
)
,
"buffer size mismatch
\n
"
);
ok
(
buffer_end
-
buffer
==
expect_buffer_end
-
expect_buffer
,
"buffer size mismatch
\n
"
);
ok
(
*
(
DWORD
*
)
buffer
==
TYMED_ISTREAM
,
"got %08x
\n
"
,
*
(
DWORD
*
)
buffer
);
ok
(
*
((
DWORD
*
)
buffer
+
1
)
!=
0
,
"got %08x
\n
"
,
*
((
DWORD
*
)
buffer
+
1
));
ok
(
*
((
DWORD
*
)
buffer
+
2
)
!=
0
,
"got %08x
\n
"
,
*
((
DWORD
*
)
buffer
+
2
));
ok
(
!
memcmp
(
buffer
+
12
,
stm_buffer
,
stm_buffer_end
-
stm_buffer
),
"buffer mismatch
\n
"
);
ok
(
!
memcmp
(
buffer
+
12
+
(
stm_buffer_end
-
stm_buffer
),
unk_buffer
,
unk_buffer_end
-
unk_buffer
),
"buffer mismatch
\n
"
);
ok
(
!
memcmp
(
buffer
+
12
,
expect_buffer
+
12
,
(
buffer_end
-
buffer
)
-
12
),
"buffer mismatch
\n
"
);
init_user_marshal_cb
(
&
umcb
,
&
stub_msg
,
&
rpc_msg
,
buffer
,
size
,
MSHCTX_DIFFERENTMACHINE
);
...
...
@@ -724,9 +731,7 @@ static void test_marshal_STGMEDIUM(void)
init_user_marshal_cb
(
&
umcb
,
&
stub_msg
,
&
rpc_msg
,
NULL
,
0
,
MSHCTX_DIFFERENTMACHINE
);
STGMEDIUM_UserFree
(
&
umcb
.
Flags
,
&
med2
);
HeapFree
(
GetProcessHeap
(),
0
,
stm_buffer
);
HeapFree
(
GetProcessHeap
(),
0
,
unk_buffer
);
HeapFree
(
GetProcessHeap
(),
0
,
expect_buffer
);
}
START_TEST
(
usrmarshal
)
...
...
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