Huw Davies : oleaut32: Zero-init [out] only parameters.
Alexandre Julliard
julliard at winehq.org
Fri Feb 17 11:32:49 CST 2012
Module: wine
Branch: master
Commit: be4d45cacb119f7f84bc6f82dceced703b42d79d
URL: http://source.winehq.org/git/wine.git/?a=commit;h=be4d45cacb119f7f84bc6f82dceced703b42d79d
Author: Huw Davies <huw at codeweavers.com>
Date: Fri Feb 17 13:02:17 2012 +0000
oleaut32: Zero-init [out] only parameters.
---
dlls/oleaut32/tests/tmarshal.c | 2 +-
dlls/oleaut32/tmarshal.c | 21 +++++++++++++++------
2 files changed, 16 insertions(+), 7 deletions(-)
diff --git a/dlls/oleaut32/tests/tmarshal.c b/dlls/oleaut32/tests/tmarshal.c
index b491e53..cb626d3 100644
--- a/dlls/oleaut32/tests/tmarshal.c
+++ b/dlls/oleaut32/tests/tmarshal.c
@@ -1118,7 +1118,7 @@ static void test_typelibmarshal(void)
VariantClear(&varresult);
/* call get_Name (direct) */
- bstr = NULL;
+ bstr = (void *)0xdeadbeef;
hr = IWidget_get_Name(pWidget, &bstr);
ok_ole_success(hr, IWidget_get_Name);
ok(!lstrcmpW(bstr, szCat), "IWidget_get_Name should have returned string \"Cat\" instead of %s\n", wine_dbgstr_w(bstr));
diff --git a/dlls/oleaut32/tmarshal.c b/dlls/oleaut32/tmarshal.c
index 44a6d44..b69634f 100644
--- a/dlls/oleaut32/tmarshal.c
+++ b/dlls/oleaut32/tmarshal.c
@@ -723,7 +723,7 @@ serialize_param(
return S_OK;
}
case VT_BSTR: {
- if (debugout) {
+ if (writeit && debugout) {
if (*arg)
TRACE_(olerelay)("%s",relaystr((WCHAR*)*arg));
else
@@ -1402,11 +1402,20 @@ xCall(LPVOID retptr, int method, TMProxyImpl *tpinfo /*, args */)
TRACE_(olerelay)("%s=",relaystr(names[i+1]));
}
/* No need to marshal other data than FIN and any VT_PTR. */
- if (!is_in_elem(elem) && (elem->tdesc.vt != VT_PTR)) {
- xargs+=_argsize(&elem->tdesc, tinfo);
- if (relaydeb) TRACE_(olerelay)("[out]");
- continue;
- }
+ if (!is_in_elem(elem))
+ {
+ if (elem->tdesc.vt != VT_PTR)
+ {
+ xargs+=_argsize(&elem->tdesc, tinfo);
+ if (relaydeb) TRACE_(olerelay)("[out]");
+ continue;
+ }
+ else
+ {
+ memset( *(void **)xargs, 0, _xsize( elem->tdesc.u.lptdesc, tinfo ) );
+ }
+ }
+
hres = serialize_param(
tinfo,
is_in_elem(elem),
More information about the wine-cvs
mailing list