[pfr] Various clang sanitizer fixes.
* src/pfr/pfrsbit.c (pfr_load_bitmap_metrics): Correctly handle signed nibbles. (pfr_slot_load_bitmap): Correctly exit frame in case of error. Fix invalid left shifts.
This commit is contained in:
parent
98967b77e5
commit
59828f72a2
|
@ -1,3 +1,12 @@
|
||||||
|
2016-03-25 Werner Lemberg <wl@gnu.org>
|
||||||
|
|
||||||
|
[pfr] Various clang sanitizer fixes.
|
||||||
|
|
||||||
|
* src/pfr/pfrsbit.c (pfr_load_bitmap_metrics): Correctly handle
|
||||||
|
signed nibbles.
|
||||||
|
(pfr_slot_load_bitmap): Correctly exit frame in case of error.
|
||||||
|
Fix invalid left shifts.
|
||||||
|
|
||||||
2016-03-23 Werner Lemberg <wl@gnu.org>
|
2016-03-23 Werner Lemberg <wl@gnu.org>
|
||||||
|
|
||||||
Rename `VERSION.DLL' (#47472).
|
Rename `VERSION.DLL' (#47472).
|
||||||
|
|
|
@ -357,7 +357,6 @@
|
||||||
{
|
{
|
||||||
FT_Error error = FT_Err_Ok;
|
FT_Error error = FT_Err_Ok;
|
||||||
FT_Byte flags;
|
FT_Byte flags;
|
||||||
FT_Char c;
|
|
||||||
FT_Byte b;
|
FT_Byte b;
|
||||||
FT_Byte* p = *pdata;
|
FT_Byte* p = *pdata;
|
||||||
FT_Long xpos, ypos, advance;
|
FT_Long xpos, ypos, advance;
|
||||||
|
@ -377,9 +376,9 @@
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
PFR_CHECK( 1 );
|
PFR_CHECK( 1 );
|
||||||
c = PFR_NEXT_INT8( p );
|
b = PFR_NEXT_BYTE( p );
|
||||||
xpos = c >> 4;
|
xpos = (FT_Char)b >> 4;
|
||||||
ypos = ( (FT_Char)( c << 4 ) ) >> 4;
|
ypos = ( (FT_Char)( b << 4 ) ) >> 4;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 1:
|
case 1:
|
||||||
|
@ -630,6 +629,8 @@
|
||||||
&xpos, &ypos,
|
&xpos, &ypos,
|
||||||
&xsize, &ysize,
|
&xsize, &ysize,
|
||||||
&advance, &format );
|
&advance, &format );
|
||||||
|
if ( error )
|
||||||
|
goto Exit1;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Before allocating the target bitmap, we check whether the given
|
* Before allocating the target bitmap, we check whether the given
|
||||||
|
@ -675,7 +676,7 @@
|
||||||
{
|
{
|
||||||
if ( FT_ERR_EQ( error, Invalid_Table ) )
|
if ( FT_ERR_EQ( error, Invalid_Table ) )
|
||||||
FT_ERROR(( "pfr_slot_load_bitmap: invalid bitmap dimensions\n" ));
|
FT_ERROR(( "pfr_slot_load_bitmap: invalid bitmap dimensions\n" ));
|
||||||
goto Exit;
|
goto Exit1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -710,8 +711,8 @@
|
||||||
/* XXX: needs casts to fit FT_Glyph_Metrics.{width|height} */
|
/* XXX: needs casts to fit FT_Glyph_Metrics.{width|height} */
|
||||||
glyph->root.metrics.width = (FT_Pos)xsize << 6;
|
glyph->root.metrics.width = (FT_Pos)xsize << 6;
|
||||||
glyph->root.metrics.height = (FT_Pos)ysize << 6;
|
glyph->root.metrics.height = (FT_Pos)ysize << 6;
|
||||||
glyph->root.metrics.horiBearingX = xpos << 6;
|
glyph->root.metrics.horiBearingX = xpos * 64;
|
||||||
glyph->root.metrics.horiBearingY = ypos << 6;
|
glyph->root.metrics.horiBearingY = ypos * 64;
|
||||||
glyph->root.metrics.horiAdvance = FT_PIX_ROUND( ( advance >> 2 ) );
|
glyph->root.metrics.horiAdvance = FT_PIX_ROUND( ( advance >> 2 ) );
|
||||||
glyph->root.metrics.vertBearingX = - glyph->root.metrics.width >> 1;
|
glyph->root.metrics.vertBearingX = - glyph->root.metrics.width >> 1;
|
||||||
glyph->root.metrics.vertBearingY = 0;
|
glyph->root.metrics.vertBearingY = 0;
|
||||||
|
@ -737,6 +738,7 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Exit1:
|
||||||
FT_FRAME_EXIT();
|
FT_FRAME_EXIT();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue