1
0
mirror of https://github.com/FunkyFr3sh/cnc-ddraw.git synced 2025-03-24 17:49:52 +01:00

improve error checks

This commit is contained in:
FunkyFr3sh 2024-05-26 09:29:14 +02:00
parent 5bbe1299d2
commit 63033840d9

View File

@ -69,11 +69,14 @@ HRESULT ddc_SetClipList(IDirectDrawClipperImpl* This, LPRGNDATA lpClipList, DWOR
if (This->hwnd) if (This->hwnd)
return DDERR_CLIPPERISUSINGHWND; return DDERR_CLIPPERISUSINGHWND;
if (This->region) if (lpClipList)
DeleteObject(This->region);
if (lpClipList && lpClipList->rdh.nCount >= 1)
{ {
if (!lpClipList->rdh.nCount)
return DDERR_INVALIDCLIPLIST;
if (This->region)
DeleteObject(This->region);
RECT* rc = (RECT*)lpClipList->Buffer; RECT* rc = (RECT*)lpClipList->Buffer;
This->region = CreateRectRgnIndirect(&rc[0]); This->region = CreateRectRgnIndirect(&rc[0]);
@ -88,7 +91,7 @@ HRESULT ddc_SetClipList(IDirectDrawClipperImpl* This, LPRGNDATA lpClipList, DWOR
if (!region) if (!region)
return DDERR_INVALIDCLIPLIST; return DDERR_INVALIDCLIPLIST;
if (CombineRgn(This->region, region, This->region, RGN_OR) == ERROR) if (CombineRgn(This->region, region, This->region, RGN_XOR) == ERROR)
{ {
DeleteObject(region); DeleteObject(region);
DeleteObject(This->region); DeleteObject(This->region);
@ -102,6 +105,9 @@ HRESULT ddc_SetClipList(IDirectDrawClipperImpl* This, LPRGNDATA lpClipList, DWOR
} }
else else
{ {
if (This->region)
DeleteObject(This->region);
This->region = NULL; This->region = NULL;
} }