From 66e37ed961a543a841f81c02b906e512d6da534a Mon Sep 17 00:00:00 2001 From: FunkyFr3sh Date: Sun, 2 Dec 2018 06:53:11 +0100 Subject: [PATCH] add 200 guardlines to prevent crashes --- src/surface.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/surface.c b/src/surface.c index 630c96e..6809cee 100644 --- a/src/surface.c +++ b/src/surface.c @@ -1095,7 +1095,7 @@ HRESULT __stdcall ddraw_CreateSurface(IDirectDrawImpl *This, LPDDSURFACEDESC lpD Surface->bmi = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(BITMAPINFOHEADER) + sizeof(RGBQUAD) * 256); Surface->bmi->bmiHeader.biSize = sizeof(BITMAPINFOHEADER); Surface->bmi->bmiHeader.biWidth = Surface->width; - Surface->bmi->bmiHeader.biHeight = -Surface->height; + Surface->bmi->bmiHeader.biHeight = -(Surface->height + 200); Surface->bmi->bmiHeader.biPlanes = 1; Surface->bmi->bmiHeader.biBitCount = Surface->bpp; Surface->bmi->bmiHeader.biCompression = Surface->bpp == 16 ? BI_BITFIELDS : BI_RGB; @@ -1129,7 +1129,8 @@ HRESULT __stdcall ddraw_CreateSurface(IDirectDrawImpl *This, LPDDSURFACEDESC lpD Surface->hDC = CreateCompatibleDC(ddraw->render.hDC); Surface->bitmap = CreateDIBSection(Surface->hDC, Surface->bmi, DIB_RGB_COLORS, (void **)&Surface->surface, NULL, 0); - + Surface->bmi->bmiHeader.biHeight = -Surface->height; + if (!Surface->bitmap) Surface->surface = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, Surface->lPitch * Surface->height * Surface->lXPitch);