From be6250261165e21819ff508fe4dead51b11bb17f Mon Sep 17 00:00:00 2001 From: Eric Pouech Date: Sun, 21 Nov 1999 00:51:29 +0000 Subject: [PATCH] Fixed a crash in IDirectDrawSurface:BltFast. --- graphics/ddraw.c | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/graphics/ddraw.c b/graphics/ddraw.c index 8fee4092e70..56a8a65034d 100644 --- a/graphics/ddraw.c +++ b/graphics/ddraw.c @@ -1239,7 +1239,7 @@ static HRESULT WINAPI IDirectDrawSurface4Impl_BltFast( DDSURFACEDESC ddesc,sdesc; HRESULT ret = DD_OK; LPBYTE sbuf, dbuf; - + RECT rsrc2; if (TRACE_ON(ddraw)) { FIXME("(%p)->(%ld,%ld,%p,%p,%08lx)\n", @@ -1248,12 +1248,24 @@ static HRESULT WINAPI IDirectDrawSurface4Impl_BltFast( FIXME(" trans:"); if (FIXME_ON(ddraw)) _dump_DDBLTFAST(trans); - FIXME(" srcrect: %dx%d-%dx%d\n",rsrc->left,rsrc->top,rsrc->right,rsrc->bottom); + if (rsrc) + FIXME(" srcrect: %dx%d-%dx%d\n",rsrc->left,rsrc->top,rsrc->right,rsrc->bottom); + else + FIXME(" srcrect: NULL\n"); } + /* We need to lock the surfaces, or we won't get refreshes when done. */ IDirectDrawSurface4_Lock(src, NULL,&sdesc,DDLOCK_READONLY, 0); IDirectDrawSurface4_Lock(iface,NULL,&ddesc,DDLOCK_WRITEONLY,0); + if (!rsrc) { + WARN("rsrc is NULL!\n"); + rsrc = &rsrc2; + rsrc->left = rsrc->top = 0; + rsrc->right = sdesc.dwWidth; + rsrc->bottom = sdesc.dwHeight; + } + bpp = GET_BPP(This->s.surface_desc); sbuf = (BYTE *) sdesc.u1.lpSurface + (rsrc->top * sdesc.lPitch) + rsrc->left * bpp; dbuf = (BYTE *) ddesc.u1.lpSurface + (dsty * ddesc.lPitch) + dstx * bpp; -- 2.11.4.GIT