gdi32: Check for NULL pointer in GdiAlphaBlend.
This commit is contained in:
parent
7471cfce72
commit
e51b20bf05
|
@ -518,9 +518,11 @@ BOOL WINAPI GdiAlphaBlend(HDC hdcDst, int xDst, int yDst, int widthDst, int heig
|
||||||
DC *dcDst, *dcSrc;
|
DC *dcDst, *dcSrc;
|
||||||
|
|
||||||
dcSrc = get_dc_ptr( hdcSrc );
|
dcSrc = get_dc_ptr( hdcSrc );
|
||||||
|
if (!dcSrc) return FALSE;
|
||||||
|
|
||||||
if ((dcDst = get_dc_ptr( hdcDst )))
|
if ((dcDst = get_dc_ptr( hdcDst )))
|
||||||
{
|
{
|
||||||
if (dcSrc) update_dc( dcSrc );
|
update_dc( dcSrc );
|
||||||
update_dc( dcDst );
|
update_dc( dcDst );
|
||||||
TRACE("%p %d,%d %dx%d -> %p %d,%d %dx%d op=%02x flags=%02x srcconstalpha=%02x alphafmt=%02x\n",
|
TRACE("%p %d,%d %dx%d -> %p %d,%d %dx%d op=%02x flags=%02x srcconstalpha=%02x alphafmt=%02x\n",
|
||||||
hdcSrc, xSrc, ySrc, widthSrc, heightSrc,
|
hdcSrc, xSrc, ySrc, widthSrc, heightSrc,
|
||||||
|
@ -529,11 +531,11 @@ BOOL WINAPI GdiAlphaBlend(HDC hdcDst, int xDst, int yDst, int widthDst, int heig
|
||||||
blendFunction.SourceConstantAlpha, blendFunction.AlphaFormat);
|
blendFunction.SourceConstantAlpha, blendFunction.AlphaFormat);
|
||||||
if (dcDst->funcs->pAlphaBlend)
|
if (dcDst->funcs->pAlphaBlend)
|
||||||
ret = dcDst->funcs->pAlphaBlend( dcDst->physDev, xDst, yDst, widthDst, heightDst,
|
ret = dcDst->funcs->pAlphaBlend( dcDst->physDev, xDst, yDst, widthDst, heightDst,
|
||||||
dcSrc ? dcSrc->physDev : NULL,
|
dcSrc->physDev, xSrc, ySrc, widthSrc, heightSrc,
|
||||||
xSrc, ySrc, widthSrc, heightSrc, blendFunction );
|
blendFunction );
|
||||||
release_dc_ptr( dcDst );
|
release_dc_ptr( dcDst );
|
||||||
}
|
}
|
||||||
if (dcSrc) release_dc_ptr( dcSrc );
|
release_dc_ptr( dcSrc );
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -2393,6 +2393,10 @@ static void test_GdiAlphaBlend(void)
|
||||||
expect_eq(pGdiAlphaBlend(hdcDst, 0, 0, 20, 20, hdcSrc, -1, 0, 30, 30, blend), TRUE, BOOL, "%d");
|
expect_eq(pGdiAlphaBlend(hdcDst, 0, 0, 20, 20, hdcSrc, -1, 0, 30, 30, blend), TRUE, BOOL, "%d");
|
||||||
expect_eq(pGdiAlphaBlend(hdcDst, 0, 0, 20, 20, hdcSrc, 0, -1, 30, 30, blend), TRUE, BOOL, "%d");
|
expect_eq(pGdiAlphaBlend(hdcDst, 0, 0, 20, 20, hdcSrc, 0, -1, 30, 30, blend), TRUE, BOOL, "%d");
|
||||||
|
|
||||||
|
SetLastError(0xdeadbeef);
|
||||||
|
expect_eq(pGdiAlphaBlend(hdcDst, 0, 0, 20, 20, NULL, 0, 0, 20, 20, blend), FALSE, BOOL, "%d");
|
||||||
|
expect_eq(GetLastError(), 0xdeadbeef, int, "%d");
|
||||||
|
|
||||||
SelectObject(hdcDst, oldDst);
|
SelectObject(hdcDst, oldDst);
|
||||||
SelectObject(hdcSrc, oldSrc);
|
SelectObject(hdcSrc, oldSrc);
|
||||||
DeleteObject(bmpSrc);
|
DeleteObject(bmpSrc);
|
||||||
|
|
Loading…
Reference in New Issue