Plea to fix winelib COM vtable bug
Ove Kaaven
ovehk at ping.uio.no
Sat Nov 2 10:15:22 CST 2002
On Sat, 2 Nov 2002, Matthew Bloch wrote:
> I think I'm closer now...
>
> trace:ddraw:User_DirectDraw_Construct (0x403a7c70,0)
>
> Program received signal SIGINT, Interrupt.
> [Switching to Thread 16384 (LWP 2877)]
> 0x40f510e4 in DDRAW_Create (lpGUID=0x0, lplpDD=0x40c92d38, pUnkOuter=0x0,
> iid=0x40f585d0, ex=0) at main.c:264
> 264 while(1);
> (gdb) print pDD
> $1 = (struct IDirectDraw7 *) 0x403a7c70
> (gdb) print *pDD
> $2 = {lpVtbl = 0x40f5a960}
> (gdb) print *pDD->lpVtbl
> $3 = {dummyRTTI1 = 1089756760, dummyRTTI2 = 1089756316,
> QueryInterface = 0x40f45cf0 <Main_DirectDraw_Release>,
> AddRef = 0x40f45f8c <Main_DirectDraw_Compact>,
> Release = 0x40f45fd4 <Main_DirectDraw_CreateClipper>,
>
> So the create function is apparently unaware of the dummy values and is
> filling them in regardless... more later...
Your particular problem is probably that the
ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE isn't in the vtables found in
ddraw/user.c and ddraw/hal.c, but I'd still just use
ICOM_USE_COM_INTERFACE_ATTRIBUTE to avoid this kind of problem, unless you
really want to fix all the places someone forgot this stuff...
More information about the wine-devel
mailing list