From 63c4e6ff57d53a807feec2222e1199f5b6fcdb42 Mon Sep 17 00:00:00 2001 From: FunkyFr3sh Date: Thu, 6 May 2021 01:24:07 +0200 Subject: [PATCH] fix DeleteAttachedSurface and add some NULL checks --- src/ddsurface.c | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/src/ddsurface.c b/src/ddsurface.c index 6dc684c..b520577 100644 --- a/src/ddsurface.c +++ b/src/ddsurface.c @@ -14,14 +14,17 @@ HRESULT dds_AddAttachedSurface(IDirectDrawSurfaceImpl *This, LPDIRECTDRAWSURFACE lpDDSurface) { - IDirectDrawSurface_AddRef(lpDDSurface); - - if (g_ddraw->backbuffer && !This->backbuffer) + if (lpDDSurface) { - IDirectDrawSurfaceImpl* surface = (IDirectDrawSurfaceImpl*)lpDDSurface; - surface->caps |= DDSCAPS_BACKBUFFER; + IDirectDrawSurface_AddRef(lpDDSurface); - This->backbuffer = surface; + if (g_ddraw->backbuffer && !This->backbuffer) + { + IDirectDrawSurfaceImpl* surface = (IDirectDrawSurfaceImpl*)lpDDSurface; + surface->caps |= DDSCAPS_BACKBUFFER; + + This->backbuffer = surface; + } } return DD_OK; @@ -611,7 +614,12 @@ HRESULT dds_BltFast(IDirectDrawSurfaceImpl *This, DWORD dst_x, DWORD dst_y, LPDI HRESULT dds_DeleteAttachedSurface(IDirectDrawSurfaceImpl *This, DWORD dwFlags, LPDIRECTDRAWSURFACE lpDDSurface) { - IDirectDrawSurface_Release(lpDDSurface); + if (lpDDSurface) + { + IDirectDrawSurface_Release(lpDDSurface); + This->backbuffer = NULL; + } + return DD_OK; }