[GDI32] GdiDrawStream: Improve handling of small rcDest sizes

- Abort drawing if rcDest has negative height or width.
- Ignore sizing margins if rcDest is too small.
CORE-13513
This commit is contained in:
Giannis Adamopoulos 2017-11-22 17:28:18 +02:00
parent b4d691ba96
commit febf9acfee

View file

@ -677,6 +677,19 @@ GdiDrawStream(HDC dc, ULONG l, PGDI_DRAW_STREAM pDS)
else
sizingtype = ST_STRETCH;
if (pDS->rcDest.right < pDS->rcDest.left || pDS->rcDest.bottom < pDS->rcDest.top)
return 0;
if (sm.cxLeftWidth + sm.cxRightWidth > pDS->rcDest.right - pDS->rcDest.left)
{
sm.cxLeftWidth = sm.cxRightWidth = 0;
}
if (sm.cyTopHeight + sm.cyBottomHeight > pDS->rcDest.bottom - pDS->rcDest.top)
{
sm.cyTopHeight = sm.cyBottomHeight = 0;
}
UXTHEME_DrawImageBackground(pDS->hDC,
pDS->hImage,
&pDS->rcSrc,