widl [2/6]: Fix conformant array test failures

Alexandre Julliard julliard at winehq.org
Tue Sep 25 04:54:52 CDT 2007


Dan Hipschman <dsh at linux.ucla.edu> writes:

> This patch gets conformant arrays working in the tests.  Currently, only
> the address of some conformant arrays are being marshalled, and this wasn't
> showing up in the tests because some storage was static.  This patch fixes
> the problem by writing pointers to conformant array types in the format
> string.  This also requires handling field pointer conformances, and
> expression evaluation routines that expect the containing structure of a
> conformant array at the top of the stack, rather than the conformant array
> itself.  With this patch, the tests still pass, but correctly this time.

It breaks the ole32 tests:

../../../tools/runtest -q -P wine -M ole32.dll -T ../../.. -p ole32_test.exe.so moniker.c && touch moniker.ok
moniker.c:897: Test failed: IRunningObjectTable_EnumRunning hr=800703e6
wine: Unhandled page fault on read access to 0x00000000 at address 0x60527ff6 (thread 0010), starting debugger...
WineDbg starting on pid 000f
Unhandled exception: page fault on read access to 0x00000000 in 32-bit code (0x60527ff6).
Register dump:
 CS:0023 SS:002b DS:002b ES:002b FS:0063 GS:006b
 EIP:60527ff6 ESP:0033fa90 EBP:0033fe58 EFLAGS:00010206(   - 00      - RIP1)
 EAX:0033fe30 EBX:6054601c ECX:00000000 EDX:00000000
 ESI:800703e6 EDI:6053e4ec
Stack dump:
0x0033fa90:  00000000 6053e498 800703e6 60542308
0x0033faa0:  0033fe34 00000100 00000000 00000000
0x0033fab0:  60547478 60547474 6053cdc8 0033fe48
0x0033fac0:  0033fe44 0033fe40 0033fe38 0033fe20
0x0033fad0:  6053d190 60542308 0033fe14 6053e720
0x0033fae0:  6053e2dc 60539d74 6053e154 60539de8
Backtrace:
=>1 0x60527ff6 func_moniker+0x15f6() [/home/julliard/wine/wine/dlls/ole32/tests/moniker.c:898] in ole32_test (0x0033fe58)
  2 0x60538df8 run_test+0x128(name=0x1103ce) [/home/julliard/wine/wine/dlls/ole32/tests/../../../include/wine/test.h:389] in ole32_test (0x0033fea8)
  3 0x6053948d main+0x14d(argc=<register ECX not in topmost frame>, argv=<register ECX not in topmost frame>) [/home/julliard/wine/wine/dlls/ole32/tests/../../../include/wine/test.h:437] in ole32_test (0x0033fed8)
  4 0x6053955b __wine_spec_exe_entry+0x5b(peb=0x7ffdf000) [/home/julliard/wine/wine/dlls/winecrt0/exe_entry.c:36] in ole32_test (0x0033ff08)
  5 0x7b87446e start_process+0xee(arg=0x0) [/home/julliard/wine/wine/dlls/kernel32/process.c:839] in kernel32 (0x0033ffe8)
  6 0x600289a7 wine_switch_to_stack+0x17() in libwine.so.1 (0x00000000)
0x60527ff6 func_moniker+0x15f6 [/home/julliard/wine/wine/dlls/ole32/tests/moniker.c:898] in ole32_test: movl	0x0(%edx),%ecx
898	    hr = IEnumMoniker_QueryInterface(spEM1, &IID_IUnknown, (void*) &lpEM1);
Wine-dbg>

-- 
Alexandre Julliard
julliard at winehq.org



More information about the wine-devel mailing list