Fix a serious bug, that led to reading beyound the end of the mask bitmap, if it was not twice as big as the color bitmap.

svn path=/trunk/; revision=42454
This commit is contained in:
Timo Kreuzer 2009-08-07 03:14:55 +00:00
parent 353d0a8d27
commit 50eb85ed3b

View file

@ -331,7 +331,7 @@ EngSetPointerShape(
if (psoMask)
{
// CHECKME: Is this really required? if we have a color surface,
// we only need the and part of the mask.
// we only need the AND part of the mask.
/* Check if the sizes match as they should */
if (psoMask->sizlBitmap.cx != psoColor->sizlBitmap.cx ||
psoMask->sizlBitmap.cy != psoColor->sizlBitmap.cy * 2)
@ -429,7 +429,7 @@ EngSetPointerShape(
hbmp = EngCreateBitmap(psoMask->sizlBitmap,
lDelta,
pso->iBitmapFormat,
0,
BMF_TOPDOWN | BMF_NOZEROINIT,
NULL);
pgp->psurfMask = SURFACE_ShareLockSurface(hbmp);
@ -443,7 +443,7 @@ EngSetPointerShape(
RGB(0xff,0xff,0xff),
RGB(0,0,0));
rcl.bottom = pgp->Size.cy * 2;
rcl.bottom = psoMask->sizlBitmap.cy;
IntEngCopyBits(&pgp->psurfMask->SurfObj,
psoMask,
NULL,
@ -472,7 +472,7 @@ EngSetPointerShape(
pgp->psurfColor = SURFACE_ShareLockSurface(hbmp);
if (pgp->psurfColor)
{
rcl.bottom = pgp->Size.cy;
rcl.bottom = psoColor->sizlBitmap.cy;
IntEngCopyBits(&pgp->psurfColor->SurfObj,
psoColor,
NULL,