gdi32: Avoid reading bits outside of the glyph bitmap in GetGlyphOutline.
This commit is contained in:
parent
45c9ec0d55
commit
05b1aea244
|
@ -4939,14 +4939,10 @@ DWORD WineEngGetGlyphOutline(GdiFont *incoming_font, UINT glyph, UINT format,
|
||||||
BYTE *src = ft_face->glyph->bitmap.buffer, *dst = buf;
|
BYTE *src = ft_face->glyph->bitmap.buffer, *dst = buf;
|
||||||
INT h = ft_face->glyph->bitmap.rows;
|
INT h = ft_face->glyph->bitmap.rows;
|
||||||
INT x;
|
INT x;
|
||||||
|
memset( buf, 0, needed );
|
||||||
while(h--) {
|
while(h--) {
|
||||||
for(x = 0; x < pitch; x++)
|
for(x = 0; x < pitch && x < ft_face->glyph->bitmap.width; x++)
|
||||||
{
|
if (src[x / 8] & (1 << ( (7 - (x % 8))))) dst[x] = 0xff;
|
||||||
if(x < ft_face->glyph->bitmap.width)
|
|
||||||
dst[x] = (src[x / 8] & (1 << ( (7 - (x % 8))))) ? 0xff : 0;
|
|
||||||
else
|
|
||||||
dst[x] = 0;
|
|
||||||
}
|
|
||||||
src += ft_face->glyph->bitmap.pitch;
|
src += ft_face->glyph->bitmap.pitch;
|
||||||
dst += pitch;
|
dst += pitch;
|
||||||
}
|
}
|
||||||
|
@ -5025,9 +5021,10 @@ DWORD WineEngGetGlyphOutline(GdiFont *incoming_font, UINT glyph, UINT format,
|
||||||
src = ft_face->glyph->bitmap.buffer;
|
src = ft_face->glyph->bitmap.buffer;
|
||||||
src_pitch = ft_face->glyph->bitmap.pitch;
|
src_pitch = ft_face->glyph->bitmap.pitch;
|
||||||
|
|
||||||
|
height = min( height, ft_face->glyph->bitmap.rows );
|
||||||
while ( height-- )
|
while ( height-- )
|
||||||
{
|
{
|
||||||
for (x = 0; x < width; x++)
|
for (x = 0; x < width && x < ft_face->glyph->bitmap.width; x++)
|
||||||
{
|
{
|
||||||
if ( src[x / 8] & (1 << ( (7 - (x % 8)))) )
|
if ( src[x / 8] & (1 << ( (7 - (x % 8)))) )
|
||||||
((unsigned int *)dst)[x] = ~0u;
|
((unsigned int *)dst)[x] = ~0u;
|
||||||
|
|
Loading…
Reference in New Issue