diff --git a/src/ddclipper.c b/src/ddclipper.c index ecbb56e..a3bc388 100644 --- a/src/ddclipper.c +++ b/src/ddclipper.c @@ -38,6 +38,9 @@ HRESULT ddc_GetClipList(IDirectDrawClipperImpl* This, LPRECT lpRect, LPRGNDATA l if (lpRect) DeleteObject(region); + if (*lpdwSiz == 0) + return DDERR_REGIONTOOSMALL; + return DD_OK; } diff --git a/src/ddsurface.c b/src/ddsurface.c index 2d4c21a..c668155 100644 --- a/src/ddsurface.c +++ b/src/ddsurface.c @@ -79,7 +79,7 @@ HRESULT dds_Blt( { DWORD size = 0; - if (SUCCEEDED(IDirectDrawClipper_GetClipList(This->clipper, &dst_rect, NULL, &size)) && size > 0) + if (SUCCEEDED(IDirectDrawClipper_GetClipList(This->clipper, &dst_rect, NULL, &size))) { RGNDATA* list = (RGNDATA*)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, size);