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
4581af58
Commit
4581af58
authored
May 14, 2009
by
Huw Davies
Committed by
Alexandre Julliard
May 18, 2009
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
ole32/tests: Add tests for STGMEDIUM marshalling with a non-NULL pUnkForRelease.
parent
5b6312f2
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
53 additions
and
0 deletions
+53
-0
usrmarshal.c
dlls/ole32/tests/usrmarshal.c
+53
-0
No files found.
dlls/ole32/tests/usrmarshal.c
View file @
4581af58
...
...
@@ -599,6 +599,58 @@ static void test_marshal_WdtpInterfacePointer(void)
marshal_WdtpInterfacePointer
(
MSHCTX_INPROC
,
MAKELONG
(
MSHCTX_DIFFERENTMACHINE
,
0xffff
));
}
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
;
ULONG
size
,
unk_size
;
STGMEDIUM
med
,
med2
;
IUnknown
*
unk
=
&
Test_Unknown
;
/* TYMED_NULL with pUnkForRelease */
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
);
med
.
tymed
=
TYMED_NULL
;
U
(
med
).
pstg
=
NULL
;
med
.
pUnkForRelease
=
unk
;
init_user_marshal_cb
(
&
umcb
,
&
stub_msg
,
&
rpc_msg
,
NULL
,
0
,
MSHCTX_DIFFERENTMACHINE
);
size
=
STGMEDIUM_UserSize
(
&
umcb
.
Flags
,
0
,
&
med
);
todo_wine
ok
(
size
==
unk_size
+
2
*
sizeof
(
DWORD
),
"size %d should be %d bytes
\n
"
,
size
,
unk_size
+
8
);
buffer
=
HeapAlloc
(
GetProcessHeap
(),
0
,
size
*
2
);
init_user_marshal_cb
(
&
umcb
,
&
stub_msg
,
&
rpc_msg
,
buffer
,
size
,
MSHCTX_DIFFERENTMACHINE
);
buffer_end
=
STGMEDIUM_UserMarshal
(
&
umcb
.
Flags
,
buffer
,
&
med
);
todo_wine
ok
(
buffer_end
-
buffer
-
2
*
sizeof
(
DWORD
)
==
unk_buffer_end
-
unk_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
));
todo_wine
ok
(
!
memcmp
(
buffer
+
8
,
unk_buffer
,
unk_buffer_end
-
unk_buffer
),
"buffer mismatch
\n
"
);
init_user_marshal_cb
(
&
umcb
,
&
stub_msg
,
&
rpc_msg
,
buffer
,
size
,
MSHCTX_DIFFERENTMACHINE
);
/* native crashes if this is uninitialised, presumably because it
tries to release it */
med2
.
pUnkForRelease
=
NULL
;
STGMEDIUM_UserUnmarshal
(
&
umcb
.
Flags
,
buffer
,
&
med2
);
ok
(
med2
.
tymed
==
TYMED_NULL
,
"got tymed %x
\n
"
,
med2
.
tymed
);
todo_wine
ok
(
med2
.
pUnkForRelease
!=
NULL
,
"Incorrectly unmarshalled
\n
"
);
HeapFree
(
GetProcessHeap
(),
0
,
buffer
);
init_user_marshal_cb
(
&
umcb
,
&
stub_msg
,
&
rpc_msg
,
NULL
,
0
,
MSHCTX_DIFFERENTMACHINE
);
STGMEDIUM_UserFree
(
&
umcb
.
Flags
,
&
med2
);
HeapFree
(
GetProcessHeap
(),
0
,
unk_buffer
);
}
START_TEST
(
usrmarshal
)
{
CoInitialize
(
NULL
);
...
...
@@ -610,6 +662,7 @@ START_TEST(usrmarshal)
test_marshal_HMETAFILE
();
test_marshal_HMETAFILEPICT
();
test_marshal_WdtpInterfacePointer
();
test_marshal_STGMEDIUM
();
CoUninitialize
();
}
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