limit resolutions in EnumDisplayModes to prevent crashes

This commit is contained in:
FunkyFr3sh 2018-10-30 17:54:14 +01:00
parent 478d716a26
commit 90a31e1daf
2 changed files with 54 additions and 6 deletions

View file

@ -451,10 +451,24 @@ HRESULT __stdcall ddraw_surface_GetPalette(IDirectDrawSurfaceImpl *This, LPDIREC
return DD_OK;
}
HRESULT __stdcall ddraw_surface_GetPixelFormat(IDirectDrawSurfaceImpl *This, LPDDPIXELFORMAT a)
HRESULT __stdcall ddraw_surface_GetPixelFormat(IDirectDrawSurfaceImpl *This, LPDDPIXELFORMAT ddpfPixelFormat)
{
printf("IDirectDrawSurface::GetPixelFormat(This=%p, ...) ???\n", This);
return DD_OK;
printf("IDirectDrawSurface::GetPixelFormat(This=%p, ...)\n", This);
DWORD size = ddpfPixelFormat->dwSize;
if (size == sizeof(DDPIXELFORMAT))
{
memset(ddpfPixelFormat, 0, sizeof(DDPIXELFORMAT));
ddpfPixelFormat->dwSize = size;
ddpfPixelFormat->dwFlags = DDPF_PALETTEINDEXED8 | DDPF_RGB;
ddpfPixelFormat->dwRGBBitCount = 8;
return DD_OK;
}
return DDERR_INVALIDPARAMS;
}
HRESULT __stdcall ddraw_surface_Initialize(IDirectDrawSurfaceImpl *This, LPDIRECTDRAW a, LPDDSURFACEDESC b)