/* */
/* FreeType PFR bitmap loader (body). */
/* */
-/* Copyright 2002, 2003, 2006, 2009, 2010 by */
+/* Copyright 2002, 2003, 2006, 2009, 2010, 2013 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */
/* This file is part of the FreeType project, and may only be used, */
if ( !decreasing )
{
- writer->line += writer->pitch * ( target->rows-1 );
+ writer->line += writer->pitch * ( target->rows - 1 );
writer->pitch = -writer->pitch;
}
}
FT_Long *aadvance,
FT_UInt *aformat )
{
- FT_Error error = PFR_Err_Ok;
+ FT_Error error = FT_Err_Ok;
FT_Byte flags;
FT_Char b;
FT_Byte* p = *pdata;
return error;
Too_Short:
- error = PFR_Err_Invalid_Table;
+ error = FT_THROW( Invalid_Table );
FT_ERROR(( "pfr_load_bitmap_metrics: invalid glyph data\n" ));
goto Exit;
}
FT_Bool decreasing,
FT_Bitmap* target )
{
- FT_Error error = PFR_Err_Ok;
+ FT_Error error = FT_Err_Ok;
PFR_BitWriterRec writer;
default:
FT_ERROR(( "pfr_read_bitmap_data: invalid image type\n" ));
- error = PFR_Err_Invalid_File_Format;
+ error = FT_THROW( Invalid_File_Format );
}
}
}
/* couldn't find it */
- return PFR_Err_Invalid_Argument;
+ return FT_THROW( Invalid_Argument );
}
Found_Strike:
if ( gps_size == 0 )
{
/* Could not find a bitmap program string for this glyph */
- error = PFR_Err_Invalid_Argument;
+ error = FT_THROW( Invalid_Argument );
goto Exit;
}
}
* which causes a size truncation, because truncated
* size properties makes bitmap glyph broken.
*/
- if ( xpos > FT_INT_MAX || ( ypos + ysize ) > FT_INT_MAX )
+ if ( xpos > FT_INT_MAX || xpos < FT_INT_MIN ||
+ ysize > FT_INT_MAX || ypos + ysize > FT_INT_MAX ||
+ ypos + (FT_Long)ysize < FT_INT_MIN )
{
FT_TRACE1(( "pfr_slot_load_bitmap:" ));
FT_TRACE1(( "huge bitmap glyph %dx%d over FT_GlyphSlot\n",
xpos, ypos ));
- error = PFR_Err_Invalid_Pixel_Size;
+ error = FT_THROW( Invalid_Pixel_Size );
}
if ( !error )