On Sat, Nov 04, 2017 at 09:51:44AM +0300, Nikolay Sivov wrote:
On 03.11.2017 14:15, Marcus Meissner wrote:
Test will fail now, but no longer crash.
Signed-off-by: Marcus Meissner marcus@jet.franken.de
dlls/oleaut32/tests/tmarshal.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/dlls/oleaut32/tests/tmarshal.c b/dlls/oleaut32/tests/tmarshal.c index d2b8dc92d6..f19cbf451b 100644 --- a/dlls/oleaut32/tests/tmarshal.c +++ b/dlls/oleaut32/tests/tmarshal.c @@ -2010,7 +2010,8 @@ static void test_external_connection(void) todo_wine ok(external_connections == 2, "external_connections = %d\n", external_connections);
- ITestSecondDisp_Release(second);
- if (hres == S_OK)
todo_wine ok(external_connections == 2, "external_connections = %d\n", external_connections);ITestSecondDisp_Release(second);
Any idea why is this specific to 64 bit?
Well, the call fails in because we have no 64bit typelib threaded marshaller.
The callchain goes to:
static HRESULT WINAPI PSFacBuf_CreateProxy( ... proxy->asmstubs = VirtualAlloc(NULL, sizeof(TMAsmProxy) * nroffuncs, MEM_COMMIT, PAGE_EXECUTE_READWRITE); if (!proxy->asmstubs) { ERR("Could not commit pages for proxy thunks (size %d)\n", sizeof(TMAsmProxy) * nroffuncs); CoTaskMemFree(proxy); return E_OUTOFMEMORY; }
this fails because the alloc fails due to size 0, because sizeof(TMAsmProxy) is 0, because that is not implemented for 64bit (yet).
We could exit PSFacBuf_CreateProxy earlier on x86_64 with a different error.
(or implement the typelib marshaller ;)
Ciao, Marcus