mirror of
https://github.com/reactos/reactos.git
synced 2024-08-02 17:40:58 +00:00
fixed partly linking with other directdraw interface, but we still overwrite some member and crash it, when we doing a link.
svn path=/trunk/; revision=25016
This commit is contained in:
parent
1c4a115ec0
commit
a709c01ca8
|
@ -879,20 +879,37 @@ Create_DirectDraw (LPGUID pGUID,
|
||||||
LPDIRECTDRAW* pIface,
|
LPDIRECTDRAW* pIface,
|
||||||
REFIID id,
|
REFIID id,
|
||||||
BOOL ex)
|
BOOL ex)
|
||||||
{
|
{
|
||||||
LPDDRAWI_DIRECTDRAW_INT This;
|
LPDDRAWI_DIRECTDRAW_INT This = (LPDDRAWI_DIRECTDRAW_INT)*pIface;
|
||||||
|
|
||||||
DX_WINDBG_trace();
|
DX_WINDBG_trace();
|
||||||
|
|
||||||
if (!IsEqualGUID(&IID_IDirectDraw7, id))
|
if (!IsEqualGUID(&IID_IDirectDraw7, id))
|
||||||
{
|
{
|
||||||
return DDERR_INVALIDDIRECTDRAWGUID;
|
return DDERR_INVALIDDIRECTDRAWGUID;
|
||||||
}
|
}
|
||||||
|
|
||||||
This = DxHeapMemAlloc(sizeof(DDRAWI_DIRECTDRAW_INT));
|
|
||||||
if (This == NULL)
|
if (This == NULL)
|
||||||
{
|
{
|
||||||
return DDERR_OUTOFMEMORY;
|
/* We do not have any DirectDraw interface alloc */
|
||||||
|
This = DxHeapMemAlloc(sizeof(DDRAWI_DIRECTDRAW_INT));
|
||||||
|
if (This == NULL)
|
||||||
|
{
|
||||||
|
return DDERR_OUTOFMEMORY;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/* We got the DirectDraw interface alloc and we need create the link */
|
||||||
|
LPDDRAWI_DIRECTDRAW_INT newThis;
|
||||||
|
newThis = DxHeapMemAlloc(sizeof(DDRAWI_DIRECTDRAW_INT));
|
||||||
|
if (newThis == NULL)
|
||||||
|
{
|
||||||
|
return DDERR_OUTOFMEMORY;
|
||||||
|
}
|
||||||
|
newThis->lpLink = This;
|
||||||
|
This = newThis;
|
||||||
}
|
}
|
||||||
|
|
||||||
This->lpLcl = DxHeapMemAlloc(sizeof(DDRAWI_DIRECTDRAW_INT));
|
This->lpLcl = DxHeapMemAlloc(sizeof(DDRAWI_DIRECTDRAW_INT));
|
||||||
|
|
Loading…
Reference in a new issue