*/*: Use `FT_THROW'.

This is essentially a mechanical conversion, adding inclusion of
`FT_INTERNAL_DEBUG_H' where necessary, and providing the macros for
stand-alone compiling modes of the rasterizer modules.

To convert the remaining occurrences of FT_Err_XXX and friends it is
necessary to rewrite the code.  Note, however, that it doesn't harm
if some cases are not handled since FT_THROW is a no-op.
This commit is contained in:
Werner Lemberg 2013-03-14 10:27:35 +01:00
parent c58ce3beee
commit 059bc335ce
88 changed files with 925 additions and 847 deletions

View File

@ -1,3 +1,15 @@
2013-03-13 Werner Lemberg <wl@gnu.org>
*/*: Use `FT_THROW'.
This is essentially a mechanical conversion, adding inclusion of
`FT_INTERNAL_DEBUG_H' where necessary, and providing the macros for
stand-alone compiling modes of the rasterizer modules.
To convert the remaining occurrences of FT_Err_XXX and friends it is
necessary to rewrite the code. Note, however, that it doesn't harm
if some cases are not handled since FT_THROW is a no-op.
2013-03-13 Werner Lemberg <wl@gnu.org> 2013-03-13 Werner Lemberg <wl@gnu.org>
Introduce `FT_THROW' macro. Introduce `FT_THROW' macro.

View File

@ -4,7 +4,7 @@
/* */ /* */
/* Auto-fitter routines to compute global hinting values (body). */ /* Auto-fitter routines to compute global hinting values (body). */
/* */ /* */
/* Copyright 2003-2012 by */ /* Copyright 2003-2013 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */ /* */
/* This file is part of the FreeType project, and may only be used, */ /* This file is part of the FreeType project, and may only be used, */
@ -242,7 +242,7 @@
if ( gindex >= (FT_ULong)globals->glyph_count ) if ( gindex >= (FT_ULong)globals->glyph_count )
{ {
error = AF_Err_Invalid_Argument; error = FT_THROW( Invalid_Argument );
goto Exit; goto Exit;
} }

View File

@ -4,7 +4,7 @@
/* */ /* */
/* Auto-fitter hinting routines (body). */ /* Auto-fitter hinting routines (body). */
/* */ /* */
/* Copyright 2003-2007, 2009-2012 by */ /* Copyright 2003-2007, 2009-2013 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */ /* */
/* This file is part of the FreeType project, and may only be used, */ /* This file is part of the FreeType project, and may only be used, */
@ -52,7 +52,7 @@
if ( old_max >= big_max ) if ( old_max >= big_max )
{ {
error = AF_Err_Out_Of_Memory; error = FT_THROW( Out_Of_Memory );
goto Exit; goto Exit;
} }
@ -97,7 +97,7 @@
if ( old_max >= big_max ) if ( old_max >= big_max )
{ {
error = AF_Err_Out_Of_Memory; error = FT_THROW( Out_Of_Memory );
goto Exit; goto Exit;
} }
@ -340,14 +340,14 @@
if ( !offset ) if ( !offset )
return AF_Err_Invalid_Argument; return FT_THROW( Invalid_Argument );
dim = ( dimension == 0 ) ? AF_DIMENSION_HORZ : AF_DIMENSION_VERT; dim = ( dimension == 0 ) ? AF_DIMENSION_HORZ : AF_DIMENSION_VERT;
axis = &hints->axis[dim]; axis = &hints->axis[dim];
if ( idx < 0 || idx >= axis->num_segments ) if ( idx < 0 || idx >= axis->num_segments )
return AF_Err_Invalid_Argument; return FT_THROW( Invalid_Argument );
seg = &axis->segments[idx]; seg = &axis->segments[idx];
*offset = (dim == AF_DIMENSION_HORZ) ? seg->first->ox *offset = (dim == AF_DIMENSION_HORZ) ? seg->first->ox

View File

@ -4,7 +4,7 @@
/* */ /* */
/* Auto-fitter glyph loading routines (body). */ /* Auto-fitter glyph loading routines (body). */
/* */ /* */
/* Copyright 2003-2009, 2011-2012 by */ /* Copyright 2003-2009, 2011-2013 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */ /* */
/* This file is part of the FreeType project, and may only be used, */ /* This file is part of the FreeType project, and may only be used, */
@ -349,7 +349,7 @@
if ( start_point + k >= num_base_points || if ( start_point + k >= num_base_points ||
l >= (FT_UInt)num_new_points ) l >= (FT_UInt)num_new_points )
{ {
error = AF_Err_Invalid_Composite; error = FT_THROW( Invalid_Composite );
goto Exit; goto Exit;
} }
@ -387,7 +387,7 @@
default: default:
/* we don't support other formats (yet?) */ /* we don't support other formats (yet?) */
error = AF_Err_Unimplemented_Feature; error = FT_THROW( Unimplemented_Feature );
} }
Hint_Metrics: Hint_Metrics:
@ -502,7 +502,7 @@
if ( !size ) if ( !size )
return AF_Err_Invalid_Argument; return FT_THROW( Invalid_Argument );
FT_ZERO( &scaler ); FT_ZERO( &scaler );

View File

@ -4,7 +4,7 @@
/* */ /* */
/* Auto-fitter module implementation (body). */ /* Auto-fitter module implementation (body). */
/* */ /* */
/* Copyright 2003-2006, 2009, 2011-2012 by */ /* Copyright 2003-2006, 2009, 2011-2013 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */ /* */
/* This file is part of the FreeType project, and may only be used, */ /* This file is part of the FreeType project, and may only be used, */
@ -55,7 +55,7 @@
if ( !face ) if ( !face )
return AF_Err_Invalid_Argument; return FT_THROW( Invalid_Argument );
globals = (AF_FaceGlobals)face->autohint.data; globals = (AF_FaceGlobals)face->autohint.data;
if ( !globals ) if ( !globals )
@ -112,7 +112,7 @@
FT_TRACE0(( "af_property_get: missing property `%s'\n", FT_TRACE0(( "af_property_get: missing property `%s'\n",
property_name )); property_name ));
return AF_Err_Missing_Property; return FT_THROW( Missing_Property );
} }
@ -163,7 +163,7 @@
FT_TRACE0(( "af_property_get: missing property `%s'\n", FT_TRACE0(( "af_property_get: missing property `%s'\n",
property_name )); property_name ));
return AF_Err_Missing_Property; return FT_THROW( Missing_Property );
} }

View File

@ -4,7 +4,7 @@
/* */ /* */
/* Quick computation of advance widths (body). */ /* Quick computation of advance widths (body). */
/* */ /* */
/* Copyright 2008, 2009, 2011 by */ /* Copyright 2008, 2009, 2011, 2013 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */ /* */
/* This file is part of the FreeType project, and may only be used, */ /* This file is part of the FreeType project, and may only be used, */
@ -17,6 +17,8 @@
#include <ft2build.h> #include <ft2build.h>
#include FT_INTERNAL_DEBUG_H
#include FT_ADVANCES_H #include FT_ADVANCES_H
#include FT_INTERNAL_OBJECTS_H #include FT_INTERNAL_OBJECTS_H
@ -35,7 +37,7 @@
return FT_Err_Ok; return FT_Err_Ok;
if ( face->size == NULL ) if ( face->size == NULL )
return FT_Err_Invalid_Size_Handle; return FT_THROW( Invalid_Size_Handle );
if ( flags & FT_LOAD_VERTICAL_LAYOUT ) if ( flags & FT_LOAD_VERTICAL_LAYOUT )
scale = face->size->metrics.y_scale; scale = face->size->metrics.y_scale;
@ -76,10 +78,10 @@
if ( !face ) if ( !face )
return FT_Err_Invalid_Face_Handle; return FT_THROW( Invalid_Face_Handle );
if ( gindex >= (FT_UInt)face->num_glyphs ) if ( gindex >= (FT_UInt)face->num_glyphs )
return FT_Err_Invalid_Glyph_Index; return FT_THROW( Invalid_Glyph_Index );
func = face->driver->clazz->get_advances; func = face->driver->clazz->get_advances;
if ( func && LOAD_ADVANCE_FAST_CHECK( flags ) ) if ( func && LOAD_ADVANCE_FAST_CHECK( flags ) )
@ -114,12 +116,12 @@
if ( !face ) if ( !face )
return FT_Err_Invalid_Face_Handle; return FT_THROW( Invalid_Face_Handle );
num = (FT_UInt)face->num_glyphs; num = (FT_UInt)face->num_glyphs;
end = start + count; end = start + count;
if ( start >= num || end < start || end > num ) if ( start >= num || end < start || end > num )
return FT_Err_Invalid_Glyph_Index; return FT_THROW( Invalid_Glyph_Index );
if ( count == 0 ) if ( count == 0 )
return FT_Err_Ok; return FT_Err_Ok;
@ -138,7 +140,7 @@
error = FT_Err_Ok; error = FT_Err_Ok;
if ( flags & FT_ADVANCE_FLAG_FAST_ONLY ) if ( flags & FT_ADVANCE_FLAG_FAST_ONLY )
return FT_Err_Unimplemented_Feature; return FT_THROW( Unimplemented_Feature );
flags |= (FT_UInt32)FT_LOAD_ADVANCE_ONLY; flags |= (FT_UInt32)FT_LOAD_ADVANCE_ONLY;
for ( nn = 0; nn < count; nn++ ) for ( nn = 0; nn < count; nn++ )

View File

@ -25,6 +25,8 @@
#include <ft2build.h> #include <ft2build.h>
#include FT_INTERNAL_DEBUG_H
#include FT_BBOX_H #include FT_BBOX_H
#include FT_IMAGE_H #include FT_IMAGE_H
#include FT_OUTLINE_H #include FT_OUTLINE_H
@ -566,10 +568,10 @@ FT_DEFINE_OUTLINE_FUNCS(bbox_interface,
if ( !abbox ) if ( !abbox )
return FT_Err_Invalid_Argument; return FT_THROW( Invalid_Argument );
if ( !outline ) if ( !outline )
return FT_Err_Invalid_Outline; return FT_THROW( Invalid_Outline );
/* if outline is empty, return (0,0,0,0) */ /* if outline is empty, return (0,0,0,0) */
if ( outline->n_points == 0 || outline->n_contours <= 0 ) if ( outline->n_points == 0 || outline->n_contours <= 0 )

View File

@ -4,7 +4,7 @@
/* */ /* */
/* FreeType utility functions for bitmaps (body). */ /* FreeType utility functions for bitmaps (body). */
/* */ /* */
/* Copyright 2004-2009, 2011 by */ /* Copyright 2004-2009, 2011, 2013 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */ /* */
/* This file is part of the FreeType project, and may only be used, */ /* This file is part of the FreeType project, and may only be used, */
@ -17,6 +17,8 @@
#include <ft2build.h> #include <ft2build.h>
#include FT_INTERNAL_DEBUG_H
#include FT_BITMAP_H #include FT_BITMAP_H
#include FT_IMAGE_H #include FT_IMAGE_H
#include FT_INTERNAL_OBJECTS_H #include FT_INTERNAL_OBJECTS_H
@ -135,7 +137,7 @@
new_pitch = ( width + xpixels ); new_pitch = ( width + xpixels );
break; break;
default: default:
return FT_Err_Invalid_Glyph_Format; return FT_THROW( Invalid_Glyph_Format );
} }
/* if no need to allocate memory */ /* if no need to allocate memory */
@ -223,14 +225,14 @@
if ( !library ) if ( !library )
return FT_Err_Invalid_Library_Handle; return FT_THROW( Invalid_Library_Handle );
if ( !bitmap || !bitmap->buffer ) if ( !bitmap || !bitmap->buffer )
return FT_Err_Invalid_Argument; return FT_THROW( Invalid_Argument );
if ( ( ( FT_PIX_ROUND( xStrength ) >> 6 ) > FT_INT_MAX ) || if ( ( ( FT_PIX_ROUND( xStrength ) >> 6 ) > FT_INT_MAX ) ||
( ( FT_PIX_ROUND( yStrength ) >> 6 ) > FT_INT_MAX ) ) ( ( FT_PIX_ROUND( yStrength ) >> 6 ) > FT_INT_MAX ) )
return FT_Err_Invalid_Argument; return FT_THROW( Invalid_Argument );
xstr = (FT_Int)FT_PIX_ROUND( xStrength ) >> 6; xstr = (FT_Int)FT_PIX_ROUND( xStrength ) >> 6;
ystr = (FT_Int)FT_PIX_ROUND( yStrength ) >> 6; ystr = (FT_Int)FT_PIX_ROUND( yStrength ) >> 6;
@ -238,7 +240,7 @@
if ( xstr == 0 && ystr == 0 ) if ( xstr == 0 && ystr == 0 )
return FT_Err_Ok; return FT_Err_Ok;
else if ( xstr < 0 || ystr < 0 ) else if ( xstr < 0 || ystr < 0 )
return FT_Err_Invalid_Argument; return FT_THROW( Invalid_Argument );
switch ( bitmap->pixel_mode ) switch ( bitmap->pixel_mode )
{ {
@ -382,7 +384,7 @@
if ( !library ) if ( !library )
return FT_Err_Invalid_Library_Handle; return FT_THROW( Invalid_Library_Handle );
memory = library->memory; memory = library->memory;
@ -419,7 +421,7 @@
if ( target->pitch > 0 && if ( target->pitch > 0 &&
(FT_ULong)target->rows > FT_ULONG_MAX / target->pitch ) (FT_ULong)target->rows > FT_ULONG_MAX / target->pitch )
return FT_Err_Invalid_Argument; return FT_THROW( Invalid_Argument );
if ( target->rows * target->pitch > old_size && if ( target->rows * target->pitch > old_size &&
FT_QREALLOC( target->buffer, FT_QREALLOC( target->buffer,
@ -429,7 +431,7 @@
break; break;
default: default:
error = FT_Err_Invalid_Argument; error = FT_THROW( Invalid_Argument );
} }
switch ( source->pixel_mode ) switch ( source->pixel_mode )
@ -650,10 +652,10 @@
if ( !library ) if ( !library )
return FT_Err_Invalid_Library_Handle; return FT_THROW( Invalid_Library_Handle );
if ( !bitmap ) if ( !bitmap )
return FT_Err_Invalid_Argument; return FT_THROW( Invalid_Argument );
memory = library->memory; memory = library->memory;

View File

@ -772,14 +772,14 @@
if ( !matrix ) if ( !matrix )
return FT_Err_Invalid_Argument; return FT_THROW( Invalid_Argument );
/* compute discriminant */ /* compute discriminant */
delta = FT_MulFix( matrix->xx, matrix->yy ) - delta = FT_MulFix( matrix->xx, matrix->yy ) -
FT_MulFix( matrix->xy, matrix->yx ); FT_MulFix( matrix->xy, matrix->yx );
if ( !delta ) if ( !delta )
return FT_Err_Invalid_Argument; /* matrix can't be inverted */ return FT_THROW( Invalid_Argument ); /* matrix can't be inverted */
matrix->xy = - FT_DivFix( matrix->xy, delta ); matrix->xy = - FT_DivFix( matrix->xy, delta );
matrix->yx = - FT_DivFix( matrix->yx, delta ); matrix->yx = - FT_DivFix( matrix->yx, delta );

View File

@ -4,7 +4,7 @@
/* */ /* */
/* The FreeType glyph loader (body). */ /* The FreeType glyph loader (body). */
/* */ /* */
/* Copyright 2002, 2003, 2004, 2005, 2006, 2010 by */ /* Copyright 2002-2006, 2010, 2013 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg */ /* David Turner, Robert Wilhelm, and Werner Lemberg */
/* */ /* */
/* This file is part of the FreeType project, and may only be used, */ /* This file is part of the FreeType project, and may only be used, */
@ -17,6 +17,7 @@
#include <ft2build.h> #include <ft2build.h>
#include FT_INTERNAL_DEBUG_H
#include FT_INTERNAL_GLYPH_LOADER_H #include FT_INTERNAL_GLYPH_LOADER_H
#include FT_INTERNAL_MEMORY_H #include FT_INTERNAL_MEMORY_H
#include FT_INTERNAL_OBJECTS_H #include FT_INTERNAL_OBJECTS_H
@ -219,7 +220,7 @@
new_max = FT_PAD_CEIL( new_max, 8 ); new_max = FT_PAD_CEIL( new_max, 8 );
if ( new_max > FT_OUTLINE_POINTS_MAX ) if ( new_max > FT_OUTLINE_POINTS_MAX )
return FT_Err_Array_Too_Large; return FT_THROW( Array_Too_Large );
if ( FT_RENEW_ARRAY( base->points, old_max, new_max ) || if ( FT_RENEW_ARRAY( base->points, old_max, new_max ) ||
FT_RENEW_ARRAY( base->tags, old_max, new_max ) ) FT_RENEW_ARRAY( base->tags, old_max, new_max ) )
@ -251,7 +252,7 @@
new_max = FT_PAD_CEIL( new_max, 4 ); new_max = FT_PAD_CEIL( new_max, 4 );
if ( new_max > FT_OUTLINE_CONTOURS_MAX ) if ( new_max > FT_OUTLINE_CONTOURS_MAX )
return FT_Err_Array_Too_Large; return FT_THROW( Array_Too_Large );
if ( FT_RENEW_ARRAY( base->contours, old_max, new_max ) ) if ( FT_RENEW_ARRAY( base->contours, old_max, new_max ) )
goto Exit; goto Exit;

View File

@ -4,7 +4,7 @@
/* */ /* */
/* FreeType convenience functions to handle glyphs (body). */ /* FreeType convenience functions to handle glyphs (body). */
/* */ /* */
/* Copyright 1996-2005, 2007, 2008, 2010, 2012 by */ /* Copyright 1996-2005, 2007, 2008, 2010, 2012, 2013 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */ /* */
/* This file is part of the FreeType project, and may only be used, */ /* This file is part of the FreeType project, and may only be used, */
@ -29,6 +29,8 @@
#include <ft2build.h> #include <ft2build.h>
#include FT_INTERNAL_DEBUG_H
#include FT_GLYPH_H #include FT_GLYPH_H
#include FT_OUTLINE_H #include FT_OUTLINE_H
#include FT_BITMAP_H #include FT_BITMAP_H
@ -65,7 +67,7 @@
if ( slot->format != FT_GLYPH_FORMAT_BITMAP ) if ( slot->format != FT_GLYPH_FORMAT_BITMAP )
{ {
error = FT_Err_Invalid_Glyph_Format; error = FT_THROW( Invalid_Glyph_Format );
goto Exit; goto Exit;
} }
@ -166,7 +168,7 @@
/* check format in glyph slot */ /* check format in glyph slot */
if ( slot->format != FT_GLYPH_FORMAT_OUTLINE ) if ( slot->format != FT_GLYPH_FORMAT_OUTLINE )
{ {
error = FT_Err_Invalid_Glyph_Format; error = FT_THROW( Invalid_Glyph_Format );
goto Exit; goto Exit;
} }
@ -314,7 +316,7 @@
/* check arguments */ /* check arguments */
if ( !target ) if ( !target )
{ {
error = FT_Err_Invalid_Argument; error = FT_THROW( Invalid_Argument );
goto Exit; goto Exit;
} }
@ -322,7 +324,7 @@
if ( !source || !source->clazz ) if ( !source || !source->clazz )
{ {
error = FT_Err_Invalid_Argument; error = FT_THROW( Invalid_Argument );
goto Exit; goto Exit;
} }
@ -361,12 +363,12 @@
if ( !slot ) if ( !slot )
return FT_Err_Invalid_Slot_Handle; return FT_THROW( Invalid_Slot_Handle );
library = slot->library; library = slot->library;
if ( !aglyph ) if ( !aglyph )
return FT_Err_Invalid_Argument; return FT_THROW( Invalid_Argument );
/* if it is a bitmap, that's easy :-) */ /* if it is a bitmap, that's easy :-) */
if ( slot->format == FT_GLYPH_FORMAT_BITMAP ) if ( slot->format == FT_GLYPH_FORMAT_BITMAP )
@ -388,7 +390,7 @@
if ( !clazz ) if ( !clazz )
{ {
error = FT_Err_Invalid_Glyph_Format; error = FT_THROW( Invalid_Glyph_Format );
goto Exit; goto Exit;
} }
@ -427,7 +429,7 @@
if ( !glyph || !glyph->clazz ) if ( !glyph || !glyph->clazz )
error = FT_Err_Invalid_Argument; error = FT_THROW( Invalid_Argument );
else else
{ {
clazz = glyph->clazz; clazz = glyph->clazz;
@ -441,7 +443,7 @@
FT_Vector_Transform( &glyph->advance, matrix ); FT_Vector_Transform( &glyph->advance, matrix );
} }
else else
error = FT_Err_Invalid_Glyph_Format; error = FT_THROW( Invalid_Glyph_Format );
} }
return error; return error;
} }
@ -600,7 +602,7 @@
return error; return error;
Bad: Bad:
error = FT_Err_Invalid_Argument; error = FT_THROW( Invalid_Argument );
goto Exit; goto Exit;
} }

View File

@ -4,7 +4,7 @@
/* */ /* */
/* FreeType API for validating TrueTyepGX/AAT tables (body). */ /* FreeType API for validating TrueTyepGX/AAT tables (body). */
/* */ /* */
/* Copyright 2004, 2005, 2006, 2010 by */ /* Copyright 2004-2006, 2010, 2013 by */
/* Masatake YAMATO, Redhat K.K, */ /* Masatake YAMATO, Redhat K.K, */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */ /* */
@ -26,6 +26,8 @@
#include <ft2build.h> #include <ft2build.h>
#include FT_INTERNAL_DEBUG_H
#include FT_INTERNAL_OBJECTS_H #include FT_INTERNAL_OBJECTS_H
#include FT_SERVICE_GX_VALIDATE_H #include FT_SERVICE_GX_VALIDATE_H
@ -44,13 +46,13 @@
if ( !face ) if ( !face )
{ {
error = FT_Err_Invalid_Face_Handle; error = FT_THROW( Invalid_Face_Handle );
goto Exit; goto Exit;
} }
if ( tables == NULL ) if ( tables == NULL )
{ {
error = FT_Err_Invalid_Argument; error = FT_THROW( Invalid_Argument );
goto Exit; goto Exit;
} }
@ -62,7 +64,7 @@
tables, tables,
table_length ); table_length );
else else
error = FT_Err_Unimplemented_Feature; error = FT_THROW( Unimplemented_Feature );
Exit: Exit:
return error; return error;
@ -96,13 +98,13 @@
if ( !face ) if ( !face )
{ {
error = FT_Err_Invalid_Face_Handle; error = FT_THROW( Invalid_Face_Handle );
goto Exit; goto Exit;
} }
if ( ckern_table == NULL ) if ( ckern_table == NULL )
{ {
error = FT_Err_Invalid_Argument; error = FT_THROW( Invalid_Argument );
goto Exit; goto Exit;
} }
@ -113,7 +115,7 @@
validation_flags, validation_flags,
ckern_table ); ckern_table );
else else
error = FT_Err_Unimplemented_Feature; error = FT_THROW( Unimplemented_Feature );
Exit: Exit:
return error; return error;

View File

@ -4,7 +4,7 @@
/* */ /* */
/* FreeType initialization layer (body). */ /* FreeType initialization layer (body). */
/* */ /* */
/* Copyright 1996-2002, 2005, 2007, 2009, 2012 by */ /* Copyright 1996-2002, 2005, 2007, 2009, 2012, 2013 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */ /* */
/* This file is part of the FreeType project, and may only be used, */ /* This file is part of the FreeType project, and may only be used, */
@ -242,7 +242,7 @@
if ( !memory ) if ( !memory )
{ {
FT_ERROR(( "FT_Init_FreeType: cannot find memory manager\n" )); FT_ERROR(( "FT_Init_FreeType: cannot find memory manager\n" ));
return FT_Err_Unimplemented_Feature; return FT_THROW( Unimplemented_Feature );
} }
/* build a library out of it, then fill it with the set of */ /* build a library out of it, then fill it with the set of */

View File

@ -4,7 +4,7 @@
/* */ /* */
/* FreeType API for color filtering of subpixel bitmap glyphs (body). */ /* FreeType API for color filtering of subpixel bitmap glyphs (body). */
/* */ /* */
/* Copyright 2006, 2008, 2009, 2010 by */ /* Copyright 2006, 2008-2010, 2013 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */ /* */
/* This file is part of the FreeType project, and may only be used, */ /* This file is part of the FreeType project, and may only be used, */
@ -17,6 +17,8 @@
#include <ft2build.h> #include <ft2build.h>
#include FT_INTERNAL_DEBUG_H
#include FT_LCD_FILTER_H #include FT_LCD_FILTER_H
#include FT_IMAGE_H #include FT_IMAGE_H
#include FT_INTERNAL_OBJECTS_H #include FT_INTERNAL_OBJECTS_H
@ -271,7 +273,7 @@
unsigned char *weights ) unsigned char *weights )
{ {
if ( !library || !weights ) if ( !library || !weights )
return FT_Err_Invalid_Argument; return FT_THROW( Invalid_Argument );
ft_memcpy( library->lcd_weights, weights, 5 ); ft_memcpy( library->lcd_weights, weights, 5 );
@ -292,7 +294,7 @@
if ( !library ) if ( !library )
return FT_Err_Invalid_Argument; return FT_THROW( Invalid_Argument );
switch ( filter ) switch ( filter )
{ {
@ -339,7 +341,7 @@
#endif #endif
default: default:
return FT_Err_Invalid_Argument; return FT_THROW( Invalid_Argument );
} }
library->lcd_filter = filter; library->lcd_filter = filter;
@ -356,7 +358,7 @@
FT_UNUSED( library ); FT_UNUSED( library );
FT_UNUSED( weights ); FT_UNUSED( weights );
return FT_Err_Unimplemented_Feature; return FT_THROW( Unimplemented_Feature );
} }
@ -367,7 +369,7 @@
FT_UNUSED( library ); FT_UNUSED( library );
FT_UNUSED( filter ); FT_UNUSED( filter );
return FT_Err_Unimplemented_Feature; return FT_THROW( Unimplemented_Feature );
} }
#endif /* !FT_CONFIG_OPTION_SUBPIXEL_RENDERING */ #endif /* !FT_CONFIG_OPTION_SUBPIXEL_RENDERING */

View File

@ -8,8 +8,7 @@
/* This file is for Mac OS X only; see builds/mac/ftoldmac.c for */ /* This file is for Mac OS X only; see builds/mac/ftoldmac.c for */
/* classic platforms built by MPW. */ /* classic platforms built by MPW. */
/* */ /* */
/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, */ /* Copyright 1996-2009, 2013 by */
/* 2009 by */
/* Just van Rossum, David Turner, Robert Wilhelm, and Werner Lemberg. */ /* Just van Rossum, David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */ /* */
/* This file is part of the FreeType project, and may only be used, */ /* This file is part of the FreeType project, and may only be used, */
@ -131,7 +130,7 @@
FT_UNUSED( pathSpec ); FT_UNUSED( pathSpec );
FT_UNUSED( face_index ); FT_UNUSED( face_index );
return FT_Err_Unimplemented_Feature; return FT_THROW( Unimplemented_Feature );
} }
@ -190,10 +189,10 @@
CFRelease( cf_fontName ); CFRelease( cf_fontName );
if ( ats_font_id == 0 || ats_font_id == 0xFFFFFFFFUL ) if ( ats_font_id == 0 || ats_font_id == 0xFFFFFFFFUL )
return FT_Err_Unknown_File_Format; return FT_THROW( Unknown_File_Format );
if ( noErr != FT_ATSFontGetFileReference( ats_font_id, ats_font_ref ) ) if ( noErr != FT_ATSFontGetFileReference( ats_font_id, ats_font_ref ) )
return FT_Err_Unknown_File_Format; return FT_THROW( Unknown_File_Format );
/* face_index calculation by searching preceding fontIDs */ /* face_index calculation by searching preceding fontIDs */
/* with same FSRef */ /* with same FSRef */
@ -233,7 +232,7 @@
return err; return err;
if ( noErr != FSRefMakePath( &ref, path, maxPathSize ) ) if ( noErr != FSRefMakePath( &ref, path, maxPathSize ) )
return FT_Err_Unknown_File_Format; return FT_THROW( Unknown_File_Format );
return FT_Err_Ok; return FT_Err_Ok;
} }
@ -251,7 +250,7 @@
FT_UNUSED( pathSpec ); FT_UNUSED( pathSpec );
FT_UNUSED( face_index ); FT_UNUSED( face_index );
return FT_Err_Unimplemented_Feature; return FT_THROW( Unimplemented_Feature );
#else #else
FSRef ref; FSRef ref;
FT_Error err; FT_Error err;
@ -263,7 +262,7 @@
if ( noErr != FSGetCatalogInfo( &ref, kFSCatInfoNone, NULL, NULL, if ( noErr != FSGetCatalogInfo( &ref, kFSCatInfoNone, NULL, NULL,
pathSpec, NULL ) ) pathSpec, NULL ) )
return FT_Err_Unknown_File_Format; return FT_THROW( Unknown_File_Format );
return FT_Err_Ok; return FT_Err_Ok;
#endif #endif
@ -279,7 +278,7 @@
if ( noErr != FSPathMakeRef( pathname, &ref, FALSE ) ) if ( noErr != FSPathMakeRef( pathname, &ref, FALSE ) )
return FT_Err_Cannot_Open_Resource; return FT_THROW( Cannot_Open_Resource );
/* at present, no support for dfont format */ /* at present, no support for dfont format */
err = FSOpenResourceFile( &ref, 0, NULL, fsRdPerm, res ); err = FSOpenResourceFile( &ref, 0, NULL, fsRdPerm, res );
@ -508,17 +507,17 @@
/* We should not extract parent directory by string manipulation. */ /* We should not extract parent directory by string manipulation. */
if ( noErr != FSPathMakeRef( path_fond, &ref, FALSE ) ) if ( noErr != FSPathMakeRef( path_fond, &ref, FALSE ) )
return FT_Err_Invalid_Argument; return FT_THROW( Invalid_Argument );
if ( noErr != FSGetCatalogInfo( &ref, kFSCatInfoNone, if ( noErr != FSGetCatalogInfo( &ref, kFSCatInfoNone,
NULL, NULL, NULL, &par_ref ) ) NULL, NULL, NULL, &par_ref ) )
return FT_Err_Invalid_Argument; return FT_THROW( Invalid_Argument );
if ( noErr != FSRefMakePath( &par_ref, path_lwfn, path_size ) ) if ( noErr != FSRefMakePath( &par_ref, path_lwfn, path_size ) )
return FT_Err_Invalid_Argument; return FT_THROW( Invalid_Argument );
if ( ft_strlen( (char *)path_lwfn ) + 1 + base_lwfn[0] > path_size ) if ( ft_strlen( (char *)path_lwfn ) + 1 + base_lwfn[0] > path_size )
return FT_Err_Invalid_Argument; return FT_THROW( Invalid_Argument );
/* now we have absolute dirname in path_lwfn */ /* now we have absolute dirname in path_lwfn */
ft_strcat( (char *)path_lwfn, "/" ); ft_strcat( (char *)path_lwfn, "/" );
@ -527,11 +526,11 @@
path_lwfn[dirname_len + base_lwfn[0]] = '\0'; path_lwfn[dirname_len + base_lwfn[0]] = '\0';
if ( noErr != FSPathMakeRef( path_lwfn, &ref, FALSE ) ) if ( noErr != FSPathMakeRef( path_lwfn, &ref, FALSE ) )
return FT_Err_Cannot_Open_Resource; return FT_THROW( Cannot_Open_Resource );
if ( noErr != FSGetCatalogInfo( &ref, kFSCatInfoNone, if ( noErr != FSGetCatalogInfo( &ref, kFSCatInfoNone,
NULL, NULL, NULL, NULL ) ) NULL, NULL, NULL, NULL ) )
return FT_Err_Cannot_Open_Resource; return FT_THROW( Cannot_Open_Resource );
return FT_Err_Ok; return FT_Err_Ok;
} }
@ -620,7 +619,7 @@
/* detect integer overflows */ /* detect integer overflows */
if ( total_size < old_total_size ) if ( total_size < old_total_size )
{ {
error = FT_Err_Array_Too_Large; error = FT_THROW( Array_Too_Large );
goto Error; goto Error;
} }
@ -705,7 +704,7 @@
if ( noErr != FT_FSPathMakeRes( pathname, &res ) ) if ( noErr != FT_FSPathMakeRes( pathname, &res ) )
return FT_Err_Cannot_Open_Resource; return FT_THROW( Cannot_Open_Resource );
pfb_data = NULL; pfb_data = NULL;
pfb_size = 0; pfb_size = 0;
@ -740,7 +739,7 @@
sfnt = GetResource( TTAG_sfnt, sfnt_id ); sfnt = GetResource( TTAG_sfnt, sfnt_id );
if ( sfnt == NULL ) if ( sfnt == NULL )
return FT_Err_Invalid_Handle; return FT_THROW( Invalid_Handle );
sfnt_size = (FT_ULong)GetHandleSize( sfnt ); sfnt_size = (FT_ULong)GetHandleSize( sfnt );
if ( FT_ALLOC( sfnt_data, (FT_Long)sfnt_size ) ) if ( FT_ALLOC( sfnt_data, (FT_Long)sfnt_size ) )
@ -805,11 +804,11 @@
if ( noErr != FT_FSPathMakeRes( pathname, &res_ref ) ) if ( noErr != FT_FSPathMakeRes( pathname, &res_ref ) )
return FT_Err_Cannot_Open_Resource; return FT_THROW( Cannot_Open_Resource );
UseResFile( res_ref ); UseResFile( res_ref );
if ( ResError() ) if ( ResError() )
return FT_Err_Cannot_Open_Resource; return FT_THROW( Cannot_Open_Resource );
num_faces_in_res = 0; num_faces_in_res = 0;
for ( res_index = 1; ; ++res_index ) for ( res_index = 1; ; ++res_index )
@ -854,7 +853,7 @@
GetResInfo( fond, &fond_id, &fond_type, fond_name ); GetResInfo( fond, &fond_id, &fond_type, fond_name );
if ( ResError() != noErr || fond_type != TTAG_FOND ) if ( ResError() != noErr || fond_type != TTAG_FOND )
return FT_Err_Invalid_File_Format; return FT_THROW( Invalid_File_Format );
parse_fond( *fond, &have_sfnt, &sfnt_id, lwfn_file_name, face_index ); parse_fond( *fond, &have_sfnt, &sfnt_id, lwfn_file_name, face_index );
@ -894,7 +893,7 @@
face_index, face_index,
aface ); aface );
else else
error = FT_Err_Unknown_File_Format; error = FT_THROW( Unknown_File_Format );
found_no_lwfn_file: found_no_lwfn_file:
if ( have_sfnt && FT_Err_Ok != error ) if ( have_sfnt && FT_Err_Ok != error )
@ -961,7 +960,7 @@
/* test for valid `library' and `aface' delayed to FT_Open_Face() */ /* test for valid `library' and `aface' delayed to FT_Open_Face() */
if ( !pathname ) if ( !pathname )
return FT_Err_Invalid_Argument; return FT_THROW( Invalid_Argument );
error = FT_Err_Ok; error = FT_Err_Ok;
*aface = NULL; *aface = NULL;
@ -1003,11 +1002,11 @@
if ( !ref ) if ( !ref )
return FT_Err_Invalid_Argument; return FT_THROW( Invalid_Argument );
err = FSRefMakePath( ref, pathname, sizeof ( pathname ) ); err = FSRefMakePath( ref, pathname, sizeof ( pathname ) );
if ( err ) if ( err )
error = FT_Err_Cannot_Open_Resource; error = FT_THROW( Cannot_Open_Resource );
error = FT_New_Face_From_Resource( library, pathname, face_index, aface ); error = FT_New_Face_From_Resource( library, pathname, face_index, aface );
if ( error != 0 || *aface != NULL ) if ( error != 0 || *aface != NULL )
@ -1043,13 +1042,13 @@
FT_UNUSED( face_index ); FT_UNUSED( face_index );
FT_UNUSED( aface ); FT_UNUSED( aface );
return FT_Err_Unimplemented_Feature; return FT_THROW( Unimplemented_Feature );
#else #else
FSRef ref; FSRef ref;
if ( !spec || FSpMakeFSRef( spec, &ref ) != noErr ) if ( !spec || FSpMakeFSRef( spec, &ref ) != noErr )
return FT_Err_Invalid_Argument; return FT_THROW( Invalid_Argument );
else else
return FT_New_Face_From_FSRef( library, &ref, face_index, aface ); return FT_New_Face_From_FSRef( library, &ref, face_index, aface );
#endif #endif

View File

@ -4,7 +4,7 @@
/* */ /* */
/* Multiple Master font support (body). */ /* Multiple Master font support (body). */
/* */ /* */
/* Copyright 1996-2001, 2003, 2004, 2009 by */ /* Copyright 1996-2001, 2003, 2004, 2009, 2013 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */ /* */
/* This file is part of the FreeType project, and may only be used, */ /* This file is part of the FreeType project, and may only be used, */
@ -17,6 +17,8 @@
#include <ft2build.h> #include <ft2build.h>
#include FT_INTERNAL_DEBUG_H
#include FT_MULTIPLE_MASTERS_H #include FT_MULTIPLE_MASTERS_H
#include FT_INTERNAL_OBJECTS_H #include FT_INTERNAL_OBJECTS_H
#include FT_SERVICE_MULTIPLE_MASTERS_H #include FT_SERVICE_MULTIPLE_MASTERS_H
@ -42,7 +44,7 @@
*aservice = NULL; *aservice = NULL;
if ( !face ) if ( !face )
return FT_Err_Invalid_Face_Handle; return FT_THROW( Invalid_Face_Handle );
error = FT_Err_Invalid_Argument; error = FT_Err_Invalid_Argument;

View File

@ -137,10 +137,10 @@
*astream = 0; *astream = 0;
if ( !library ) if ( !library )
return FT_Err_Invalid_Library_Handle; return FT_THROW( Invalid_Library_Handle );
if ( !args ) if ( !args )
return FT_Err_Invalid_Argument; return FT_THROW( Invalid_Argument );
memory = library->memory; memory = library->memory;
@ -178,7 +178,7 @@
#endif #endif
else else
error = FT_Err_Invalid_Argument; error = FT_THROW( Invalid_Argument );
if ( error ) if ( error )
FT_FREE( stream ); FT_FREE( stream );
@ -385,7 +385,7 @@
if ( !face || !face->driver ) if ( !face || !face->driver )
return FT_Err_Invalid_Argument; return FT_THROW( Invalid_Argument );
driver = face->driver; driver = face->driver;
clazz = driver->clazz; clazz = driver->clazz;
@ -575,7 +575,7 @@
if ( !face || !face->size || !face->glyph ) if ( !face || !face->size || !face->glyph )
return FT_Err_Invalid_Face_Handle; return FT_THROW( Invalid_Face_Handle );
/* The validity test for `glyph_index' is performed by the */ /* The validity test for `glyph_index' is performed by the */
/* font drivers. */ /* font drivers. */
@ -815,7 +815,7 @@
if ( !face ) if ( !face )
return FT_Err_Invalid_Face_Handle; return FT_THROW( Invalid_Face_Handle );
glyph_index = (FT_UInt)char_code; glyph_index = (FT_UInt)char_code;
if ( face->charmap ) if ( face->charmap )
@ -966,7 +966,7 @@
first = face->charmaps; first = face->charmaps;
if ( !first ) if ( !first )
return FT_Err_Invalid_CharMap_Handle; return FT_THROW( Invalid_CharMap_Handle );
/* /*
* The original TrueType specification(s) only specified charmap * The original TrueType specification(s) only specified charmap
@ -1044,7 +1044,7 @@
} }
} }
return FT_Err_Invalid_CharMap_Handle; return FT_THROW( Invalid_CharMap_Handle );
} }
@ -1207,7 +1207,7 @@
/* test for valid `library' and `aface' delayed to FT_Open_Face() */ /* test for valid `library' and `aface' delayed to FT_Open_Face() */
if ( !pathname ) if ( !pathname )
return FT_Err_Invalid_Argument; return FT_THROW( Invalid_Argument );
args.flags = FT_OPEN_PATHNAME; args.flags = FT_OPEN_PATHNAME;
args.pathname = (char*)pathname; args.pathname = (char*)pathname;
@ -1233,7 +1233,7 @@
/* test for valid `library' and `face' delayed to FT_Open_Face() */ /* test for valid `library' and `face' delayed to FT_Open_Face() */
if ( !file_base ) if ( !file_base )
return FT_Err_Invalid_Argument; return FT_THROW( Invalid_Argument );
args.flags = FT_OPEN_MEMORY; args.flags = FT_OPEN_MEMORY;
args.memory_base = file_base; args.memory_base = file_base;
@ -1305,10 +1305,10 @@
if ( !library ) if ( !library )
return FT_Err_Invalid_Library_Handle; return FT_THROW( Invalid_Library_Handle );
if ( !base ) if ( !base )
return FT_Err_Invalid_Argument; return FT_THROW( Invalid_Argument );
*astream = 0; *astream = 0;
memory = library->memory; memory = library->memory;
@ -1422,7 +1422,7 @@
if ( FT_READ_ULONG( tag ) ) if ( FT_READ_ULONG( tag ) )
return error; return error;
if ( tag != TTAG_typ1 ) if ( tag != TTAG_typ1 )
return FT_Err_Unknown_File_Format; return FT_THROW( Unknown_File_Format );
if ( FT_READ_USHORT( numTables ) ) if ( FT_READ_USHORT( numTables ) )
return error; return error;
@ -1459,7 +1459,7 @@
if ( face_index >= 0 && pstable_index == face_index ) if ( face_index >= 0 && pstable_index == face_index )
return FT_Err_Ok; return FT_Err_Ok;
} }
return FT_Err_Table_Missing; return FT_THROW( Table_Missing );
} }
@ -1696,7 +1696,7 @@
if ( face_index == -1 ) if ( face_index == -1 )
face_index = 0; face_index = 0;
if ( face_index >= resource_cnt ) if ( face_index >= resource_cnt )
return FT_Err_Cannot_Open_Resource; return FT_THROW( Cannot_Open_Resource );
flag_offset = offsets[face_index]; flag_offset = offsets[face_index];
error = FT_Stream_Seek( stream, flag_offset ); error = FT_Stream_Seek( stream, flag_offset );
@ -1706,7 +1706,7 @@
if ( FT_READ_LONG( rlen ) ) if ( FT_READ_LONG( rlen ) )
goto Exit; goto Exit;
if ( rlen == -1 ) if ( rlen == -1 )
return FT_Err_Cannot_Open_Resource; return FT_THROW( Cannot_Open_Resource );
error = open_face_PS_from_sfnt_stream( library, error = open_face_PS_from_sfnt_stream( library,
stream, stream,
@ -1813,7 +1813,7 @@
if ( NULL == stream ) if ( NULL == stream )
return FT_Err_Invalid_Stream_Operation; return FT_THROW( Invalid_Stream_Operation );
error = FT_Stream_Seek( stream, 0 ); error = FT_Stream_Seek( stream, 0 );
if ( error ) if ( error )
@ -1830,7 +1830,7 @@
header[ 1] > 33 || header[ 1] > 33 ||
header[63] != 0 || header[63] != 0 ||
header[2 + header[1]] != 0 ) header[2 + header[1]] != 0 )
return FT_Err_Unknown_File_Format; return FT_THROW( Unknown_File_Format );
dlen = ( header[0x53] << 24 ) | dlen = ( header[0x53] << 24 ) |
( header[0x54] << 16 ) | ( header[0x54] << 16 ) |
@ -2012,7 +2012,7 @@
/* FT_Stream_New() */ /* FT_Stream_New() */
if ( ( !aface && face_index >= 0 ) || !args ) if ( ( !aface && face_index >= 0 ) || !args )
return FT_Err_Invalid_Argument; return FT_THROW( Invalid_Argument );
external_stream = FT_BOOL( ( args->flags & FT_OPEN_STREAM ) && external_stream = FT_BOOL( ( args->flags & FT_OPEN_STREAM ) &&
args->stream ); args->stream );
@ -2049,7 +2049,7 @@
goto Success; goto Success;
} }
else else
error = FT_Err_Invalid_Handle; error = FT_THROW( Invalid_Handle );
FT_Stream_Free( stream, external_stream ); FT_Stream_Free( stream, external_stream );
goto Fail; goto Fail;
@ -2138,7 +2138,7 @@
#endif /* !FT_MACINTOSH && FT_CONFIG_OPTION_MAC_FONTS */ #endif /* !FT_MACINTOSH && FT_CONFIG_OPTION_MAC_FONTS */
/* no driver is able to handle this format */ /* no driver is able to handle this format */
error = FT_Err_Unknown_File_Format; error = FT_THROW( Unknown_File_Format );
Fail2: Fail2:
FT_Stream_Free( stream, external_stream ); FT_Stream_Free( stream, external_stream );
@ -2260,7 +2260,7 @@
/* test for valid `face' delayed to FT_Attach_Stream() */ /* test for valid `face' delayed to FT_Attach_Stream() */
if ( !filepathname ) if ( !filepathname )
return FT_Err_Invalid_Argument; return FT_THROW( Invalid_Argument );
open.stream = NULL; open.stream = NULL;
open.flags = FT_OPEN_PATHNAME; open.flags = FT_OPEN_PATHNAME;
@ -2286,11 +2286,11 @@
/* test for valid `parameters' delayed to FT_Stream_New() */ /* test for valid `parameters' delayed to FT_Stream_New() */
if ( !face ) if ( !face )
return FT_Err_Invalid_Face_Handle; return FT_THROW( Invalid_Face_Handle );
driver = face->driver; driver = face->driver;
if ( !driver ) if ( !driver )
return FT_Err_Invalid_Driver_Handle; return FT_THROW( Invalid_Driver_Handle );
error = FT_Stream_New( driver->root.library, parameters, &stream ); error = FT_Stream_New( driver->root.library, parameters, &stream );
if ( error ) if ( error )
@ -2382,13 +2382,13 @@
if ( !face ) if ( !face )
return FT_Err_Invalid_Face_Handle; return FT_THROW( Invalid_Face_Handle );
if ( !asize ) if ( !asize )
return FT_Err_Invalid_Size_Handle; return FT_THROW( Invalid_Size_Handle );
if ( !face->driver ) if ( !face->driver )
return FT_Err_Invalid_Driver_Handle; return FT_THROW( Invalid_Driver_Handle );
*asize = 0; *asize = 0;
@ -2440,15 +2440,15 @@
if ( !size ) if ( !size )
return FT_Err_Invalid_Size_Handle; return FT_THROW( Invalid_Size_Handle );
face = size->face; face = size->face;
if ( !face ) if ( !face )
return FT_Err_Invalid_Face_Handle; return FT_THROW( Invalid_Face_Handle );
driver = face->driver; driver = face->driver;
if ( !driver ) if ( !driver )
return FT_Err_Invalid_Driver_Handle; return FT_THROW( Invalid_Driver_Handle );
memory = driver->root.memory; memory = driver->root.memory;
@ -2469,7 +2469,7 @@
destroy_size( memory, size, driver ); destroy_size( memory, size, driver );
} }
else else
error = FT_Err_Invalid_Size_Handle; error = FT_THROW( Invalid_Size_Handle );
return error; return error;
} }
@ -2488,11 +2488,11 @@
if ( !FT_HAS_FIXED_SIZES( face ) ) if ( !FT_HAS_FIXED_SIZES( face ) )
return FT_Err_Invalid_Face_Handle; return FT_THROW( Invalid_Face_Handle );
/* FT_Bitmap_Size doesn't provide enough info... */ /* FT_Bitmap_Size doesn't provide enough info... */
if ( req->type != FT_SIZE_REQUEST_TYPE_NOMINAL ) if ( req->type != FT_SIZE_REQUEST_TYPE_NOMINAL )
return FT_Err_Unimplemented_Feature; return FT_THROW( Unimplemented_Feature );
w = FT_REQUEST_WIDTH ( req ); w = FT_REQUEST_WIDTH ( req );
h = FT_REQUEST_HEIGHT( req ); h = FT_REQUEST_HEIGHT( req );
@ -2522,7 +2522,7 @@
} }
} }
return FT_Err_Invalid_Pixel_Size; return FT_THROW( Invalid_Pixel_Size );
} }
@ -2765,10 +2765,10 @@
if ( !face || !FT_HAS_FIXED_SIZES( face ) ) if ( !face || !FT_HAS_FIXED_SIZES( face ) )
return FT_Err_Invalid_Face_Handle; return FT_THROW( Invalid_Face_Handle );
if ( strike_index < 0 || strike_index >= face->num_fixed_sizes ) if ( strike_index < 0 || strike_index >= face->num_fixed_sizes )
return FT_Err_Invalid_Argument; return FT_THROW( Invalid_Argument );
clazz = face->driver->clazz; clazz = face->driver->clazz;
@ -2818,11 +2818,11 @@
if ( !face ) if ( !face )
return FT_Err_Invalid_Face_Handle; return FT_THROW( Invalid_Face_Handle );
if ( !req || req->width < 0 || req->height < 0 || if ( !req || req->width < 0 || req->height < 0 ||
req->type >= FT_SIZE_REQUEST_TYPE_MAX ) req->type >= FT_SIZE_REQUEST_TYPE_MAX )
return FT_Err_Invalid_Argument; return FT_THROW( Invalid_Argument );
clazz = face->driver->clazz; clazz = face->driver->clazz;
@ -2973,10 +2973,10 @@
if ( !face ) if ( !face )
return FT_Err_Invalid_Face_Handle; return FT_THROW( Invalid_Face_Handle );
if ( !akerning ) if ( !akerning )
return FT_Err_Invalid_Argument; return FT_THROW( Invalid_Argument );
driver = face->driver; driver = face->driver;
@ -3032,14 +3032,14 @@
if ( !face ) if ( !face )
return FT_Err_Invalid_Face_Handle; return FT_THROW( Invalid_Face_Handle );
if ( !akerning ) if ( !akerning )
return FT_Err_Invalid_Argument; return FT_THROW( Invalid_Argument );
FT_FACE_FIND_SERVICE( face, service, KERNING ); FT_FACE_FIND_SERVICE( face, service, KERNING );
if ( !service ) if ( !service )
return FT_Err_Unimplemented_Feature; return FT_THROW( Unimplemented_Feature );
error = service->get_track( face, error = service->get_track( face,
point_size, point_size,
@ -3061,10 +3061,10 @@
if ( !face ) if ( !face )
return FT_Err_Invalid_Face_Handle; return FT_THROW( Invalid_Face_Handle );
if ( encoding == FT_ENCODING_NONE ) if ( encoding == FT_ENCODING_NONE )
return FT_Err_Invalid_Argument; return FT_THROW( Invalid_Argument );
/* FT_ENCODING_UNICODE is special. We try to find the `best' Unicode */ /* FT_ENCODING_UNICODE is special. We try to find the `best' Unicode */
/* charmap available, i.e., one with UCS-4 characters, if possible. */ /* charmap available, i.e., one with UCS-4 characters, if possible. */
@ -3075,7 +3075,7 @@
cur = face->charmaps; cur = face->charmaps;
if ( !cur ) if ( !cur )
return FT_Err_Invalid_CharMap_Handle; return FT_THROW( Invalid_CharMap_Handle );
limit = cur + face->num_charmaps; limit = cur + face->num_charmaps;
@ -3097,7 +3097,7 @@
} }
} }
return FT_Err_Invalid_Argument; return FT_THROW( Invalid_Argument );
} }
@ -3112,13 +3112,13 @@
if ( !face ) if ( !face )
return FT_Err_Invalid_Face_Handle; return FT_THROW( Invalid_Face_Handle );
cur = face->charmaps; cur = face->charmaps;
if ( !cur ) if ( !cur )
return FT_Err_Invalid_CharMap_Handle; return FT_THROW( Invalid_CharMap_Handle );
if ( FT_Get_CMap_Format( charmap ) == 14 ) if ( FT_Get_CMap_Format( charmap ) == 14 )
return FT_Err_Invalid_Argument; return FT_THROW( Invalid_Argument );
limit = cur + face->num_charmaps; limit = cur + face->num_charmaps;
@ -3139,7 +3139,7 @@
return 0; return 0;
} }
} }
return FT_Err_Invalid_Argument; return FT_THROW( Invalid_Argument );
} }
@ -3247,7 +3247,7 @@
if ( clazz == NULL || charmap == NULL || charmap->face == NULL ) if ( clazz == NULL || charmap == NULL || charmap->face == NULL )
return FT_Err_Invalid_Argument; return FT_THROW( Invalid_Argument );
face = charmap->face; face = charmap->face;
memory = FT_FACE_MEMORY( face ); memory = FT_FACE_MEMORY( face );
@ -3669,11 +3669,11 @@
if ( !face || !FT_IS_SFNT( face ) ) if ( !face || !FT_IS_SFNT( face ) )
return FT_Err_Invalid_Face_Handle; return FT_THROW( Invalid_Face_Handle );
FT_FACE_FIND_SERVICE( face, service, SFNT_TABLE ); FT_FACE_FIND_SERVICE( face, service, SFNT_TABLE );
if ( service == NULL ) if ( service == NULL )
return FT_Err_Unimplemented_Feature; return FT_THROW( Unimplemented_Feature );
return service->load_table( face, tag, offset, buffer, length ); return service->load_table( face, tag, offset, buffer, length );
} }
@ -3692,11 +3692,11 @@
if ( !face || !FT_IS_SFNT( face ) ) if ( !face || !FT_IS_SFNT( face ) )
return FT_Err_Invalid_Face_Handle; return FT_THROW( Invalid_Face_Handle );
FT_FACE_FIND_SERVICE( face, service, SFNT_TABLE ); FT_FACE_FIND_SERVICE( face, service, SFNT_TABLE );
if ( service == NULL ) if ( service == NULL )
return FT_Err_Unimplemented_Feature; return FT_THROW( Unimplemented_Feature );
return service->table_info( face, table_index, tag, &offset, length ); return service->table_info( face, table_index, tag, &offset, length );
} }
@ -3759,11 +3759,11 @@
if ( size == NULL ) if ( size == NULL )
return FT_Err_Invalid_Argument; return FT_THROW( Invalid_Argument );
face = size->face; face = size->face;
if ( face == NULL || face->driver == NULL ) if ( face == NULL || face->driver == NULL )
return FT_Err_Invalid_Argument; return FT_THROW( Invalid_Argument );
/* we don't need anything more complex than that; all size objects */ /* we don't need anything more complex than that; all size objects */
/* are already listed by the face */ /* are already listed by the face */
@ -3955,15 +3955,15 @@
if ( !library ) if ( !library )
return FT_Err_Invalid_Library_Handle; return FT_THROW( Invalid_Library_Handle );
if ( !renderer ) if ( !renderer )
return FT_Err_Invalid_Argument; return FT_THROW( Invalid_Argument );
node = FT_List_Find( &library->renderers, renderer ); node = FT_List_Find( &library->renderers, renderer );
if ( !node ) if ( !node )
{ {
error = FT_Err_Invalid_Argument; error = FT_THROW( Invalid_Argument );
goto Exit; goto Exit;
} }
@ -4060,7 +4060,7 @@
if ( !slot || !slot->face ) if ( !slot || !slot->face )
return FT_Err_Invalid_Argument; return FT_THROW( Invalid_Argument );
library = FT_FACE_LIBRARY( slot->face ); library = FT_FACE_LIBRARY( slot->face );
@ -4140,14 +4140,14 @@
FREETYPE_MINOR ) FREETYPE_MINOR )
if ( !library ) if ( !library )
return FT_Err_Invalid_Library_Handle; return FT_THROW( Invalid_Library_Handle );
if ( !clazz ) if ( !clazz )
return FT_Err_Invalid_Argument; return FT_THROW( Invalid_Argument );
/* check freetype version */ /* check freetype version */
if ( clazz->module_requires > FREETYPE_VER_FIXED ) if ( clazz->module_requires > FREETYPE_VER_FIXED )
return FT_Err_Invalid_Version; return FT_THROW( Invalid_Version );
/* look for a module with the same name in the library's table */ /* look for a module with the same name in the library's table */
for ( nn = 0; nn < library->num_modules; nn++ ) for ( nn = 0; nn < library->num_modules; nn++ )
@ -4157,7 +4157,7 @@
{ {
/* this installed module has the same name, compare their versions */ /* this installed module has the same name, compare their versions */
if ( clazz->module_version <= module->clazz->module_version ) if ( clazz->module_version <= module->clazz->module_version )
return FT_Err_Lower_Module_Version; return FT_THROW( Lower_Module_Version );
/* remove the module from our list, then exit the loop to replace */ /* remove the module from our list, then exit the loop to replace */
/* it by our new version.. */ /* it by our new version.. */
@ -4171,7 +4171,7 @@
if ( library->num_modules >= FT_MAX_MODULES ) if ( library->num_modules >= FT_MAX_MODULES )
{ {
error = FT_Err_Too_Many_Drivers; error = FT_THROW( Too_Many_Drivers );
goto Exit; goto Exit;
} }
@ -4350,7 +4350,7 @@
/* try to find the module from the table, then remove it from there */ /* try to find the module from the table, then remove it from there */
if ( !library ) if ( !library )
return FT_Err_Invalid_Library_Handle; return FT_THROW( Invalid_Library_Handle );
if ( module ) if ( module )
{ {
@ -4379,7 +4379,7 @@
} }
} }
} }
return FT_Err_Invalid_Driver_Handle; return FT_THROW( Invalid_Driver_Handle );
} }
@ -4406,10 +4406,10 @@
if ( !library ) if ( !library )
return FT_Err_Invalid_Library_Handle; return FT_THROW( Invalid_Library_Handle );
if ( !module_name || !property_name || !value ) if ( !module_name || !property_name || !value )
return FT_Err_Invalid_Argument; return FT_THROW( Invalid_Argument );
cur = library->modules; cur = library->modules;
limit = cur + library->num_modules; limit = cur + library->num_modules;
@ -4423,7 +4423,7 @@
{ {
FT_ERROR(( "%s: can't find module `%s'\n", FT_ERROR(( "%s: can't find module `%s'\n",
func_name, module_name )); func_name, module_name ));
return FT_Err_Missing_Module; return FT_THROW( Missing_Module );
} }
/* check whether we have a service interface */ /* check whether we have a service interface */
@ -4431,7 +4431,7 @@
{ {
FT_ERROR(( "%s: module `%s' doesn't support properties\n", FT_ERROR(( "%s: module `%s' doesn't support properties\n",
func_name, module_name )); func_name, module_name ));
return FT_Err_Unimplemented_Feature; return FT_THROW( Unimplemented_Feature );
} }
/* search property service */ /* search property service */
@ -4441,7 +4441,7 @@
{ {
FT_ERROR(( "%s: module `%s' doesn't support properties\n", FT_ERROR(( "%s: module `%s' doesn't support properties\n",
func_name, module_name )); func_name, module_name ));
return FT_Err_Unimplemented_Feature; return FT_THROW( Unimplemented_Feature );
} }
service = (FT_Service_Properties)interface; service = (FT_Service_Properties)interface;
@ -4455,7 +4455,7 @@
{ {
FT_ERROR(( "%s: property service of module `%s' is broken\n", FT_ERROR(( "%s: property service of module `%s' is broken\n",
func_name, module_name )); func_name, module_name ));
return FT_Err_Unimplemented_Feature; return FT_THROW( Unimplemented_Feature );
} }
return set ? service->set_property( cur[0], property_name, value ) return set ? service->set_property( cur[0], property_name, value )
@ -4530,7 +4530,7 @@
if ( !memory ) if ( !memory )
return FT_Err_Invalid_Argument; return FT_THROW( Invalid_Argument );
#ifdef FT_DEBUG_LEVEL_ERROR #ifdef FT_DEBUG_LEVEL_ERROR
/* init debugging support */ /* init debugging support */
@ -4617,7 +4617,7 @@
if ( !library ) if ( !library )
return FT_Err_Invalid_Library_Handle; return FT_THROW( Invalid_Library_Handle );
library->refcount--; library->refcount--;
if ( library->refcount > 0 ) if ( library->refcount > 0 )

View File

@ -4,7 +4,7 @@
/* */ /* */
/* FreeType API for validating OpenType tables (body). */ /* FreeType API for validating OpenType tables (body). */
/* */ /* */
/* Copyright 2004, 2006, 2008, 2010 by */ /* Copyright 2004, 2006, 2008, 2010, 2013 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */ /* */
/* This file is part of the FreeType project, and may only be used, */ /* This file is part of the FreeType project, and may only be used, */
@ -16,6 +16,8 @@
/***************************************************************************/ /***************************************************************************/
#include <ft2build.h> #include <ft2build.h>
#include FT_INTERNAL_DEBUG_H
#include FT_INTERNAL_OBJECTS_H #include FT_INTERNAL_OBJECTS_H
#include FT_SERVICE_OPENTYPE_VALIDATE_H #include FT_SERVICE_OPENTYPE_VALIDATE_H
#include FT_OPENTYPE_VALIDATE_H #include FT_OPENTYPE_VALIDATE_H
@ -38,7 +40,7 @@
if ( !face ) if ( !face )
{ {
error = FT_Err_Invalid_Face_Handle; error = FT_THROW( Invalid_Face_Handle );
goto Exit; goto Exit;
} }
@ -48,7 +50,7 @@
GSUB_table && GSUB_table &&
JSTF_table ) ) JSTF_table ) )
{ {
error = FT_Err_Invalid_Argument; error = FT_THROW( Invalid_Argument );
goto Exit; goto Exit;
} }
@ -63,7 +65,7 @@
GSUB_table, GSUB_table,
JSTF_table ); JSTF_table );
else else
error = FT_Err_Unimplemented_Feature; error = FT_THROW( Unimplemented_Feature );
Exit: Exit:
return error; return error;

View File

@ -74,7 +74,7 @@
if ( !outline || !func_interface ) if ( !outline || !func_interface )
return FT_Err_Invalid_Argument; return FT_THROW( Invalid_Argument );
shift = func_interface->shift; shift = func_interface->shift;
delta = func_interface->delta; delta = func_interface->delta;
@ -287,7 +287,7 @@
return error; return error;
Invalid_Outline: Invalid_Outline:
return FT_Err_Invalid_Outline; return FT_THROW( Invalid_Outline );
} }
@ -301,16 +301,16 @@
if ( !anoutline || !memory ) if ( !anoutline || !memory )
return FT_Err_Invalid_Argument; return FT_THROW( Invalid_Argument );
*anoutline = null_outline; *anoutline = null_outline;
if ( numContours < 0 || if ( numContours < 0 ||
(FT_UInt)numContours > numPoints ) (FT_UInt)numContours > numPoints )
return FT_Err_Invalid_Argument; return FT_THROW( Invalid_Argument );
if ( numPoints > FT_OUTLINE_POINTS_MAX ) if ( numPoints > FT_OUTLINE_POINTS_MAX )
return FT_Err_Array_Too_Large; return FT_THROW( Array_Too_Large );
if ( FT_NEW_ARRAY( anoutline->points, numPoints ) || if ( FT_NEW_ARRAY( anoutline->points, numPoints ) ||
FT_NEW_ARRAY( anoutline->tags, numPoints ) || FT_NEW_ARRAY( anoutline->tags, numPoints ) ||
@ -340,7 +340,7 @@
FT_Outline *anoutline ) FT_Outline *anoutline )
{ {
if ( !library ) if ( !library )
return FT_Err_Invalid_Library_Handle; return FT_THROW( Invalid_Library_Handle );
return FT_Outline_New_Internal( library->memory, numPoints, return FT_Outline_New_Internal( library->memory, numPoints,
numContours, anoutline ); numContours, anoutline );
@ -388,7 +388,7 @@
} }
Bad: Bad:
return FT_Err_Invalid_Argument; return FT_THROW( Invalid_Argument );
} }
@ -404,7 +404,7 @@
if ( !source || !target || if ( !source || !target ||
source->n_points != target->n_points || source->n_points != target->n_points ||
source->n_contours != target->n_contours ) source->n_contours != target->n_contours )
return FT_Err_Invalid_Argument; return FT_THROW( Invalid_Argument );
if ( source == target ) if ( source == target )
return FT_Err_Ok; return FT_Err_Ok;
@ -443,7 +443,7 @@
return FT_Err_Ok; return FT_Err_Ok;
} }
else else
return FT_Err_Invalid_Argument; return FT_THROW( Invalid_Argument );
} }
@ -456,7 +456,7 @@
/* check for valid `outline' in FT_Outline_Done_Internal() */ /* check for valid `outline' in FT_Outline_Done_Internal() */
if ( !library ) if ( !library )
return FT_Err_Invalid_Library_Handle; return FT_THROW( Invalid_Library_Handle );
return FT_Outline_Done_Internal( library->memory, outline ); return FT_Outline_Done_Internal( library->memory, outline );
} }
@ -610,10 +610,10 @@
if ( !library ) if ( !library )
return FT_Err_Invalid_Library_Handle; return FT_THROW( Invalid_Library_Handle );
if ( !outline || !params ) if ( !outline || !params )
return FT_Err_Invalid_Argument; return FT_THROW( Invalid_Argument );
renderer = library->cur_renderer; renderer = library->cur_renderer;
node = library->renderers.head; node = library->renderers.head;
@ -658,7 +658,7 @@
if ( !abitmap ) if ( !abitmap )
return FT_Err_Invalid_Argument; return FT_THROW( Invalid_Argument );
/* other checks are delayed to FT_Outline_Render() */ /* other checks are delayed to FT_Outline_Render() */
@ -908,7 +908,7 @@
if ( !outline ) if ( !outline )
return FT_Err_Invalid_Argument; return FT_THROW( Invalid_Argument );
xstrength /= 2; xstrength /= 2;
ystrength /= 2; ystrength /= 2;
@ -919,7 +919,7 @@
if ( orientation == FT_ORIENTATION_NONE ) if ( orientation == FT_ORIENTATION_NONE )
{ {
if ( outline->n_contours ) if ( outline->n_contours )
return FT_Err_Invalid_Argument; return FT_THROW( Invalid_Argument );
else else
return FT_Err_Ok; return FT_Err_Ok;
} }

View File

@ -4,7 +4,7 @@
/* */ /* */
/* FreeType API for accessing PFR-specific data (body). */ /* FreeType API for accessing PFR-specific data (body). */
/* */ /* */
/* Copyright 2002, 2003, 2004, 2008, 2010 by */ /* Copyright 2002-2004, 2008, 2010, 2013 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */ /* */
/* This file is part of the FreeType project, and may only be used, */ /* This file is part of the FreeType project, and may only be used, */
@ -16,6 +16,8 @@
/***************************************************************************/ /***************************************************************************/
#include <ft2build.h> #include <ft2build.h>
#include FT_INTERNAL_DEBUG_H
#include FT_INTERNAL_OBJECTS_H #include FT_INTERNAL_OBJECTS_H
#include FT_SERVICE_PFR_H #include FT_SERVICE_PFR_H
@ -48,7 +50,7 @@
if ( !face ) if ( !face )
return FT_Err_Invalid_Argument; return FT_THROW( Invalid_Argument );
service = ft_pfr_check( face ); service = ft_pfr_check( face );
if ( service ) if ( service )
@ -84,7 +86,7 @@
if ( ametrics_y_scale ) if ( ametrics_y_scale )
*ametrics_y_scale = y_scale; *ametrics_y_scale = y_scale;
error = FT_Err_Unknown_File_Format; error = FT_THROW( Unknown_File_Format );
} }
return error; return error;
@ -104,7 +106,7 @@
if ( !face ) if ( !face )
return FT_Err_Invalid_Argument; return FT_THROW( Invalid_Argument );
service = ft_pfr_check( face ); service = ft_pfr_check( face );
if ( service ) if ( service )
@ -135,7 +137,7 @@
} }
else else
/* XXX: TODO: PROVIDE ADVANCE-LOADING METHOD TO ALL FONT DRIVERS */ /* XXX: TODO: PROVIDE ADVANCE-LOADING METHOD TO ALL FONT DRIVERS */
error = FT_Err_Invalid_Argument; error = FT_THROW( Invalid_Argument );
return error; return error;
} }

View File

@ -29,7 +29,8 @@
ft_pic_container_init( FT_Library library ) ft_pic_container_init( FT_Library library )
{ {
FT_PIC_Container* pic_container = &library->pic_container; FT_PIC_Container* pic_container = &library->pic_container;
FT_Error error = FT_Err_Ok; FT_Error error = FT_Err_Ok;
FT_MEM_SET( pic_container, 0, sizeof ( *pic_container ) ); FT_MEM_SET( pic_container, 0, sizeof ( *pic_container ) );

View File

@ -4,7 +4,7 @@
/* */ /* */
/* Embedded resource forks accessor (body). */ /* Embedded resource forks accessor (body). */
/* */ /* */
/* Copyright 2004, 2005, 2006, 2007, 2008, 2009, 2010 by */ /* Copyright 2004-2010, 2013 by */
/* Masatake YAMATO and Redhat K.K. */ /* Masatake YAMATO and Redhat K.K. */
/* */ /* */
/* FT_Raccess_Get_HeaderInfo() and raccess_guess_darwin_hfsplus() are */ /* FT_Raccess_Get_HeaderInfo() and raccess_guess_darwin_hfsplus() are */
@ -86,7 +86,7 @@
/* map_len = head[12] .. head[15] */ /* map_len = head[12] .. head[15] */
if ( *rdata_pos + rdata_len != map_pos || map_pos == rfork_offset ) if ( *rdata_pos + rdata_len != map_pos || map_pos == rfork_offset )
return FT_Err_Unknown_File_Format; return FT_THROW( Unknown_File_Format );
error = FT_Stream_Seek( stream, map_pos ); error = FT_Stream_Seek( stream, map_pos );
if ( error ) if ( error )
@ -108,7 +108,7 @@
allmatch = 0; allmatch = 0;
} }
if ( !allzeros && !allmatch ) if ( !allzeros && !allmatch )
return FT_Err_Unknown_File_Format; return FT_THROW( Unknown_File_Format );
/* If we have reached this point then it is probably a mac resource */ /* If we have reached this point then it is probably a mac resource */
/* file. Now, does it contain any interesting resources? */ /* file. Now, does it contain any interesting resources? */
@ -121,7 +121,7 @@
if ( FT_READ_USHORT( type_list ) ) if ( FT_READ_USHORT( type_list ) )
return error; return error;
if ( type_list == -1 ) if ( type_list == -1 )
return FT_Err_Unknown_File_Format; return FT_THROW( Unknown_File_Format );
error = FT_Stream_Seek( stream, map_pos + type_list ); error = FT_Stream_Seek( stream, map_pos + type_list );
if ( error ) if ( error )
@ -233,7 +233,7 @@
} }
} }
return FT_Err_Cannot_Open_Resource; return FT_THROW( Cannot_Open_Resource );
} }
@ -435,7 +435,7 @@
*result_file_name = NULL; *result_file_name = NULL;
if ( NULL == stream ) if ( NULL == stream )
return FT_Err_Cannot_Open_Stream; return FT_THROW( Cannot_Open_Stream );
return raccess_guess_apple_generic( library, stream, base_file_name, return raccess_guess_apple_generic( library, stream, base_file_name,
magic, result_offset ); magic, result_offset );
@ -457,7 +457,7 @@
*result_file_name = NULL; *result_file_name = NULL;
if ( NULL == stream ) if ( NULL == stream )
return FT_Err_Cannot_Open_Stream; return FT_THROW( Cannot_Open_Stream );
return raccess_guess_apple_generic( library, stream, base_file_name, return raccess_guess_apple_generic( library, stream, base_file_name,
magic, result_offset ); magic, result_offset );
@ -481,7 +481,7 @@
memory = library->memory; memory = library->memory;
newpath = raccess_make_file_name( memory, base_file_name, "._" ); newpath = raccess_make_file_name( memory, base_file_name, "._" );
if ( !newpath ) if ( !newpath )
return FT_Err_Out_Of_Memory; return FT_THROW( Out_Of_Memory );
error = raccess_guess_linux_double_from_file_name( library, newpath, error = raccess_guess_linux_double_from_file_name( library, newpath,
result_offset ); result_offset );
@ -515,7 +515,7 @@
memory = library->memory; memory = library->memory;
if ( base_file_len + 6 > FT_INT_MAX ) if ( base_file_len + 6 > FT_INT_MAX )
return FT_Err_Array_Too_Large; return FT_THROW( Array_Too_Large );
if ( FT_ALLOC( newpath, base_file_len + 6 ) ) if ( FT_ALLOC( newpath, base_file_len + 6 ) )
return error; return error;
@ -551,7 +551,7 @@
memory = library->memory; memory = library->memory;
if ( base_file_len + 18 > FT_INT_MAX ) if ( base_file_len + 18 > FT_INT_MAX )
return FT_Err_Array_Too_Large; return FT_THROW( Array_Too_Large );
if ( FT_ALLOC( newpath, base_file_len + 18 ) ) if ( FT_ALLOC( newpath, base_file_len + 18 ) )
return error; return error;
@ -584,7 +584,7 @@
newpath = raccess_make_file_name( memory, base_file_name, newpath = raccess_make_file_name( memory, base_file_name,
"resource.frk/" ); "resource.frk/" );
if ( !newpath ) if ( !newpath )
return FT_Err_Out_Of_Memory; return FT_THROW( Out_Of_Memory );
*result_file_name = newpath; *result_file_name = newpath;
*result_offset = 0; *result_offset = 0;
@ -610,7 +610,7 @@
newpath = raccess_make_file_name( memory, base_file_name, ".resource/" ); newpath = raccess_make_file_name( memory, base_file_name, ".resource/" );
if ( !newpath ) if ( !newpath )
return FT_Err_Out_Of_Memory; return FT_THROW( Out_Of_Memory );
*result_file_name = newpath; *result_file_name = newpath;
*result_offset = 0; *result_offset = 0;
@ -637,7 +637,7 @@
newpath = raccess_make_file_name( memory, base_file_name, "%" ); newpath = raccess_make_file_name( memory, base_file_name, "%" );
if ( !newpath ) if ( !newpath )
return FT_Err_Out_Of_Memory; return FT_THROW( Out_Of_Memory );
error = raccess_guess_linux_double_from_file_name( library, newpath, error = raccess_guess_linux_double_from_file_name( library, newpath,
result_offset ); result_offset );
@ -669,7 +669,7 @@
newpath = raccess_make_file_name( memory, base_file_name, newpath = raccess_make_file_name( memory, base_file_name,
".AppleDouble/" ); ".AppleDouble/" );
if ( !newpath ) if ( !newpath )
return FT_Err_Out_Of_Memory; return FT_THROW( Out_Of_Memory );
error = raccess_guess_linux_double_from_file_name( library, newpath, error = raccess_guess_linux_double_from_file_name( library, newpath,
result_offset ); result_offset );
@ -708,7 +708,7 @@
if ( FT_READ_LONG( magic_from_stream ) ) if ( FT_READ_LONG( magic_from_stream ) )
return error; return error;
if ( magic_from_stream != magic ) if ( magic_from_stream != magic )
return FT_Err_Unknown_File_Format; return FT_THROW( Unknown_File_Format );
if ( FT_READ_LONG( version_number ) ) if ( FT_READ_LONG( version_number ) )
return error; return error;
@ -721,7 +721,7 @@
if ( FT_READ_USHORT( n_of_entries ) ) if ( FT_READ_USHORT( n_of_entries ) )
return error; return error;
if ( n_of_entries == 0 ) if ( n_of_entries == 0 )
return FT_Err_Unknown_File_Format; return FT_THROW( Unknown_File_Format );
for ( i = 0; i < n_of_entries; i++ ) for ( i = 0; i < n_of_entries; i++ )
{ {
@ -744,7 +744,7 @@
} }
} }
return FT_Err_Unknown_File_Format; return FT_THROW( Unknown_File_Format );
} }

View File

@ -4,7 +4,7 @@
/* */ /* */
/* I/O stream support (body). */ /* I/O stream support (body). */
/* */ /* */
/* Copyright 2000-2002, 2004-2006, 2008-2011 by */ /* Copyright 2000-2002, 2004-2006, 2008-2011, 2013 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */ /* */
/* This file is part of the FreeType project, and may only be used, */ /* This file is part of the FreeType project, and may only be used, */
@ -68,7 +68,7 @@
" invalid i/o; pos = 0x%lx, size = 0x%lx\n", " invalid i/o; pos = 0x%lx, size = 0x%lx\n",
pos, stream->size )); pos, stream->size ));
error = FT_Err_Invalid_Stream_Operation; error = FT_THROW( Invalid_Stream_Operation );
} }
} }
/* note that seeking to the first position after the file is valid */ /* note that seeking to the first position after the file is valid */
@ -78,7 +78,7 @@
" invalid i/o; pos = 0x%lx, size = 0x%lx\n", " invalid i/o; pos = 0x%lx, size = 0x%lx\n",
pos, stream->size )); pos, stream->size ));
error = FT_Err_Invalid_Stream_Operation; error = FT_THROW( Invalid_Stream_Operation );
} }
if ( !error ) if ( !error )
@ -93,7 +93,7 @@
FT_Long distance ) FT_Long distance )
{ {
if ( distance < 0 ) if ( distance < 0 )
return FT_Err_Invalid_Stream_Operation; return FT_THROW( Invalid_Stream_Operation );
return FT_Stream_Seek( stream, (FT_ULong)( stream->pos + distance ) ); return FT_Stream_Seek( stream, (FT_ULong)( stream->pos + distance ) );
} }
@ -131,7 +131,7 @@
" invalid i/o; pos = 0x%lx, size = 0x%lx\n", " invalid i/o; pos = 0x%lx, size = 0x%lx\n",
pos, stream->size )); pos, stream->size ));
return FT_Err_Invalid_Stream_Operation; return FT_THROW( Invalid_Stream_Operation );
} }
if ( stream->read ) if ( stream->read )
@ -153,7 +153,7 @@
" invalid read; expected %lu bytes, got %lu\n", " invalid read; expected %lu bytes, got %lu\n",
count, read_bytes )); count, read_bytes ));
error = FT_Err_Invalid_Stream_Operation; error = FT_THROW( Invalid_Stream_Operation );
} }
return error; return error;
@ -254,7 +254,7 @@
" frame size (%lu) larger than stream size (%lu)\n", " frame size (%lu) larger than stream size (%lu)\n",
count, stream->size )); count, stream->size ));
error = FT_Err_Invalid_Stream_Operation; error = FT_THROW( Invalid_Stream_Operation );
goto Exit; goto Exit;
} }
@ -277,7 +277,7 @@
count, read_bytes )); count, read_bytes ));
FT_FREE( stream->base ); FT_FREE( stream->base );
error = FT_Err_Invalid_Stream_Operation; error = FT_THROW( Invalid_Stream_Operation );
} }
stream->cursor = stream->base; stream->cursor = stream->base;
stream->limit = stream->cursor + count; stream->limit = stream->cursor + count;
@ -293,7 +293,7 @@
" invalid i/o; pos = 0x%lx, count = %lu, size = 0x%lx\n", " invalid i/o; pos = 0x%lx, count = %lu, size = 0x%lx\n",
stream->pos, count, stream->size )); stream->pos, count, stream->size ));
error = FT_Err_Invalid_Stream_Operation; error = FT_THROW( Invalid_Stream_Operation );
goto Exit; goto Exit;
} }
@ -474,7 +474,7 @@
return result; return result;
Fail: Fail:
*error = FT_Err_Invalid_Stream_Operation; *error = FT_THROW( Invalid_Stream_Operation );
FT_ERROR(( "FT_Stream_ReadChar:" FT_ERROR(( "FT_Stream_ReadChar:"
" invalid i/o; pos = 0x%lx, size = 0x%lx\n", " invalid i/o; pos = 0x%lx, size = 0x%lx\n",
stream->pos, stream->size )); stream->pos, stream->size ));
@ -521,7 +521,7 @@
return result; return result;
Fail: Fail:
*error = FT_Err_Invalid_Stream_Operation; *error = FT_THROW( Invalid_Stream_Operation );
FT_ERROR(( "FT_Stream_ReadUShort:" FT_ERROR(( "FT_Stream_ReadUShort:"
" invalid i/o; pos = 0x%lx, size = 0x%lx\n", " invalid i/o; pos = 0x%lx, size = 0x%lx\n",
stream->pos, stream->size )); stream->pos, stream->size ));
@ -568,7 +568,7 @@
return result; return result;
Fail: Fail:
*error = FT_Err_Invalid_Stream_Operation; *error = FT_THROW( Invalid_Stream_Operation );
FT_ERROR(( "FT_Stream_ReadUShortLE:" FT_ERROR(( "FT_Stream_ReadUShortLE:"
" invalid i/o; pos = 0x%lx, size = 0x%lx\n", " invalid i/o; pos = 0x%lx, size = 0x%lx\n",
stream->pos, stream->size )); stream->pos, stream->size ));
@ -615,7 +615,7 @@
return result; return result;
Fail: Fail:
*error = FT_Err_Invalid_Stream_Operation; *error = FT_THROW( Invalid_Stream_Operation );
FT_ERROR(( "FT_Stream_ReadUOffset:" FT_ERROR(( "FT_Stream_ReadUOffset:"
" invalid i/o; pos = 0x%lx, size = 0x%lx\n", " invalid i/o; pos = 0x%lx, size = 0x%lx\n",
stream->pos, stream->size )); stream->pos, stream->size ));
@ -662,7 +662,7 @@
return result; return result;
Fail: Fail:
*error = FT_Err_Invalid_Stream_Operation; *error = FT_THROW( Invalid_Stream_Operation );
FT_ERROR(( "FT_Stream_ReadULong:" FT_ERROR(( "FT_Stream_ReadULong:"
" invalid i/o; pos = 0x%lx, size = 0x%lx\n", " invalid i/o; pos = 0x%lx, size = 0x%lx\n",
stream->pos, stream->size )); stream->pos, stream->size ));
@ -709,7 +709,7 @@
return result; return result;
Fail: Fail:
*error = FT_Err_Invalid_Stream_Operation; *error = FT_THROW( Invalid_Stream_Operation );
FT_ERROR(( "FT_Stream_ReadULongLE:" FT_ERROR(( "FT_Stream_ReadULongLE:"
" invalid i/o; pos = 0x%lx, size = 0x%lx\n", " invalid i/o; pos = 0x%lx, size = 0x%lx\n",
stream->pos, stream->size )); stream->pos, stream->size ));
@ -728,7 +728,7 @@
FT_Byte* cursor; FT_Byte* cursor;
if ( !fields || !stream ) if ( !fields || !stream )
return FT_Err_Invalid_Argument; return FT_THROW( Invalid_Argument );
cursor = stream->cursor; cursor = stream->cursor;
@ -760,7 +760,7 @@
if ( cursor + len > stream->limit ) if ( cursor + len > stream->limit )
{ {
error = FT_Err_Invalid_Stream_Operation; error = FT_THROW( Invalid_Stream_Operation );
goto Exit; goto Exit;
} }

View File

@ -4,7 +4,7 @@
/* */ /* */
/* FreeType path stroker (body). */ /* FreeType path stroker (body). */
/* */ /* */
/* Copyright 2002-2006, 2008-2011 by */ /* Copyright 2002-2006, 2008-2011, 2013 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */ /* */
/* This file is part of the FreeType project, and may only be used, */ /* This file is part of the FreeType project, and may only be used, */
@ -795,7 +795,7 @@
if ( !library ) if ( !library )
return FT_Err_Invalid_Argument; return FT_THROW( Invalid_Argument );
memory = library->memory; memory = library->memory;
@ -1954,7 +1954,7 @@
if ( !stroker || border > 1 ) if ( !stroker || border > 1 )
{ {
error = FT_Err_Invalid_Argument; error = FT_THROW( Invalid_Argument );
goto Exit; goto Exit;
} }
@ -2060,7 +2060,7 @@
if ( !outline || !stroker ) if ( !outline || !stroker )
return FT_Err_Invalid_Argument; return FT_THROW( Invalid_Argument );
FT_Stroker_Rewind( stroker ); FT_Stroker_Rewind( stroker );
@ -2238,7 +2238,7 @@
return error; return error;
Invalid_Outline: Invalid_Outline:
return FT_Err_Invalid_Outline; return FT_THROW( Invalid_Outline );
} }

View File

@ -4,7 +4,7 @@
/* */ /* */
/* ANSI-specific FreeType low-level system interface (body). */ /* ANSI-specific FreeType low-level system interface (body). */
/* */ /* */
/* Copyright 1996-2002, 2006, 2008-2011 by */ /* Copyright 1996-2002, 2006, 2008-2011, 2013 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */ /* */
/* This file is part of the FreeType project, and may only be used, */ /* This file is part of the FreeType project, and may only be used, */
@ -228,7 +228,7 @@
if ( !stream ) if ( !stream )
return FT_Err_Invalid_Stream_Handle; return FT_THROW( Invalid_Stream_Handle );
stream->descriptor.pointer = NULL; stream->descriptor.pointer = NULL;
stream->pathname.pointer = (char*)filepathname; stream->pathname.pointer = (char*)filepathname;
@ -243,7 +243,7 @@
FT_ERROR(( "FT_Stream_Open:" FT_ERROR(( "FT_Stream_Open:"
" could not open `%s'\n", filepathname )); " could not open `%s'\n", filepathname ));
return FT_Err_Cannot_Open_Resource; return FT_THROW( Cannot_Open_Resource );
} }
ft_fseek( file, 0, SEEK_END ); ft_fseek( file, 0, SEEK_END );
@ -253,7 +253,7 @@
FT_ERROR(( "FT_Stream_Open:" )); FT_ERROR(( "FT_Stream_Open:" ));
FT_ERROR(( " opened `%s' but zero-sized\n", filepathname )); FT_ERROR(( " opened `%s' but zero-sized\n", filepathname ));
ft_fclose( file ); ft_fclose( file );
return FT_Err_Cannot_Open_Stream; return FT_THROW( Cannot_Open_Stream );
} }
ft_fseek( file, 0, SEEK_SET ); ft_fseek( file, 0, SEEK_SET );

View File

@ -4,7 +4,7 @@
/* */ /* */
/* FreeType utility file for memory and list management (body). */ /* FreeType utility file for memory and list management (body). */
/* */ /* */
/* Copyright 2002, 2004, 2005, 2006, 2007 by */ /* Copyright 2002, 2004-2007, 2013 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */ /* */
/* This file is part of the FreeType project, and may only be used, */ /* This file is part of the FreeType project, and may only be used, */
@ -75,12 +75,12 @@
{ {
block = memory->alloc( memory, size ); block = memory->alloc( memory, size );
if ( block == NULL ) if ( block == NULL )
error = FT_Err_Out_Of_Memory; error = FT_THROW( Out_Of_Memory );
} }
else if ( size < 0 ) else if ( size < 0 )
{ {
/* may help catch/prevent security issues */ /* may help catch/prevent security issues */
error = FT_Err_Invalid_Argument; error = FT_THROW( Invalid_Argument );
} }
*p_error = error; *p_error = error;
@ -98,6 +98,7 @@
{ {
FT_Error error = FT_Err_Ok; FT_Error error = FT_Err_Ok;
block = ft_mem_qrealloc( memory, item_size, block = ft_mem_qrealloc( memory, item_size,
cur_count, new_count, block, &error ); cur_count, new_count, block, &error );
if ( !error && new_count > cur_count ) if ( !error && new_count > cur_count )
@ -127,7 +128,7 @@
if ( cur_count < 0 || new_count < 0 || item_size < 0 ) if ( cur_count < 0 || new_count < 0 || item_size < 0 )
{ {
/* may help catch/prevent nasty security issues */ /* may help catch/prevent nasty security issues */
error = FT_Err_Invalid_Argument; error = FT_THROW( Invalid_Argument );
} }
else if ( new_count == 0 || item_size == 0 ) else if ( new_count == 0 || item_size == 0 )
{ {
@ -136,7 +137,7 @@
} }
else if ( new_count > FT_INT_MAX/item_size ) else if ( new_count > FT_INT_MAX/item_size )
{ {
error = FT_Err_Array_Too_Large; error = FT_THROW( Array_Too_Large );
} }
else if ( cur_count == 0 ) else if ( cur_count == 0 )
{ {
@ -153,7 +154,7 @@
block2 = memory->realloc( memory, cur_size, new_size, block ); block2 = memory->realloc( memory, cur_size, new_size, block );
if ( block2 == NULL ) if ( block2 == NULL )
error = FT_Err_Out_Of_Memory; error = FT_THROW( Out_Of_Memory );
else else
block = block2; block = block2;
} }

View File

@ -2,7 +2,7 @@
FreeType font driver for bdf files FreeType font driver for bdf files
Copyright (C) 2001-2008, 2011 by Copyright (C) 2001-2008, 2011, 2013 by
Francesco Zappa Nardelli Francesco Zappa Nardelli
Permission is hereby granted, free of charge, to any person obtaining a copy Permission is hereby granted, free of charge, to any person obtaining a copy
@ -591,7 +591,7 @@ THE SOFTWARE.
Fail: Fail:
BDF_Face_Done( bdfface ); BDF_Face_Done( bdfface );
return BDF_Err_Unknown_File_Format; return FT_THROW( Unknown_File_Format );
} }
@ -640,7 +640,7 @@ THE SOFTWARE.
break; break;
default: default:
error = BDF_Err_Unimplemented_Feature; error = FT_THROW( Unimplemented_Feature );
break; break;
} }
@ -670,7 +670,7 @@ THE SOFTWARE.
if ( !face || glyph_index >= (FT_UInt)face->num_glyphs ) if ( !face || glyph_index >= (FT_UInt)face->num_glyphs )
{ {
error = BDF_Err_Invalid_Argument; error = FT_THROW( Invalid_Argument );
goto Exit; goto Exit;
} }
@ -786,7 +786,7 @@ THE SOFTWARE.
} }
Fail: Fail:
return BDF_Err_Invalid_Argument; return FT_THROW( Invalid_Argument );
} }

View File

@ -1,6 +1,6 @@
/* /*
* Copyright 2000 Computing Research Labs, New Mexico State University * Copyright 2000 Computing Research Labs, New Mexico State University
* Copyright 2001-2012 * Copyright 2001-2013
* Francesco Zappa Nardelli * Francesco Zappa Nardelli
* *
* Permission is hereby granted, free of charge, to any person obtaining a * Permission is hereby granted, free of charge, to any person obtaining a
@ -282,7 +282,7 @@
hash_init( hashtable* ht, hash_init( hashtable* ht,
FT_Memory memory ) FT_Memory memory )
{ {
int sz = INITIAL_HT_SIZE; int sz = INITIAL_HT_SIZE;
FT_Error error = BDF_Err_Ok; FT_Error error = BDF_Err_Ok;
@ -322,8 +322,9 @@
hashtable* ht, hashtable* ht,
FT_Memory memory ) FT_Memory memory )
{ {
hashnode nn, *bp = hash_bucket( key, ht ); hashnode nn;
FT_Error error = BDF_Err_Ok; hashnode* bp = hash_bucket( key, ht );
FT_Error error = BDF_Err_Ok;
nn = *bp; nn = *bp;
@ -469,7 +470,7 @@
if ( oldsize == bigsize ) if ( oldsize == bigsize )
{ {
error = BDF_Err_Out_Of_Memory; error = FT_THROW( Out_Of_Memory );
goto Exit; goto Exit;
} }
else if ( newsize < oldsize || newsize > bigsize ) else if ( newsize < oldsize || newsize > bigsize )
@ -581,7 +582,7 @@
/* this, so an error is signaled. */ /* this, so an error is signaled. */
if ( separators == 0 || *separators == 0 ) if ( separators == 0 || *separators == 0 )
{ {
error = BDF_Err_Invalid_Argument; error = FT_THROW( Invalid_Argument );
goto Exit; goto Exit;
} }
@ -667,14 +668,14 @@
unsigned long lineno, buf_size; unsigned long lineno, buf_size;
int refill, hold, to_skip; int refill, hold, to_skip;
ptrdiff_t bytes, start, end, cursor, avail; ptrdiff_t bytes, start, end, cursor, avail;
char* buf = 0; char* buf = 0;
FT_Memory memory = stream->memory; FT_Memory memory = stream->memory;
FT_Error error = BDF_Err_Ok; FT_Error error = BDF_Err_Ok;
if ( callback == 0 ) if ( callback == 0 )
{ {
error = BDF_Err_Invalid_Argument; error = FT_THROW( Invalid_Argument );
goto Exit; goto Exit;
} }
@ -738,7 +739,7 @@
if ( buf_size >= 65536UL ) /* limit ourselves to 64KByte */ if ( buf_size >= 65536UL ) /* limit ourselves to 64KByte */
{ {
FT_ERROR(( "_bdf_readstream: " ERRMSG6, lineno )); FT_ERROR(( "_bdf_readstream: " ERRMSG6, lineno ));
error = BDF_Err_Invalid_Argument; error = FT_THROW( Invalid_Argument );
goto Exit; goto Exit;
} }
@ -1028,7 +1029,7 @@
size_t n; size_t n;
bdf_property_t* p; bdf_property_t* p;
FT_Memory memory = font->memory; FT_Memory memory = font->memory;
FT_Error error = BDF_Err_Ok; FT_Error error = BDF_Err_Ok;
/* First check whether the property has */ /* First check whether the property has */
@ -1047,7 +1048,7 @@
n = ft_strlen( name ) + 1; n = ft_strlen( name ) + 1;
if ( n > FT_ULONG_MAX ) if ( n > FT_ULONG_MAX )
return BDF_Err_Invalid_Argument; return FT_THROW( Invalid_Argument );
if ( FT_NEW_ARRAY( p->name, n ) ) if ( FT_NEW_ARRAY( p->name, n ) )
goto Exit; goto Exit;
@ -1134,7 +1135,7 @@
{ {
char* cp; char* cp;
FT_Memory memory = font->memory; FT_Memory memory = font->memory;
FT_Error error = BDF_Err_Ok; FT_Error error = BDF_Err_Ok;
if ( FT_RENEW_ARRAY( font->comments, if ( FT_RENEW_ARRAY( font->comments,
@ -1170,7 +1171,7 @@
if ( font == 0 || font->name == 0 || font->name[0] == 0 ) if ( font == 0 || font->name == 0 || font->name[0] == 0 )
{ {
error = BDF_Err_Invalid_Argument; error = FT_THROW( Invalid_Argument );
goto Exit; goto Exit;
} }
@ -1185,7 +1186,7 @@
if ( len >= 256 ) if ( len >= 256 )
{ {
FT_ERROR(( "_bdf_set_default_spacing: " ERRMSG7, lineno )); FT_ERROR(( "_bdf_set_default_spacing: " ERRMSG7, lineno ));
error = BDF_Err_Invalid_Argument; error = FT_THROW( Invalid_Argument );
goto Exit; goto Exit;
} }
@ -1298,7 +1299,7 @@
hashnode hn; hashnode hn;
bdf_property_t *prop, *fp; bdf_property_t *prop, *fp;
FT_Memory memory = font->memory; FT_Memory memory = font->memory;
FT_Error error = BDF_Err_Ok; FT_Error error = BDF_Err_Ok;
/* First, check whether the property already exists in the font. */ /* First, check whether the property already exists in the font. */
@ -1431,7 +1432,7 @@
if ( !fp->value.atom ) if ( !fp->value.atom )
{ {
FT_ERROR(( "_bdf_add_property: " ERRMSG8, lineno, "SPACING" )); FT_ERROR(( "_bdf_add_property: " ERRMSG8, lineno, "SPACING" ));
error = BDF_Err_Invalid_File_Format; error = FT_THROW( Invalid_File_Format );
goto Exit; goto Exit;
} }
@ -1504,7 +1505,7 @@
if ( ft_memcmp( line, "CHARS", 5 ) != 0 ) if ( ft_memcmp( line, "CHARS", 5 ) != 0 )
{ {
FT_ERROR(( "_bdf_parse_glyphs: " ERRMSG1, lineno, "CHARS" )); FT_ERROR(( "_bdf_parse_glyphs: " ERRMSG1, lineno, "CHARS" ));
error = BDF_Err_Missing_Chars_Field; error = FT_THROW( Missing_Chars_Field );
goto Exit; goto Exit;
} }
@ -1522,7 +1523,7 @@
if ( p->cnt >= 0x110000UL ) if ( p->cnt >= 0x110000UL )
{ {
FT_ERROR(( "_bdf_parse_glyphs: " ERRMSG5, lineno, "CHARS" )); FT_ERROR(( "_bdf_parse_glyphs: " ERRMSG5, lineno, "CHARS" ));
error = BDF_Err_Invalid_Argument; error = FT_THROW( Invalid_Argument );
goto Exit; goto Exit;
} }
@ -1582,7 +1583,7 @@
if ( !s ) if ( !s )
{ {
FT_ERROR(( "_bdf_parse_glyphs: " ERRMSG8, lineno, "STARTCHAR" )); FT_ERROR(( "_bdf_parse_glyphs: " ERRMSG8, lineno, "STARTCHAR" ));
error = BDF_Err_Invalid_File_Format; error = FT_THROW( Invalid_File_Format );
goto Exit; goto Exit;
} }
@ -1605,7 +1606,7 @@
{ {
/* Missing STARTCHAR field. */ /* Missing STARTCHAR field. */
FT_ERROR(( "_bdf_parse_glyphs: " ERRMSG1, lineno, "STARTCHAR" )); FT_ERROR(( "_bdf_parse_glyphs: " ERRMSG1, lineno, "STARTCHAR" ));
error = BDF_Err_Missing_Startchar_Field; error = FT_THROW( Missing_Startchar_Field );
goto Exit; goto Exit;
} }
@ -1636,7 +1637,7 @@
sizeof ( unsigned long ) * 32 ) sizeof ( unsigned long ) * 32 )
{ {
FT_ERROR(( "_bdf_parse_glyphs: " ERRMSG5, lineno, "ENCODING" )); FT_ERROR(( "_bdf_parse_glyphs: " ERRMSG5, lineno, "ENCODING" ));
error = BDF_Err_Invalid_File_Format; error = FT_THROW( Invalid_File_Format );
goto Exit; goto Exit;
} }
@ -1906,7 +1907,7 @@
{ {
/* Missing BBX field. */ /* Missing BBX field. */
FT_ERROR(( "_bdf_parse_glyphs: " ERRMSG1, lineno, "BBX" )); FT_ERROR(( "_bdf_parse_glyphs: " ERRMSG1, lineno, "BBX" ));
error = BDF_Err_Missing_Bbx_Field; error = FT_THROW( Missing_Bbx_Field );
goto Exit; goto Exit;
} }
@ -1917,7 +1918,7 @@
if ( glyph->bpr > 0xFFFFU || bitmap_size > 0xFFFFU ) if ( glyph->bpr > 0xFFFFU || bitmap_size > 0xFFFFU )
{ {
FT_ERROR(( "_bdf_parse_glyphs: " ERRMSG4, lineno )); FT_ERROR(( "_bdf_parse_glyphs: " ERRMSG4, lineno ));
error = BDF_Err_Bbx_Too_Big; error = FT_THROW( Bbx_Too_Big );
goto Exit; goto Exit;
} }
else else
@ -1933,13 +1934,13 @@
} }
FT_ERROR(( "_bdf_parse_glyphs: " ERRMSG9, lineno )); FT_ERROR(( "_bdf_parse_glyphs: " ERRMSG9, lineno ));
error = BDF_Err_Invalid_File_Format; error = FT_THROW( Invalid_File_Format );
goto Exit; goto Exit;
Missing_Encoding: Missing_Encoding:
/* Missing ENCODING field. */ /* Missing ENCODING field. */
FT_ERROR(( "_bdf_parse_glyphs: " ERRMSG1, lineno, "ENCODING" )); FT_ERROR(( "_bdf_parse_glyphs: " ERRMSG1, lineno, "ENCODING" ));
error = BDF_Err_Missing_Encoding_Field; error = FT_THROW( Missing_Encoding_Field );
Exit: Exit:
if ( error && ( p->flags & _BDF_GLYPH ) ) if ( error && ( p->flags & _BDF_GLYPH ) )
@ -2112,7 +2113,7 @@
{ {
/* we don't emit an error message since this code gets */ /* we don't emit an error message since this code gets */
/* explicitly caught one level higher */ /* explicitly caught one level higher */
error = BDF_Err_Missing_Startfont_Field; error = FT_THROW( Missing_Startfont_Field );
goto Exit; goto Exit;
} }
@ -2162,7 +2163,7 @@
{ {
/* Missing the FONTBOUNDINGBOX field. */ /* Missing the FONTBOUNDINGBOX field. */
FT_ERROR(( "_bdf_parse_start: " ERRMSG1, lineno, "FONTBOUNDINGBOX" )); FT_ERROR(( "_bdf_parse_start: " ERRMSG1, lineno, "FONTBOUNDINGBOX" ));
error = BDF_Err_Missing_Fontboundingbox_Field; error = FT_THROW( Missing_Fontboundingbox_Field );
goto Exit; goto Exit;
} }
@ -2191,7 +2192,7 @@
{ {
/* Missing the SIZE field. */ /* Missing the SIZE field. */
FT_ERROR(( "_bdf_parse_start: " ERRMSG1, lineno, "SIZE" )); FT_ERROR(( "_bdf_parse_start: " ERRMSG1, lineno, "SIZE" ));
error = BDF_Err_Missing_Size_Field; error = FT_THROW( Missing_Size_Field );
goto Exit; goto Exit;
} }
@ -2228,7 +2229,7 @@
if ( !s ) if ( !s )
{ {
FT_ERROR(( "_bdf_parse_start: " ERRMSG8, lineno, "FONT" )); FT_ERROR(( "_bdf_parse_start: " ERRMSG8, lineno, "FONT" ));
error = BDF_Err_Invalid_File_Format; error = FT_THROW( Invalid_File_Format );
goto Exit; goto Exit;
} }
@ -2257,7 +2258,7 @@
{ {
/* Missing the FONT field. */ /* Missing the FONT field. */
FT_ERROR(( "_bdf_parse_start: " ERRMSG1, lineno, "FONT" )); FT_ERROR(( "_bdf_parse_start: " ERRMSG1, lineno, "FONT" ));
error = BDF_Err_Missing_Font_Field; error = FT_THROW( Missing_Font_Field );
goto Exit; goto Exit;
} }
@ -2314,7 +2315,7 @@
{ {
/* Missing the FONTBOUNDINGBOX field. */ /* Missing the FONTBOUNDINGBOX field. */
FT_ERROR(( "_bdf_parse_start: " ERRMSG1, lineno, "FONTBOUNDINGBOX" )); FT_ERROR(( "_bdf_parse_start: " ERRMSG1, lineno, "FONTBOUNDINGBOX" ));
error = BDF_Err_Missing_Fontboundingbox_Field; error = FT_THROW( Missing_Fontboundingbox_Field );
goto Exit; goto Exit;
} }
@ -2346,7 +2347,7 @@
} }
FT_ERROR(( "_bdf_parse_start: " ERRMSG9, lineno )); FT_ERROR(( "_bdf_parse_start: " ERRMSG9, lineno ));
error = BDF_Err_Invalid_File_Format; error = FT_THROW( Invalid_File_Format );
Exit: Exit:
return error; return error;
@ -2463,14 +2464,14 @@
{ {
/* Error happened while parsing header. */ /* Error happened while parsing header. */
FT_ERROR(( "bdf_load_font: " ERRMSG2, lineno )); FT_ERROR(( "bdf_load_font: " ERRMSG2, lineno ));
error = BDF_Err_Corrupted_Font_Header; error = FT_THROW( Corrupted_Font_Header );
goto Exit; goto Exit;
} }
else else
{ {
/* Error happened when parsing glyphs. */ /* Error happened when parsing glyphs. */
FT_ERROR(( "bdf_load_font: " ERRMSG3, lineno )); FT_ERROR(( "bdf_load_font: " ERRMSG3, lineno ));
error = BDF_Err_Corrupted_Font_Glyphs; error = FT_THROW( Corrupted_Font_Glyphs );
goto Exit; goto Exit;
} }
} }
@ -2491,7 +2492,7 @@
} }
} }
else if ( error == BDF_Err_Ok ) else if ( error == BDF_Err_Ok )
error = BDF_Err_Invalid_File_Format; error = FT_THROW( Invalid_File_Format );
*font = p->font; *font = p->font;

View File

@ -8,7 +8,7 @@
/* parse compressed PCF fonts, as found with many X11 server */ /* parse compressed PCF fonts, as found with many X11 server */
/* distributions. */ /* distributions. */
/* */ /* */
/* Copyright 2010, 2012 by */ /* Copyright 2010, 2012, 2013 by */
/* Joel Klinghed. */ /* Joel Klinghed. */
/* */ /* */
/* Based on src/gzip/ftgzip.c, Copyright 2002 - 2010 by */ /* Based on src/gzip/ftgzip.c, Copyright 2002 - 2010 by */
@ -134,7 +134,7 @@
head[1] != 0x5a || head[1] != 0x5a ||
head[2] != 0x68 ) /* only support bzip2 (huffman) */ head[2] != 0x68 ) /* only support bzip2 (huffman) */
{ {
error = Bzip2_Err_Invalid_File_Format; error = FT_THROW( Invalid_File_Format );
goto Exit; goto Exit;
} }
@ -182,7 +182,7 @@
if ( BZ2_bzDecompressInit( bzstream, 0, 0 ) != BZ_OK || if ( BZ2_bzDecompressInit( bzstream, 0, 0 ) != BZ_OK ||
bzstream->next_in == NULL ) bzstream->next_in == NULL )
error = Bzip2_Err_Invalid_File_Format; error = FT_THROW( Invalid_File_Format );
Exit: Exit:
return error; return error;
@ -255,7 +255,7 @@
size = stream->read( stream, stream->pos, zip->input, size = stream->read( stream, stream->pos, zip->input,
FT_BZIP2_BUFFER_SIZE ); FT_BZIP2_BUFFER_SIZE );
if ( size == 0 ) if ( size == 0 )
return Bzip2_Err_Invalid_Stream_Operation; return FT_THROW( Invalid_Stream_Operation );
} }
else else
{ {
@ -264,7 +264,7 @@
size = FT_BZIP2_BUFFER_SIZE; size = FT_BZIP2_BUFFER_SIZE;
if ( size == 0 ) if ( size == 0 )
return Bzip2_Err_Invalid_Stream_Operation; return FT_THROW( Invalid_Stream_Operation );
FT_MEM_COPY( zip->input, stream->base + stream->pos, size ); FT_MEM_COPY( zip->input, stream->base + stream->pos, size );
} }
@ -306,12 +306,12 @@
{ {
zip->limit = (FT_Byte*)bzstream->next_out; zip->limit = (FT_Byte*)bzstream->next_out;
if ( zip->limit == zip->cursor ) if ( zip->limit == zip->cursor )
error = Bzip2_Err_Invalid_Stream_Operation; error = FT_THROW( Invalid_Stream_Operation );
break; break;
} }
else if ( err != BZ_OK ) else if ( err != BZ_OK )
{ {
error = Bzip2_Err_Invalid_Stream_Operation; error = FT_THROW( Invalid_Stream_Operation );
break; break;
} }
} }
@ -502,7 +502,7 @@
FT_UNUSED( stream ); FT_UNUSED( stream );
FT_UNUSED( source ); FT_UNUSED( source );
return Bzip2_Err_Unimplemented_Feature; return FT_THROW( Unimplemented_Feature );
} }
#endif /* !FT_CONFIG_OPTION_USE_BZIP2 */ #endif /* !FT_CONFIG_OPTION_USE_BZIP2 */

16
src/cache/ftcbasic.c vendored
View File

@ -4,7 +4,7 @@
/* */ /* */
/* The FreeType basic cache interface (body). */ /* The FreeType basic cache interface (body). */
/* */ /* */
/* Copyright 2003, 2004, 2005, 2006, 2007, 2009, 2010, 2011 by */ /* Copyright 2003-2007, 2009-2011, 2013 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */ /* */
/* This file is part of the FreeType project, and may only be used, */ /* This file is part of the FreeType project, and may only be used, */
@ -226,7 +226,7 @@
} }
} }
else else
error = FTC_Err_Invalid_Argument; error = FT_THROW( Invalid_Argument );
} }
} }
@ -328,7 +328,7 @@
/* some argument checks are delayed to FTC_Cache_Lookup */ /* some argument checks are delayed to FTC_Cache_Lookup */
if ( !aglyph ) if ( !aglyph )
{ {
error = FTC_Err_Invalid_Argument; error = FT_THROW( Invalid_Argument );
goto Exit; goto Exit;
} }
@ -424,7 +424,7 @@
/* some argument checks are delayed to FTC_Cache_Lookup */ /* some argument checks are delayed to FTC_Cache_Lookup */
if ( !aglyph || !scaler ) if ( !aglyph || !scaler )
{ {
error = FTC_Err_Invalid_Argument; error = FT_THROW( Invalid_Argument );
goto Exit; goto Exit;
} }
@ -583,7 +583,7 @@
if ( !desc ) if ( !desc )
return FTC_Err_Invalid_Argument; return FT_THROW( Invalid_Argument );
ftc_image_type_from_old_desc( &type0, desc ); ftc_image_type_from_old_desc( &type0, desc );
@ -668,7 +668,7 @@
/* other argument checks delayed to FTC_Cache_Lookup */ /* other argument checks delayed to FTC_Cache_Lookup */
if ( !ansbit ) if ( !ansbit )
return FTC_Err_Invalid_Argument; return FT_THROW( Invalid_Argument );
*ansbit = NULL; *ansbit = NULL;
@ -765,7 +765,7 @@
/* other argument checks delayed to FTC_Cache_Lookup */ /* other argument checks delayed to FTC_Cache_Lookup */
if ( !ansbit || !scaler ) if ( !ansbit || !scaler )
return FTC_Err_Invalid_Argument; return FT_THROW( Invalid_Argument );
*ansbit = NULL; *ansbit = NULL;
@ -838,7 +838,7 @@
if ( !desc ) if ( !desc )
return FTC_Err_Invalid_Argument; return FT_THROW( Invalid_Argument );
ftc_image_type_from_old_desc( &type0, desc ); ftc_image_type_from_old_desc( &type0, desc );

View File

@ -4,8 +4,7 @@
/* */ /* */
/* The FreeType internal cache interface (body). */ /* The FreeType internal cache interface (body). */
/* */ /* */
/* Copyright 2000-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2009, 2010, */ /* Copyright 2000-2007, 2009-2011, 2013 by */
/* 2011 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */ /* */
/* This file is part of the FreeType project, and may only be used, */ /* This file is part of the FreeType project, and may only be used, */
@ -500,7 +499,7 @@
if ( cache == NULL || anode == NULL ) if ( cache == NULL || anode == NULL )
return FTC_Err_Invalid_Argument; return FT_THROW( Invalid_Argument );
/* Go to the `top' node of the list sharing same masked hash */ /* Go to the `top' node of the list sharing same masked hash */
bucket = pnode = FTC_NODE__TOP_FOR_HASH( cache, hash ); bucket = pnode = FTC_NODE__TOP_FOR_HASH( cache, hash );

14
src/cache/ftcmanag.c vendored
View File

@ -4,7 +4,7 @@
/* */ /* */
/* FreeType Cache Manager (body). */ /* FreeType Cache Manager (body). */
/* */ /* */
/* Copyright 2000-2001, 2002, 2003, 2004, 2005, 2006, 2008, 2009, 2010 by */ /* Copyright 2000-2006, 2008-2010, 2013 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */ /* */
/* This file is part of the FreeType project, and may only be used, */ /* This file is part of the FreeType project, and may only be used, */
@ -187,12 +187,12 @@
if ( asize == NULL ) if ( asize == NULL )
return FTC_Err_Invalid_Argument; return FT_THROW( Invalid_Argument );
*asize = NULL; *asize = NULL;
if ( !manager ) if ( !manager )
return FTC_Err_Invalid_Cache_Handle; return FT_THROW( Invalid_Cache_Handle );
#ifdef FTC_INLINE #ifdef FTC_INLINE
@ -314,12 +314,12 @@
if ( aface == NULL ) if ( aface == NULL )
return FTC_Err_Invalid_Argument; return FT_THROW( Invalid_Argument );
*aface = NULL; *aface = NULL;
if ( !manager ) if ( !manager )
return FTC_Err_Invalid_Cache_Handle; return FT_THROW( Invalid_Cache_Handle );
/* we break encapsulation for the sake of speed */ /* we break encapsulation for the sake of speed */
#ifdef FTC_INLINE #ifdef FTC_INLINE
@ -364,7 +364,7 @@
if ( !library ) if ( !library )
return FTC_Err_Invalid_Library_Handle; return FT_THROW( Invalid_Library_Handle );
memory = library->memory; memory = library->memory;
@ -586,7 +586,7 @@
if ( manager->num_caches >= FTC_MAX_CACHES ) if ( manager->num_caches >= FTC_MAX_CACHES )
{ {
error = FTC_Err_Too_Many_Caches; error = FT_THROW( Too_Many_Caches );
FT_ERROR(( "FTC_Manager_RegisterCache:" FT_ERROR(( "FTC_Manager_RegisterCache:"
" too many registered caches\n" )); " too many registered caches\n" ));
goto Exit; goto Exit;

View File

@ -4,7 +4,7 @@
/* */ /* */
/* FreeType sbits manager (body). */ /* FreeType sbits manager (body). */
/* */ /* */
/* Copyright 2000-2001, 2002, 2003, 2004, 2005, 2006, 2009, 2010, 2011 by */ /* Copyright 2000-2006, 2009-2011, 2013 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */ /* */
/* This file is part of the FreeType project, and may only be used, */ /* This file is part of the FreeType project, and may only be used, */
@ -116,7 +116,7 @@
if ( (FT_UInt)(gindex - gnode->gindex) >= snode->count ) if ( (FT_UInt)(gindex - gnode->gindex) >= snode->count )
{ {
FT_ERROR(( "ftc_snode_load: invalid glyph index" )); FT_ERROR(( "ftc_snode_load: invalid glyph index" ));
return FTC_Err_Invalid_Argument; return FT_THROW( Invalid_Argument );
} }
sbit = snode->sbits + ( gindex - gnode->gindex ); sbit = snode->sbits + ( gindex - gnode->gindex );
@ -223,7 +223,7 @@
total = clazz->family_get_count( family, cache->manager ); total = clazz->family_get_count( family, cache->manager );
if ( total == 0 || gindex >= total ) if ( total == 0 || gindex >= total )
{ {
error = FTC_Err_Invalid_Argument; error = FT_THROW( Invalid_Argument );
goto Exit; goto Exit;
} }

View File

@ -4,7 +4,7 @@
/* */ /* */
/* CFF character mapping table (cmap) support (body). */ /* CFF character mapping table (cmap) support (body). */
/* */ /* */
/* Copyright 2002, 2003, 2004, 2005, 2006, 2007, 2010 by */ /* Copyright 2002-2007, 2010, 2013 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */ /* */
/* This file is part of the FreeType project, and may only be used, */ /* This file is part of the FreeType project, and may only be used, */
@ -16,6 +16,8 @@
/***************************************************************************/ /***************************************************************************/
#include <ft2build.h>
#include FT_INTERNAL_DEBUG_H
#include "cffcmap.h" #include "cffcmap.h"
#include "cffload.h" #include "cffload.h"
@ -145,7 +147,7 @@
/* can't build Unicode map for CID-keyed font */ /* can't build Unicode map for CID-keyed font */
/* because we don't know glyph names. */ /* because we don't know glyph names. */
if ( !charset->sids ) if ( !charset->sids )
return CFF_Err_No_Unicode_Glyph_Name; return FT_THROW( No_Unicode_Glyph_Name );
return psnames->unicodes_init( memory, return psnames->unicodes_init( memory,
unicodes, unicodes,

View File

@ -4,7 +4,7 @@
/* */ /* */
/* OpenType font driver implementation (body). */ /* OpenType font driver implementation (body). */
/* */ /* */
/* Copyright 1996-2012 by */ /* Copyright 1996-2013 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */ /* */
/* This file is part of the FreeType project, and may only be used, */ /* This file is part of the FreeType project, and may only be used, */
@ -160,7 +160,7 @@
if ( !slot ) if ( !slot )
return CFF_Err_Invalid_Slot_Handle; return FT_THROW( Invalid_Slot_Handle );
/* check whether we want a scaled outline or bitmap */ /* check whether we want a scaled outline or bitmap */
if ( !size ) if ( !size )
@ -174,7 +174,7 @@
{ {
/* these two objects must have the same parent */ /* these two objects must have the same parent */
if ( cffsize->face != cffslot->face ) if ( cffsize->face != cffslot->face )
return CFF_Err_Invalid_Face_Handle; return FT_THROW( Invalid_Face_Handle );
} }
/* now load the glyph outline if necessary */ /* now load the glyph outline if necessary */
@ -239,7 +239,7 @@
" cannot get glyph name from CFF & CEF fonts\n" " cannot get glyph name from CFF & CEF fonts\n"
" " " "
" without the `PSNames' module\n" )); " without the `PSNames' module\n" ));
error = CFF_Err_Missing_Module; error = FT_THROW( Missing_Module );
goto Exit; goto Exit;
} }
@ -405,8 +405,9 @@
{ {
FT_CMap cmap = FT_CMAP( charmap ); FT_CMap cmap = FT_CMAP( charmap );
FT_Error error = CFF_Err_Ok; FT_Error error = CFF_Err_Ok;
FT_Face face = FT_CMAP_FACE( cmap );
FT_Library library = FT_FACE_LIBRARY( face ); FT_Face face = FT_CMAP_FACE( cmap );
FT_Library library = FT_FACE_LIBRARY( face );
cmap_info->language = 0; cmap_info->language = 0;
@ -455,7 +456,7 @@
if ( dict->cid_registry == 0xFFFFU ) if ( dict->cid_registry == 0xFFFFU )
{ {
error = CFF_Err_Invalid_Argument; error = FT_THROW( Invalid_Argument );
goto Fail; goto Fail;
} }
@ -537,13 +538,13 @@
if ( dict->cid_registry == 0xFFFFU ) if ( dict->cid_registry == 0xFFFFU )
{ {
error = CFF_Err_Invalid_Argument; error = FT_THROW( Invalid_Argument );
goto Fail; goto Fail;
} }
if ( glyph_index > cff->num_glyphs ) if ( glyph_index > cff->num_glyphs )
{ {
error = CFF_Err_Invalid_Argument; error = FT_THROW( Invalid_Argument );
goto Fail; goto Fail;
} }

View File

@ -424,7 +424,7 @@
if ( fd_index >= cff->num_subfonts ) if ( fd_index >= cff->num_subfonts )
{ {
FT_TRACE4(( "cff_decoder_prepare: invalid CID subfont index\n" )); FT_TRACE4(( "cff_decoder_prepare: invalid CID subfont index\n" ));
error = CFF_Err_Invalid_File_Format; error = FT_THROW( Invalid_File_Format );
goto Exit; goto Exit;
} }
@ -728,7 +728,7 @@
if ( decoder->seac ) if ( decoder->seac )
{ {
FT_ERROR(( "cff_operator_seac: invalid nested seac\n" )); FT_ERROR(( "cff_operator_seac: invalid nested seac\n" ));
return CFF_Err_Syntax_Error; return FT_THROW( Syntax_Error );
} }
adx += decoder->builder.left_bearing.x; adx += decoder->builder.left_bearing.x;
@ -756,7 +756,7 @@
{ {
FT_ERROR(( "cff_operator_seac:" FT_ERROR(( "cff_operator_seac:"
" invalid seac character code arguments\n" )); " invalid seac character code arguments\n" ));
return CFF_Err_Syntax_Error; return FT_THROW( Syntax_Error );
} }
/* If we are trying to load a composite glyph, do not load the */ /* If we are trying to load a composite glyph, do not load the */
@ -2470,7 +2470,7 @@
FT_ERROR(( " %d", ip[0] )); FT_ERROR(( " %d", ip[0] ));
FT_ERROR(( "\n" )); FT_ERROR(( "\n" ));
return CFF_Err_Unimplemented_Feature; return FT_THROW( Unimplemented_Feature );
} }
decoder->top = args; decoder->top = args;
@ -2489,15 +2489,15 @@
Syntax_Error: Syntax_Error:
FT_TRACE4(( "cff_decoder_parse_charstrings: syntax error\n" )); FT_TRACE4(( "cff_decoder_parse_charstrings: syntax error\n" ));
return CFF_Err_Invalid_File_Format; return FT_THROW( Invalid_File_Format );
Stack_Underflow: Stack_Underflow:
FT_TRACE4(( "cff_decoder_parse_charstrings: stack underflow\n" )); FT_TRACE4(( "cff_decoder_parse_charstrings: stack underflow\n" ));
return CFF_Err_Too_Few_Arguments; return FT_THROW( Too_Few_Arguments );
Stack_Overflow: Stack_Overflow:
FT_TRACE4(( "cff_decoder_parse_charstrings: stack overflow\n" )); FT_TRACE4(( "cff_decoder_parse_charstrings: stack overflow\n" ));
return CFF_Err_Stack_Overflow; return FT_THROW( Stack_Overflow );
} }
@ -2606,11 +2606,11 @@
glyph_index = cff_charset_cid_to_gindex( &cff->charset, glyph_index = cff_charset_cid_to_gindex( &cff->charset,
glyph_index ); glyph_index );
if ( glyph_index == 0 ) if ( glyph_index == 0 )
return CFF_Err_Invalid_Argument; return FT_THROW( Invalid_Argument );
} }
} }
else if ( glyph_index >= cff->num_glyphs ) else if ( glyph_index >= cff->num_glyphs )
return CFF_Err_Invalid_Argument; return FT_THROW( Invalid_Argument );
if ( load_flags & FT_LOAD_NO_RECURSE ) if ( load_flags & FT_LOAD_NO_RECURSE )
load_flags |= FT_LOAD_NO_SCALE | FT_LOAD_NO_HINTING; load_flags |= FT_LOAD_NO_SCALE | FT_LOAD_NO_HINTING;
@ -2733,7 +2733,7 @@
/* return immediately if we only want the embedded bitmaps */ /* return immediately if we only want the embedded bitmaps */
if ( load_flags & FT_LOAD_SBITS_ONLY ) if ( load_flags & FT_LOAD_SBITS_ONLY )
return CFF_Err_Invalid_Argument; return FT_THROW( Invalid_Argument );
/* if we have a CID subfont, use its matrix (which has already */ /* if we have a CID subfont, use its matrix (which has already */
/* been multiplied with the root matrix) */ /* been multiplied with the root matrix) */

View File

@ -4,7 +4,7 @@
/* */ /* */
/* OpenType and CFF data/program tables loader (body). */ /* OpenType and CFF data/program tables loader (body). */
/* */ /* */
/* Copyright 1996-2012 by */ /* Copyright 1996-2013 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */ /* */
/* This file is part of the FreeType project, and may only be used, */ /* This file is part of the FreeType project, and may only be used, */
@ -250,7 +250,7 @@
if ( offsize < 1 || offsize > 4 ) if ( offsize < 1 || offsize > 4 )
{ {
error = CFF_Err_Invalid_Table; error = FT_THROW( Invalid_Table );
goto Exit; goto Exit;
} }
@ -269,7 +269,7 @@
if ( size == 0 ) if ( size == 0 )
{ {
error = CFF_Err_Invalid_Table; error = FT_THROW( Invalid_Table );
goto Exit; goto Exit;
} }
@ -386,7 +386,8 @@
{ {
FT_Error error = CFF_Err_Ok; FT_Error error = CFF_Err_Ok;
FT_Memory memory = idx->stream->memory; FT_Memory memory = idx->stream->memory;
FT_Byte** t = NULL;
FT_Byte** t = NULL;
FT_Byte* new_bytes = NULL; FT_Byte* new_bytes = NULL;
@ -556,7 +557,7 @@
} }
} }
else else
error = CFF_Err_Invalid_Argument; error = FT_THROW( Invalid_Argument );
Exit: Exit:
return error; return error;
@ -696,7 +697,7 @@
break; break;
default: /* hmm... that's wrong */ default: /* hmm... that's wrong */
error = CFF_Err_Invalid_File_Format; error = FT_THROW( Invalid_File_Format );
} }
Exit: Exit:
@ -943,7 +944,7 @@
default: default:
FT_ERROR(( "cff_charset_load: invalid table format\n" )); FT_ERROR(( "cff_charset_load: invalid table format\n" ));
error = CFF_Err_Invalid_File_Format; error = FT_THROW( Invalid_File_Format );
goto Exit; goto Exit;
} }
} }
@ -966,7 +967,7 @@
{ {
FT_ERROR(( "cff_charset_load: implicit charset larger than\n" FT_ERROR(( "cff_charset_load: implicit charset larger than\n"
"predefined charset (Adobe ISO-Latin)\n" )); "predefined charset (Adobe ISO-Latin)\n" ));
error = CFF_Err_Invalid_File_Format; error = FT_THROW( Invalid_File_Format );
goto Exit; goto Exit;
} }
@ -984,7 +985,7 @@
{ {
FT_ERROR(( "cff_charset_load: implicit charset larger than\n" FT_ERROR(( "cff_charset_load: implicit charset larger than\n"
"predefined charset (Adobe Expert)\n" )); "predefined charset (Adobe Expert)\n" ));
error = CFF_Err_Invalid_File_Format; error = FT_THROW( Invalid_File_Format );
goto Exit; goto Exit;
} }
@ -1002,7 +1003,7 @@
{ {
FT_ERROR(( "cff_charset_load: implicit charset larger than\n" FT_ERROR(( "cff_charset_load: implicit charset larger than\n"
"predefined charset (Adobe Expert Subset)\n" )); "predefined charset (Adobe Expert Subset)\n" ));
error = CFF_Err_Invalid_File_Format; error = FT_THROW( Invalid_File_Format );
goto Exit; goto Exit;
} }
@ -1016,7 +1017,7 @@
break; break;
default: default:
error = CFF_Err_Invalid_File_Format; error = FT_THROW( Invalid_File_Format );
goto Exit; goto Exit;
} }
} }
@ -1067,7 +1068,7 @@
/* Check for charset->sids. If we do not have this, we fail. */ /* Check for charset->sids. If we do not have this, we fail. */
if ( !charset->sids ) if ( !charset->sids )
{ {
error = CFF_Err_Invalid_File_Format; error = FT_THROW( Invalid_File_Format );
goto Exit; goto Exit;
} }
@ -1187,7 +1188,7 @@
default: default:
FT_ERROR(( "cff_encoding_load: invalid table format\n" )); FT_ERROR(( "cff_encoding_load: invalid table format\n" ));
error = CFF_Err_Invalid_File_Format; error = FT_THROW( Invalid_File_Format );
goto Exit; goto Exit;
} }
@ -1280,7 +1281,7 @@
default: default:
FT_ERROR(( "cff_encoding_load: invalid table format\n" )); FT_ERROR(( "cff_encoding_load: invalid table format\n" ));
error = CFF_Err_Invalid_File_Format; error = FT_THROW( Invalid_File_Format );
goto Exit; goto Exit;
} }
} }
@ -1460,7 +1461,7 @@
font->absolute_offsize > 4 ) font->absolute_offsize > 4 )
{ {
FT_TRACE2(( " not a CFF font header\n" )); FT_TRACE2(( " not a CFF font header\n" ));
error = CFF_Err_Unknown_File_Format; error = FT_THROW( Unknown_File_Format );
goto Exit; goto Exit;
} }
@ -1494,7 +1495,7 @@
FT_ERROR(( "cff_font_load:" FT_ERROR(( "cff_font_load:"
" invalid subfont index for pure CFF font (%d)\n", " invalid subfont index for pure CFF font (%d)\n",
subfont_index )); subfont_index ));
error = CFF_Err_Invalid_Argument; error = FT_THROW( Invalid_Argument );
goto Exit; goto Exit;
} }
@ -1510,7 +1511,7 @@
" invalid CFF font with multiple subfonts\n" " invalid CFF font with multiple subfonts\n"
" " " "
" in SFNT wrapper\n" )); " in SFNT wrapper\n" ));
error = CFF_Err_Invalid_File_Format; error = FT_THROW( Invalid_File_Format );
goto Exit; goto Exit;
} }
} }
@ -1599,7 +1600,7 @@
if ( dict->charstrings_offset == 0 ) if ( dict->charstrings_offset == 0 )
{ {
FT_ERROR(( "cff_font_load: no charstrings offset\n" )); FT_ERROR(( "cff_font_load: no charstrings offset\n" ));
error = CFF_Err_Invalid_File_Format; error = FT_THROW( Invalid_File_Format );
goto Exit; goto Exit;
} }

View File

@ -496,7 +496,7 @@
if ( !sfnt ) if ( !sfnt )
{ {
FT_ERROR(( "cff_face_init: cannot access `sfnt' module\n" )); FT_ERROR(( "cff_face_init: cannot access `sfnt' module\n" ));
error = CFF_Err_Missing_Module; error = FT_THROW( Missing_Module );
goto Exit; goto Exit;
} }
@ -518,7 +518,7 @@
if ( face->format_tag != TTAG_OTTO ) /* `OTTO'; OpenType/CFF font */ if ( face->format_tag != TTAG_OTTO ) /* `OTTO'; OpenType/CFF font */
{ {
FT_TRACE2(( " not an OpenType/CFF font\n" )); FT_TRACE2(( " not an OpenType/CFF font\n" ));
error = CFF_Err_Unknown_File_Format; error = FT_THROW( Unknown_File_Format );
goto Exit; goto Exit;
} }
@ -600,7 +600,7 @@
" cannot open CFF & CEF fonts\n" " cannot open CFF & CEF fonts\n"
" " " "
" without the `PSNames' module\n" )); " without the `PSNames' module\n" ));
error = CFF_Err_Missing_Module; error = FT_THROW( Missing_Module );
goto Exit; goto Exit;
} }

View File

@ -4,7 +4,7 @@
/* */ /* */
/* CFF token stream parser (body) */ /* CFF token stream parser (body) */
/* */ /* */
/* Copyright 1996-2004, 2007-2012 by */ /* Copyright 1996-2004, 2007-2013 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */ /* */
/* This file is part of the FreeType project, and may only be used, */ /* This file is part of the FreeType project, and may only be used, */
@ -1161,15 +1161,15 @@
return error; return error;
Stack_Overflow: Stack_Overflow:
error = CFF_Err_Invalid_Argument; error = FT_THROW( Invalid_Argument );
goto Exit; goto Exit;
Stack_Underflow: Stack_Underflow:
error = CFF_Err_Invalid_Argument; error = FT_THROW( Invalid_Argument );
goto Exit; goto Exit;
Syntax_Error: Syntax_Error:
error = CFF_Err_Invalid_Argument; error = FT_THROW( Invalid_Argument );
goto Exit; goto Exit;
} }

View File

@ -4,7 +4,7 @@
/* */ /* */
/* CID-keyed Type1 Glyph Loader (body). */ /* CID-keyed Type1 Glyph Loader (body). */
/* */ /* */
/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2009, 2010 by */ /* Copyright 1996-2007, 2009, 2010, 2013 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */ /* */
/* This file is part of the FreeType project, and may only be used, */ /* This file is part of the FreeType project, and may only be used, */
@ -117,7 +117,7 @@
if ( fd_select >= (FT_UInt)cid->num_dicts ) if ( fd_select >= (FT_UInt)cid->num_dicts )
{ {
error = CID_Err_Invalid_Offset; error = FT_THROW( Invalid_Offset );
goto Exit; goto Exit;
} }
if ( glyph_length == 0 ) if ( glyph_length == 0 )
@ -284,7 +284,7 @@
if ( glyph_index >= (FT_UInt)face->root.num_glyphs ) if ( glyph_index >= (FT_UInt)face->root.num_glyphs )
{ {
error = CID_Err_Invalid_Argument; error = FT_THROW( Invalid_Argument );
goto Exit; goto Exit;
} }

View File

@ -4,7 +4,7 @@
/* */ /* */
/* CID-keyed Type1 font loader (body). */ /* CID-keyed Type1 font loader (body). */
/* */ /* */
/* Copyright 1996-2006, 2009, 2011-2012 by */ /* Copyright 1996-2006, 2009, 2011-2013 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */ /* */
/* This file is part of the FreeType project, and may only be used, */ /* This file is part of the FreeType project, and may only be used, */
@ -114,7 +114,7 @@
{ {
FT_ERROR(( "cid_load_keyword: invalid use of `%s'\n", FT_ERROR(( "cid_load_keyword: invalid use of `%s'\n",
keyword->ident )); keyword->ident ));
error = CID_Err_Syntax_Error; error = FT_THROW( Syntax_Error );
goto Exit; goto Exit;
} }
@ -416,7 +416,7 @@
/* Check for possible overflow. */ /* Check for possible overflow. */
if ( num_subrs == FT_UINT_MAX ) if ( num_subrs == FT_UINT_MAX )
{ {
error = CID_Err_Syntax_Error; error = FT_THROW( Syntax_Error );
goto Fail; goto Fail;
} }
@ -428,7 +428,7 @@
if ( new_max <= max_offsets ) if ( new_max <= max_offsets )
{ {
error = CID_Err_Syntax_Error; error = FT_THROW( Syntax_Error );
goto Fail; goto Fail;
} }
@ -571,7 +571,7 @@
if ( size == 0 ) if ( size == 0 )
{ {
error = CID_Err_Syntax_Error; error = FT_THROW( Syntax_Error );
goto Exit; goto Exit;
} }
@ -604,7 +604,7 @@
} }
else else
{ {
error = CID_Err_Syntax_Error; error = FT_THROW( Syntax_Error );
goto Exit; goto Exit;
} }

View File

@ -4,7 +4,7 @@
/* */ /* */
/* CID objects manager (body). */ /* CID objects manager (body). */
/* */ /* */
/* Copyright 1996-2006, 2008, 2010-2011 by */ /* Copyright 1996-2006, 2008, 2010-2011, 2013 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */ /* */
/* This file is part of the FreeType project, and may only be used, */ /* This file is part of the FreeType project, and may only be used, */
@ -302,7 +302,7 @@
if ( !psaux ) if ( !psaux )
{ {
FT_ERROR(( "cid_face_init: cannot access `psaux' module\n" )); FT_ERROR(( "cid_face_init: cannot access `psaux' module\n" ));
error = CID_Err_Missing_Module; error = FT_THROW( Missing_Module );
goto Exit; goto Exit;
} }
@ -337,7 +337,7 @@
if ( face_index != 0 ) if ( face_index != 0 )
{ {
FT_ERROR(( "cid_face_init: invalid face index\n" )); FT_ERROR(( "cid_face_init: invalid face index\n" ));
error = CID_Err_Invalid_Argument; error = FT_THROW( Invalid_Argument );
goto Exit; goto Exit;
} }

View File

@ -4,7 +4,7 @@
/* */ /* */
/* CID-keyed Type1 parser (body). */ /* CID-keyed Type1 parser (body). */
/* */ /* */
/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2009 by */ /* Copyright 1996-2007, 2009, 2013 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */ /* */
/* This file is part of the FreeType project, and may only be used, */ /* This file is part of the FreeType project, and may only be used, */
@ -74,7 +74,7 @@
"%!PS-Adobe-3.0 Resource-CIDFont", 31 ) ) "%!PS-Adobe-3.0 Resource-CIDFont", 31 ) )
{ {
FT_TRACE2(( " not a CID-keyed font\n" )); FT_TRACE2(( " not a CID-keyed font\n" ));
error = CID_Err_Unknown_File_Format; error = FT_THROW( Unknown_File_Format );
} }
FT_FRAME_EXIT(); FT_FRAME_EXIT();
@ -99,7 +99,7 @@
if ( stream_len == 0 ) if ( stream_len == 0 )
{ {
FT_TRACE2(( "cid_parser_new: no `StartData' keyword found\n" )); FT_TRACE2(( "cid_parser_new: no `StartData' keyword found\n" ));
error = CID_Err_Invalid_File_Format; error = FT_THROW( Invalid_File_Format );
goto Exit; goto Exit;
} }
@ -185,7 +185,7 @@
else if ( cur[1] == 's' && ft_strncmp( (char*)cur, "/sfnts", 6 ) == 0 ) else if ( cur[1] == 's' && ft_strncmp( (char*)cur, "/sfnts", 6 ) == 0 )
{ {
FT_TRACE2(( "cid_parser_new: cannot handle Type 11 fonts\n" )); FT_TRACE2(( "cid_parser_new: cannot handle Type 11 fonts\n" ));
error = CID_Err_Unknown_File_Format; error = FT_THROW( Unknown_File_Format );
goto Exit; goto Exit;
} }

View File

@ -4,7 +4,7 @@
/* */ /* */
/* FreeType's TrueTypeGX/AAT validation module implementation (body). */ /* FreeType's TrueTypeGX/AAT validation module implementation (body). */
/* */ /* */
/* Copyright 2004, 2005, 2006 */ /* Copyright 2004-2006, 2013 */
/* by suzuki toshiya, Masatake YAMATO, Red Hat K.K., */ /* by suzuki toshiya, Masatake YAMATO, Red Hat K.K., */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */ /* */
@ -58,7 +58,7 @@
error = FT_Load_Sfnt_Table( face, tag, 0, NULL, table_len ); error = FT_Load_Sfnt_Table( face, tag, 0, NULL, table_len );
if ( error == GXV_Err_Table_Missing ) if ( FT_ERROR_BASE( error ) == FT_Err_Table_Missing )
return GXV_Err_Ok; return GXV_Err_Ok;
if ( error ) if ( error )
goto Exit; goto Exit;

View File

@ -8,7 +8,7 @@
/* parse compressed PCF fonts, as found with many X11 server */ /* parse compressed PCF fonts, as found with many X11 server */
/* distributions. */ /* distributions. */
/* */ /* */
/* Copyright 2002-2006, 2009-2012 by */ /* Copyright 2002-2006, 2009-2013 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */ /* */
/* This file is part of the FreeType project, and may only be used, */ /* This file is part of the FreeType project, and may only be used, */
@ -200,7 +200,7 @@
head[2] != Z_DEFLATED || head[2] != Z_DEFLATED ||
(head[3] & FT_GZIP_RESERVED) ) (head[3] & FT_GZIP_RESERVED) )
{ {
error = Gzip_Err_Invalid_File_Format; error = FT_THROW( Invalid_File_Format );
goto Exit; goto Exit;
} }
@ -294,7 +294,7 @@
if ( inflateInit2( zstream, -MAX_WBITS ) != Z_OK || if ( inflateInit2( zstream, -MAX_WBITS ) != Z_OK ||
zstream->next_in == NULL ) zstream->next_in == NULL )
error = Gzip_Err_Invalid_File_Format; error = FT_THROW( Invalid_File_Format );
Exit: Exit:
return error; return error;
@ -365,7 +365,7 @@
size = stream->read( stream, stream->pos, zip->input, size = stream->read( stream, stream->pos, zip->input,
FT_GZIP_BUFFER_SIZE ); FT_GZIP_BUFFER_SIZE );
if ( size == 0 ) if ( size == 0 )
return Gzip_Err_Invalid_Stream_Operation; return FT_THROW( Invalid_Stream_Operation );
} }
else else
{ {
@ -374,7 +374,7 @@
size = FT_GZIP_BUFFER_SIZE; size = FT_GZIP_BUFFER_SIZE;
if ( size == 0 ) if ( size == 0 )
return Gzip_Err_Invalid_Stream_Operation; return FT_THROW( Invalid_Stream_Operation );
FT_MEM_COPY( zip->input, stream->base + stream->pos, size ); FT_MEM_COPY( zip->input, stream->base + stream->pos, size );
} }
@ -416,12 +416,12 @@
{ {
zip->limit = zstream->next_out; zip->limit = zstream->next_out;
if ( zip->limit == zip->cursor ) if ( zip->limit == zip->cursor )
error = Gzip_Err_Invalid_Stream_Operation; error = FT_THROW( Invalid_Stream_Operation );
break; break;
} }
else if ( err != Z_OK ) else if ( err != Z_OK )
{ {
error = Gzip_Err_Invalid_Stream_Operation; error = FT_THROW( Invalid_Stream_Operation );
break; break;
} }
} }
@ -680,7 +680,7 @@
FT_UNUSED( stream ); FT_UNUSED( stream );
FT_UNUSED( source ); FT_UNUSED( source );
return Gzip_Err_Unimplemented_Feature; return FT_THROW( Unimplemented_Feature );
} }
#endif /* !FT_CONFIG_OPTION_USE_ZLIB */ #endif /* !FT_CONFIG_OPTION_USE_ZLIB */

View File

@ -8,7 +8,7 @@
/* be used to parse compressed PCF fonts, as found with many X11 server */ /* be used to parse compressed PCF fonts, as found with many X11 server */
/* distributions. */ /* distributions. */
/* */ /* */
/* Copyright 2004-2006, 2009, 2010, 2012 by */ /* Copyright 2004-2006, 2009, 2010, 2012, 2013 by */
/* Albert Chin-A-Young. */ /* Albert Chin-A-Young. */
/* */ /* */
/* Based on code in src/gzip/ftgzip.c, Copyright 2004 by */ /* Based on code in src/gzip/ftgzip.c, Copyright 2004 by */
@ -98,7 +98,7 @@
/* head[0] && head[1] are the magic numbers */ /* head[0] && head[1] are the magic numbers */
if ( head[0] != 0x1f || if ( head[0] != 0x1f ||
head[1] != 0x9d ) head[1] != 0x9d )
error = LZW_Err_Invalid_File_Format; error = FT_THROW( Invalid_File_Format );
Exit: Exit:
return error; return error;
@ -182,7 +182,7 @@
zip->limit = zip->cursor + count; zip->limit = zip->cursor + count;
if ( count == 0 ) if ( count == 0 )
error = LZW_Err_Invalid_Stream_Operation; error = FT_THROW( Invalid_Stream_Operation );
return error; return error;
} }
@ -224,7 +224,7 @@
if ( numread < delta ) if ( numread < delta )
{ {
/* not enough bytes */ /* not enough bytes */
error = LZW_Err_Invalid_Stream_Operation; error = FT_THROW( Invalid_Stream_Operation );
break; break;
} }
@ -403,7 +403,7 @@
FT_UNUSED( stream ); FT_UNUSED( stream );
FT_UNUSED( source ); FT_UNUSED( source );
return LZW_Err_Unimplemented_Feature; return FT_THROW( Unimplemented_Feature );
} }

View File

@ -4,7 +4,7 @@
/* */ /* */
/* FreeType's OpenType validation module implementation (body). */ /* FreeType's OpenType validation module implementation (body). */
/* */ /* */
/* Copyright 2004, 2005, 2006, 2007, 2008 by */ /* Copyright 2004-2008, 2013 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */ /* */
/* This file is part of the FreeType project, and may only be used, */ /* This file is part of the FreeType project, and may only be used, */
@ -49,7 +49,7 @@
error = FT_Load_Sfnt_Table( face, tag, 0, NULL, table_len ); error = FT_Load_Sfnt_Table( face, tag, 0, NULL, table_len );
if ( error == OTV_Err_Table_Missing ) if ( FT_ERROR_BASE( error ) == FT_Err_Table_Missing )
return OTV_Err_Ok; return OTV_Err_Ok;
if ( error ) if ( error )
goto Exit; goto Exit;

View File

@ -2,7 +2,7 @@
FreeType font driver for pcf files FreeType font driver for pcf files
Copyright (C) 2000-2004, 2006-2011 by Copyright (C) 2000-2004, 2006-2011, 2013 by
Francesco Zappa Nardelli Francesco Zappa Nardelli
Permission is hereby granted, free of charge, to any person obtaining a copy Permission is hereby granted, free of charge, to any person obtaining a copy
@ -406,7 +406,7 @@ THE SOFTWARE.
Fail: Fail:
FT_TRACE2(( " not a PCF file\n" )); FT_TRACE2(( " not a PCF file\n" ));
PCF_Face_Done( pcfface ); PCF_Face_Done( pcfface );
error = PCF_Err_Unknown_File_Format; /* error */ error = FT_THROW( Unknown_File_Format ); /* error */
goto Exit; goto Exit;
} }
@ -455,7 +455,7 @@ THE SOFTWARE.
break; break;
default: default:
error = PCF_Err_Unimplemented_Feature; error = FT_THROW( Unimplemented_Feature );
break; break;
} }
@ -486,7 +486,7 @@ THE SOFTWARE.
if ( !face || glyph_index >= (FT_UInt)face->root.num_glyphs ) if ( !face || glyph_index >= (FT_UInt)face->root.num_glyphs )
{ {
error = PCF_Err_Invalid_Argument; error = FT_THROW( Invalid_Argument );
goto Exit; goto Exit;
} }
@ -526,7 +526,7 @@ THE SOFTWARE.
break; break;
default: default:
return PCF_Err_Invalid_File_Format; return FT_THROW( Invalid_File_Format );
} }
/* XXX: to do: are there cases that need repadding the bitmap? */ /* XXX: to do: are there cases that need repadding the bitmap? */
@ -622,7 +622,7 @@ THE SOFTWARE.
return 0; return 0;
} }
return PCF_Err_Invalid_Argument; return FT_THROW( Invalid_Argument );
} }

View File

@ -98,15 +98,15 @@ THE SOFTWARE.
if ( FT_STREAM_SEEK ( 0 ) || if ( FT_STREAM_SEEK ( 0 ) ||
FT_STREAM_READ_FIELDS ( pcf_toc_header, toc ) ) FT_STREAM_READ_FIELDS ( pcf_toc_header, toc ) )
return PCF_Err_Cannot_Open_Resource; return FT_THROW( Cannot_Open_Resource );
if ( toc->version != PCF_FILE_VERSION || if ( toc->version != PCF_FILE_VERSION ||
toc->count > FT_ARRAY_MAX( face->toc.tables ) || toc->count > FT_ARRAY_MAX( face->toc.tables ) ||
toc->count == 0 ) toc->count == 0 )
return PCF_Err_Invalid_File_Format; return FT_THROW( Invalid_File_Format );
if ( FT_NEW_ARRAY( face->toc.tables, toc->count ) ) if ( FT_NEW_ARRAY( face->toc.tables, toc->count ) )
return PCF_Err_Out_Of_Memory; return FT_THROW( Out_Of_Memory );
tables = face->toc.tables; tables = face->toc.tables;
for ( n = 0; n < toc->count; n++ ) for ( n = 0; n < toc->count; n++ )
@ -144,7 +144,7 @@ THE SOFTWARE.
if ( ( tables[i].size > tables[i + 1].offset ) || if ( ( tables[i].size > tables[i + 1].offset ) ||
( tables[i].offset > tables[i + 1].offset - tables[i].size ) ) ( tables[i].offset > tables[i + 1].offset - tables[i].size ) )
return PCF_Err_Invalid_Offset; return FT_THROW( Invalid_Offset );
} }
if ( !have_change ) if ( !have_change )
@ -303,13 +303,13 @@ THE SOFTWARE.
{ {
if ( stream->pos > tables[i].offset ) if ( stream->pos > tables[i].offset )
{ {
error = PCF_Err_Invalid_Stream_Skip; error = FT_THROW( Invalid_Stream_Skip );
goto Fail; goto Fail;
} }
if ( FT_STREAM_SKIP( tables[i].offset - stream->pos ) ) if ( FT_STREAM_SKIP( tables[i].offset - stream->pos ) )
{ {
error = PCF_Err_Invalid_Stream_Skip; error = FT_THROW( Invalid_Stream_Skip );
goto Fail; goto Fail;
} }
@ -441,7 +441,7 @@ THE SOFTWARE.
/* rough estimate */ /* rough estimate */
if ( nprops > size / PCF_PROPERTY_SIZE ) if ( nprops > size / PCF_PROPERTY_SIZE )
{ {
error = PCF_Err_Invalid_Table; error = FT_THROW( Invalid_Table );
goto Bail; goto Bail;
} }
@ -474,7 +474,7 @@ THE SOFTWARE.
i = 4 - ( nprops & 3 ); i = 4 - ( nprops & 3 );
if ( FT_STREAM_SKIP( i ) ) if ( FT_STREAM_SKIP( i ) )
{ {
error = PCF_Err_Invalid_Stream_Skip; error = FT_THROW( Invalid_Stream_Skip );
goto Bail; goto Bail;
} }
} }
@ -491,7 +491,7 @@ THE SOFTWARE.
/* rough estimate */ /* rough estimate */
if ( string_size > size - nprops * PCF_PROPERTY_SIZE ) if ( string_size > size - nprops * PCF_PROPERTY_SIZE )
{ {
error = PCF_Err_Invalid_Table; error = FT_THROW( Invalid_Table );
goto Bail; goto Bail;
} }
@ -516,7 +516,7 @@ THE SOFTWARE.
if ( ( name_offset < 0 ) || if ( ( name_offset < 0 ) ||
( (FT_ULong)name_offset > string_size ) ) ( (FT_ULong)name_offset > string_size ) )
{ {
error = PCF_Err_Invalid_Offset; error = FT_THROW( Invalid_Offset );
goto Bail; goto Bail;
} }
@ -535,7 +535,7 @@ THE SOFTWARE.
if ( ( value_offset < 0 ) || if ( ( value_offset < 0 ) ||
( (FT_ULong)value_offset > string_size ) ) ( (FT_ULong)value_offset > string_size ) )
{ {
error = PCF_Err_Invalid_Offset; error = FT_THROW( Invalid_Offset );
goto Bail; goto Bail;
} }
@ -587,7 +587,7 @@ THE SOFTWARE.
if ( !PCF_FORMAT_MATCH( format, PCF_DEFAULT_FORMAT ) && if ( !PCF_FORMAT_MATCH( format, PCF_DEFAULT_FORMAT ) &&
!PCF_FORMAT_MATCH( format, PCF_COMPRESSED_METRICS ) ) !PCF_FORMAT_MATCH( format, PCF_COMPRESSED_METRICS ) )
return PCF_Err_Invalid_File_Format; return FT_THROW( Invalid_File_Format );
if ( PCF_FORMAT_MATCH( format, PCF_DEFAULT_FORMAT ) ) if ( PCF_FORMAT_MATCH( format, PCF_DEFAULT_FORMAT ) )
{ {
@ -604,12 +604,12 @@ THE SOFTWARE.
(void)FT_READ_USHORT_LE( nmetrics ); (void)FT_READ_USHORT_LE( nmetrics );
} }
if ( error ) if ( error )
return PCF_Err_Invalid_File_Format; return FT_THROW( Invalid_File_Format );
face->nmetrics = nmetrics; face->nmetrics = nmetrics;
if ( !nmetrics ) if ( !nmetrics )
return PCF_Err_Invalid_Table; return FT_THROW( Invalid_Table );
FT_TRACE4(( "pcf_get_metrics:\n" )); FT_TRACE4(( "pcf_get_metrics:\n" ));
@ -619,16 +619,16 @@ THE SOFTWARE.
if ( PCF_FORMAT_MATCH( format, PCF_DEFAULT_FORMAT ) ) if ( PCF_FORMAT_MATCH( format, PCF_DEFAULT_FORMAT ) )
{ {
if ( nmetrics > size / PCF_METRIC_SIZE ) if ( nmetrics > size / PCF_METRIC_SIZE )
return PCF_Err_Invalid_Table; return FT_THROW( Invalid_Table );
} }
else else
{ {
if ( nmetrics > size / PCF_COMPRESSED_METRIC_SIZE ) if ( nmetrics > size / PCF_COMPRESSED_METRIC_SIZE )
return PCF_Err_Invalid_Table; return FT_THROW( Invalid_Table );
} }
if ( FT_NEW_ARRAY( face->metrics, nmetrics ) ) if ( FT_NEW_ARRAY( face->metrics, nmetrics ) )
return PCF_Err_Out_Of_Memory; return FT_THROW( Out_Of_Memory );
metrics = face->metrics; metrics = face->metrics;
for ( i = 0; i < nmetrics; i++ ) for ( i = 0; i < nmetrics; i++ )
@ -693,7 +693,7 @@ THE SOFTWARE.
FT_Stream_ExitFrame( stream ); FT_Stream_ExitFrame( stream );
if ( !PCF_FORMAT_MATCH( format, PCF_DEFAULT_FORMAT ) ) if ( !PCF_FORMAT_MATCH( format, PCF_DEFAULT_FORMAT ) )
return PCF_Err_Invalid_File_Format; return FT_THROW( Invalid_File_Format );
FT_TRACE4(( "pcf_get_bitmaps:\n" )); FT_TRACE4(( "pcf_get_bitmaps:\n" ));
@ -701,7 +701,7 @@ THE SOFTWARE.
/* XXX: PCF_Face->nmetrics is singed FT_Long, see pcf.h */ /* XXX: PCF_Face->nmetrics is singed FT_Long, see pcf.h */
if ( face->nmetrics < 0 || nbitmaps != ( FT_ULong )face->nmetrics ) if ( face->nmetrics < 0 || nbitmaps != ( FT_ULong )face->nmetrics )
return PCF_Err_Invalid_File_Format; return FT_THROW( Invalid_File_Format );
if ( FT_NEW_ARRAY( offsets, nbitmaps ) ) if ( FT_NEW_ARRAY( offsets, nbitmaps ) )
return error; return error;
@ -810,7 +810,7 @@ THE SOFTWARE.
FT_Stream_ExitFrame( stream ); FT_Stream_ExitFrame( stream );
if ( !PCF_FORMAT_MATCH( format, PCF_DEFAULT_FORMAT ) ) if ( !PCF_FORMAT_MATCH( format, PCF_DEFAULT_FORMAT ) )
return PCF_Err_Invalid_File_Format; return FT_THROW( Invalid_File_Format );
FT_TRACE4(( "pdf_get_encodings:\n" )); FT_TRACE4(( "pdf_get_encodings:\n" ));
@ -820,7 +820,7 @@ THE SOFTWARE.
nencoding = ( lastCol - firstCol + 1 ) * ( lastRow - firstRow + 1 ); nencoding = ( lastCol - firstCol + 1 ) * ( lastRow - firstRow + 1 );
if ( FT_NEW_ARRAY( encoding, nencoding ) ) if ( FT_NEW_ARRAY( encoding, nencoding ) )
return PCF_Err_Out_Of_Memory; return FT_THROW( Out_Of_Memory );
error = FT_Stream_EnterFrame( stream, 2 * nencoding ); error = FT_Stream_EnterFrame( stream, 2 * nencoding );
if ( error ) if ( error )
@ -1259,7 +1259,7 @@ THE SOFTWARE.
{ {
/* This is done to respect the behaviour of the original */ /* This is done to respect the behaviour of the original */
/* PCF font driver. */ /* PCF font driver. */
error = PCF_Err_Invalid_File_Format; error = FT_THROW( Invalid_File_Format );
} }
return error; return error;

View File

@ -4,7 +4,7 @@
/* */ /* */
/* FreeType PFR cmap handling (body). */ /* FreeType PFR cmap handling (body). */
/* */ /* */
/* Copyright 2002, 2007, 2009 by */ /* Copyright 2002, 2007, 2009, 2013 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */ /* */
/* This file is part of the FreeType project, and may only be used, */ /* This file is part of the FreeType project, and may only be used, */
@ -16,6 +16,8 @@
/***************************************************************************/ /***************************************************************************/
#include <ft2build.h>
#include FT_INTERNAL_DEBUG_H
#include "pfrcmap.h" #include "pfrcmap.h"
#include "pfrobjs.h" #include "pfrobjs.h"
@ -42,7 +44,7 @@
{ {
if ( cmap->chars[n - 1].char_code >= cmap->chars[n].char_code ) if ( cmap->chars[n - 1].char_code >= cmap->chars[n].char_code )
{ {
error = PFR_Err_Invalid_Table; error = FT_THROW( Invalid_Table );
goto Exit; goto Exit;
} }
} }

View File

@ -84,7 +84,7 @@
if ( gindex < phys->num_chars ) if ( gindex < phys->num_chars )
{ {
*anadvance = phys->chars[gindex].advance; *anadvance = phys->chars[gindex].advance;
error = PFR_Err_Ok; error = PFR_Err_Ok;
} }
} }

View File

@ -4,7 +4,7 @@
/* */ /* */
/* FreeType PFR glyph loader (body). */ /* FreeType PFR glyph loader (body). */
/* */ /* */
/* Copyright 2002, 2003, 2005, 2007, 2010 by */ /* Copyright 2002, 2003, 2005, 2007, 2010, 2013 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */ /* */
/* This file is part of the FreeType project, and may only be used, */ /* This file is part of the FreeType project, and may only be used, */
@ -135,7 +135,7 @@
/* check that we have begun a new path */ /* check that we have begun a new path */
if ( !glyph->path_begun ) if ( !glyph->path_begun )
{ {
error = PFR_Err_Invalid_Table; error = FT_THROW( Invalid_Table );
FT_ERROR(( "pfr_glyph_line_to: invalid glyph data\n" )); FT_ERROR(( "pfr_glyph_line_to: invalid glyph data\n" ));
goto Exit; goto Exit;
} }
@ -171,7 +171,7 @@
/* check that we have begun a new path */ /* check that we have begun a new path */
if ( !glyph->path_begun ) if ( !glyph->path_begun )
{ {
error = PFR_Err_Invalid_Table; error = FT_THROW( Invalid_Table );
FT_ERROR(( "pfr_glyph_line_to: invalid glyph data\n" )); FT_ERROR(( "pfr_glyph_line_to: invalid glyph data\n" ));
goto Exit; goto Exit;
} }
@ -546,7 +546,7 @@
Failure: Failure:
Too_Short: Too_Short:
error = PFR_Err_Invalid_Table; error = FT_THROW( Invalid_Table );
FT_ERROR(( "pfr_glyph_load_simple: invalid glyph data\n" )); FT_ERROR(( "pfr_glyph_load_simple: invalid glyph data\n" ));
goto Exit; goto Exit;
} }
@ -602,7 +602,7 @@
/* to avoid endless recursion */ /* to avoid endless recursion */
if ( new_max > 64 ) if ( new_max > 64 )
{ {
error = PFR_Err_Invalid_Table; error = FT_THROW( Invalid_Table );
FT_ERROR(( "pfr_glyph_load_compound:" FT_ERROR(( "pfr_glyph_load_compound:"
" too many compound glyphs components\n" )); " too many compound glyphs components\n" ));
goto Exit; goto Exit;
@ -709,7 +709,7 @@
Failure: Failure:
Too_Short: Too_Short:
error = PFR_Err_Invalid_Table; error = FT_THROW( Invalid_Table );
FT_ERROR(( "pfr_glyph_load_compound: invalid glyph data\n" )); FT_ERROR(( "pfr_glyph_load_compound: invalid glyph data\n" ));
goto Exit; goto Exit;
} }

View File

@ -4,7 +4,7 @@
/* */ /* */
/* FreeType PFR loader (body). */ /* FreeType PFR loader (body). */
/* */ /* */
/* Copyright 2002, 2003, 2004, 2005, 2007, 2009, 2010 by */ /* Copyright 2002-2005, 2007, 2009, 2010, 2013 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */ /* */
/* This file is part of the FreeType project, and may only be used, */ /* This file is part of the FreeType project, and may only be used, */
@ -91,7 +91,7 @@
Too_Short: Too_Short:
FT_ERROR(( "pfr_extra_items_parse: invalid extra items table\n" )); FT_ERROR(( "pfr_extra_items_parse: invalid extra items table\n" ));
error = PFR_Err_Invalid_Table; error = FT_THROW( Invalid_Table );
goto Exit; goto Exit;
} }
@ -236,7 +236,7 @@
goto Exit; goto Exit;
if ( idx >= num_log_fonts ) if ( idx >= num_log_fonts )
return PFR_Err_Invalid_Argument; return FT_THROW( Invalid_Argument );
if ( FT_STREAM_SKIP( idx * 5 ) || if ( FT_STREAM_SKIP( idx * 5 ) ||
FT_READ_USHORT( size ) || FT_READ_USHORT( size ) ||
@ -329,7 +329,7 @@
Too_Short: Too_Short:
FT_ERROR(( "pfr_log_font_load: invalid logical font table\n" )); FT_ERROR(( "pfr_log_font_load: invalid logical font table\n" ));
error = PFR_Err_Invalid_Table; error = FT_THROW( Invalid_Table );
goto Fail; goto Fail;
} }
@ -427,7 +427,7 @@
return error; return error;
Too_Short: Too_Short:
error = PFR_Err_Invalid_Table; error = FT_THROW( Invalid_Table );
FT_ERROR(( "pfr_extra_item_load_bitmap_info:" FT_ERROR(( "pfr_extra_item_load_bitmap_info:"
" invalid bitmap info table\n" )); " invalid bitmap info table\n" ));
goto Exit; goto Exit;
@ -506,7 +506,7 @@
return error; return error;
Too_Short: Too_Short:
error = PFR_Err_Invalid_Table; error = FT_THROW( Invalid_Table );
FT_ERROR(( "pfr_exta_item_load_stem_snaps:" FT_ERROR(( "pfr_exta_item_load_stem_snaps:"
" invalid stem snaps table\n" )); " invalid stem snaps table\n" ));
goto Exit; goto Exit;
@ -604,7 +604,7 @@
Too_Short: Too_Short:
FT_FREE( item ); FT_FREE( item );
error = PFR_Err_Invalid_Table; error = FT_THROW( Invalid_Table );
FT_ERROR(( "pfr_extra_item_load_kerning_pairs:" FT_ERROR(( "pfr_extra_item_load_kerning_pairs:"
" invalid kerning pairs table\n" )); " invalid kerning pairs table\n" ));
goto Exit; goto Exit;
@ -932,7 +932,7 @@
return error; return error;
Too_Short: Too_Short:
error = PFR_Err_Invalid_Table; error = FT_THROW( Invalid_Table );
FT_ERROR(( "pfr_phy_font_load: invalid physical font table\n" )); FT_ERROR(( "pfr_phy_font_load: invalid physical font table\n" ));
goto Fail; goto Fail;
} }

View File

@ -4,7 +4,7 @@
/* */ /* */
/* FreeType PFR object methods (body). */ /* FreeType PFR object methods (body). */
/* */ /* */
/* Copyright 2002-2008, 2010-2011 by */ /* Copyright 2002-2008, 2010-2011, 2013 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */ /* */
/* This file is part of the FreeType project, and may only be used, */ /* This file is part of the FreeType project, and may only be used, */
@ -87,7 +87,7 @@
if ( !pfr_header_check( &face->header ) ) if ( !pfr_header_check( &face->header ) )
{ {
FT_TRACE2(( " not a PFR font\n" )); FT_TRACE2(( " not a PFR font\n" ));
error = PFR_Err_Unknown_File_Format; error = FT_THROW( Unknown_File_Format );
goto Exit; goto Exit;
} }
@ -111,7 +111,7 @@
if ( face_index >= pfrface->num_faces ) if ( face_index >= pfrface->num_faces )
{ {
FT_ERROR(( "pfr_face_init: invalid face index\n" )); FT_ERROR(( "pfr_face_init: invalid face index\n" ));
error = PFR_Err_Invalid_Argument; error = FT_THROW( Invalid_Argument );
goto Exit; goto Exit;
} }
@ -156,7 +156,7 @@
else else
{ {
FT_ERROR(( "pfr_face_init: font doesn't contain glyphs\n" )); FT_ERROR(( "pfr_face_init: font doesn't contain glyphs\n" ));
error = PFR_Err_Invalid_File_Format; error = FT_THROW( Invalid_File_Format );
goto Exit; goto Exit;
} }
} }
@ -329,7 +329,7 @@
if ( !face || gindex >= face->phy_font.num_chars ) if ( !face || gindex >= face->phy_font.num_chars )
{ {
error = PFR_Err_Invalid_Argument; error = FT_THROW( Invalid_Argument );
goto Exit; goto Exit;
} }
@ -343,7 +343,7 @@
if ( load_flags & FT_LOAD_SBITS_ONLY ) if ( load_flags & FT_LOAD_SBITS_ONLY )
{ {
error = PFR_Err_Invalid_Argument; error = FT_THROW( Invalid_Argument );
goto Exit; goto Exit;
} }

View File

@ -4,7 +4,7 @@
/* */ /* */
/* FreeType PFR bitmap loader (body). */ /* 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. */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */ /* */
/* This file is part of the FreeType project, and may only be used, */ /* This file is part of the FreeType project, and may only be used, */
@ -471,7 +471,7 @@
return error; return error;
Too_Short: Too_Short:
error = PFR_Err_Invalid_Table; error = FT_THROW( Invalid_Table );
FT_ERROR(( "pfr_load_bitmap_metrics: invalid glyph data\n" )); FT_ERROR(( "pfr_load_bitmap_metrics: invalid glyph data\n" ));
goto Exit; goto Exit;
} }
@ -508,7 +508,7 @@
default: default:
FT_ERROR(( "pfr_read_bitmap_data: invalid image type\n" )); FT_ERROR(( "pfr_read_bitmap_data: invalid image type\n" ));
error = PFR_Err_Invalid_File_Format; error = FT_THROW( Invalid_File_Format );
} }
} }
@ -560,7 +560,7 @@
} }
/* couldn't find it */ /* couldn't find it */
return PFR_Err_Invalid_Argument; return FT_THROW( Invalid_Argument );
} }
Found_Strike: Found_Strike:
@ -593,7 +593,7 @@
if ( gps_size == 0 ) if ( gps_size == 0 )
{ {
/* Could not find a bitmap program string for this glyph */ /* Could not find a bitmap program string for this glyph */
error = PFR_Err_Invalid_Argument; error = FT_THROW( Invalid_Argument );
goto Exit; goto Exit;
} }
} }
@ -641,7 +641,7 @@
FT_TRACE1(( "pfr_slot_load_bitmap:" )); FT_TRACE1(( "pfr_slot_load_bitmap:" ));
FT_TRACE1(( "huge bitmap glyph %dx%d over FT_GlyphSlot\n", FT_TRACE1(( "huge bitmap glyph %dx%d over FT_GlyphSlot\n",
xpos, ypos )); xpos, ypos ));
error = PFR_Err_Invalid_Pixel_Size; error = FT_THROW( Invalid_Pixel_Size );
} }
if ( !error ) if ( !error )

View File

@ -4,7 +4,7 @@
/* */ /* */
/* AFM parser (body). */ /* AFM parser (body). */
/* */ /* */
/* Copyright 2006-2010, 2012 by */ /* Copyright 2006-2010, 2012, 2013 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */ /* */
/* This file is part of the FreeType project, and may only be used, */ /* This file is part of the FreeType project, and may only be used, */
@ -17,6 +17,7 @@
#include <ft2build.h> #include <ft2build.h>
#include FT_FREETYPE_H #include FT_FREETYPE_H
#include FT_INTERNAL_DEBUG_H
#include FT_INTERNAL_POSTSCRIPT_AUX_H #include FT_INTERNAL_POSTSCRIPT_AUX_H
#include "afmparse.h" #include "afmparse.h"
@ -575,7 +576,7 @@
return PSaux_Err_Ok; return PSaux_Err_Ok;
} }
else else
return PSaux_Err_Syntax_Error; return FT_THROW( Syntax_Error );
} }
@ -648,7 +649,7 @@
} }
Fail: Fail:
return PSaux_Err_Syntax_Error; return FT_THROW( Syntax_Error );
} }
@ -764,7 +765,7 @@
} }
Fail: Fail:
return PSaux_Err_Syntax_Error; return FT_THROW( Syntax_Error );
} }
@ -806,7 +807,7 @@
} }
Fail: Fail:
return PSaux_Err_Syntax_Error; return FT_THROW( Syntax_Error );
} }
@ -836,7 +837,7 @@
} }
Fail: Fail:
return PSaux_Err_Syntax_Error; return FT_THROW( Syntax_Error );
} }
@ -852,12 +853,12 @@
if ( !fi ) if ( !fi )
return PSaux_Err_Invalid_Argument; return FT_THROW( Invalid_Argument );
key = afm_parser_next_key( parser, 1, &len ); key = afm_parser_next_key( parser, 1, &len );
if ( !key || len != 16 || if ( !key || len != 16 ||
ft_strncmp( key, "StartFontMetrics", 16 ) != 0 ) ft_strncmp( key, "StartFontMetrics", 16 ) != 0 )
return PSaux_Err_Unknown_File_Format; return FT_THROW( Unknown_File_Format );
while ( ( key = afm_parser_next_key( parser, 1, &len ) ) != 0 ) while ( ( key = afm_parser_next_key( parser, 1, &len ) ) != 0 )
{ {
@ -872,7 +873,7 @@
if ( metrics_sets != 0 && metrics_sets != 2 ) if ( metrics_sets != 0 && metrics_sets != 2 )
{ {
error = PSaux_Err_Unimplemented_Feature; error = FT_THROW( Unimplemented_Feature );
goto Fail; goto Fail;
} }

View File

@ -4,7 +4,7 @@
/* */ /* */
/* Auxiliary functions for PostScript fonts (body). */ /* Auxiliary functions for PostScript fonts (body). */
/* */ /* */
/* Copyright 1996-2012 by */ /* Copyright 1996-2013 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */ /* */
/* This file is part of the FreeType project, and may only be used, */ /* This file is part of the FreeType project, and may only be used, */
@ -173,13 +173,13 @@
if ( idx < 0 || idx >= table->max_elems ) if ( idx < 0 || idx >= table->max_elems )
{ {
FT_ERROR(( "ps_table_add: invalid index\n" )); FT_ERROR(( "ps_table_add: invalid index\n" ));
return PSaux_Err_Invalid_Argument; return FT_THROW( Invalid_Argument );
} }
if ( length < 0 ) if ( length < 0 )
{ {
FT_ERROR(( "ps_table_add: invalid length\n" )); FT_ERROR(( "ps_table_add: invalid length\n" ));
return PSaux_Err_Invalid_Argument; return FT_THROW( Invalid_Argument );
} }
/* grow the base block if needed */ /* grow the base block if needed */
@ -433,7 +433,7 @@
if ( cur < limit && *cur != '>' ) if ( cur < limit && *cur != '>' )
{ {
FT_ERROR(( "skip_string: missing closing delimiter `>'\n" )); FT_ERROR(( "skip_string: missing closing delimiter `>'\n" ));
err = PSaux_Err_Invalid_File_Format; err = FT_THROW( Invalid_File_Format );
} }
else else
cur++; cur++;
@ -494,7 +494,7 @@
end: end:
if ( embed != 0 ) if ( embed != 0 )
error = PSaux_Err_Invalid_File_Format; error = FT_THROW( Invalid_File_Format );
*acur = cur; *acur = cur;
@ -567,7 +567,7 @@
{ {
FT_ERROR(( "ps_parser_skip_PS_token:" FT_ERROR(( "ps_parser_skip_PS_token:"
" unexpected closing delimiter `>'\n" )); " unexpected closing delimiter `>'\n" ));
error = PSaux_Err_Invalid_File_Format; error = FT_THROW( Invalid_File_Format );
goto Exit; goto Exit;
} }
cur++; cur++;
@ -597,7 +597,7 @@
" but invalid at this point\n", " but invalid at this point\n",
*cur )); *cur ));
error = PSaux_Err_Invalid_File_Format; error = FT_THROW( Invalid_File_Format );
} }
parser->error = error; parser->error = error;
@ -1167,7 +1167,7 @@
" " " "
" but found token of type %d instead\n", " but found token of type %d instead\n",
token.type )); token.type ));
error = PSaux_Err_Invalid_File_Format; error = FT_THROW( Invalid_File_Format );
goto Exit; goto Exit;
} }
@ -1204,7 +1204,7 @@
{ {
FT_ERROR(( "ps_parser_load_field:" FT_ERROR(( "ps_parser_load_field:"
" expected four integers in bounding box\n" )); " expected four integers in bounding box\n" ));
error = PSaux_Err_Invalid_File_Format; error = FT_THROW( Invalid_File_Format );
goto Exit; goto Exit;
} }
@ -1241,7 +1241,7 @@
: ( i == 1 ? "second" : ( i == 1 ? "second"
: ( i == 2 ? "third" : ( i == 2 ? "third"
: "fourth" ) ) )); : "fourth" ) ) ));
error = PSaux_Err_Invalid_File_Format; error = FT_THROW( Invalid_File_Format );
goto Exit; goto Exit;
} }
@ -1282,7 +1282,7 @@
return error; return error;
Fail: Fail:
error = PSaux_Err_Invalid_File_Format; error = FT_THROW( Invalid_File_Format );
goto Exit; goto Exit;
} }
@ -1387,7 +1387,7 @@
if ( *cur != '<' ) if ( *cur != '<' )
{ {
FT_ERROR(( "ps_parser_to_bytes: Missing starting delimiter `<'\n" )); FT_ERROR(( "ps_parser_to_bytes: Missing starting delimiter `<'\n" ));
error = PSaux_Err_Invalid_File_Format; error = FT_THROW( Invalid_File_Format );
goto Exit; goto Exit;
} }
@ -1404,7 +1404,7 @@
if ( cur < parser->limit && *cur != '>' ) if ( cur < parser->limit && *cur != '>' )
{ {
FT_ERROR(( "ps_parser_to_bytes: Missing closing delimiter `>'\n" )); FT_ERROR(( "ps_parser_to_bytes: Missing closing delimiter `>'\n" ));
error = PSaux_Err_Invalid_File_Format; error = FT_THROW( Invalid_File_Format );
goto Exit; goto Exit;
} }
@ -1647,7 +1647,7 @@
if ( !outline ) if ( !outline )
{ {
FT_ERROR(( "t1_builder_add_contour: no outline to add points to\n" )); FT_ERROR(( "t1_builder_add_contour: no outline to add points to\n" ));
return PSaux_Err_Invalid_File_Format; return FT_THROW( Invalid_File_Format );
} }
if ( !builder->load_points ) if ( !builder->load_points )

View File

@ -4,7 +4,7 @@
/* */ /* */
/* PostScript Type 1 decoding routines (body). */ /* PostScript Type 1 decoding routines (body). */
/* */ /* */
/* Copyright 2000-2012 by */ /* Copyright 2000-2013 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */ /* */
/* This file is part of the FreeType project, and may only be used, */ /* This file is part of the FreeType project, and may only be used, */
@ -205,13 +205,13 @@
if ( decoder->seac ) if ( decoder->seac )
{ {
FT_ERROR(( "t1operator_seac: invalid nested seac\n" )); FT_ERROR(( "t1operator_seac: invalid nested seac\n" ));
return PSaux_Err_Syntax_Error; return FT_THROW( Syntax_Error );
} }
if ( decoder->builder.metrics_only ) if ( decoder->builder.metrics_only )
{ {
FT_ERROR(( "t1operator_seac: unexpected seac\n" )); FT_ERROR(( "t1operator_seac: unexpected seac\n" ));
return PSaux_Err_Syntax_Error; return FT_THROW( Syntax_Error );
} }
/* seac weirdness */ /* seac weirdness */
@ -228,7 +228,7 @@
{ {
FT_ERROR(( "t1operator_seac:" FT_ERROR(( "t1operator_seac:"
" glyph names table not available in this font\n" )); " glyph names table not available in this font\n" ));
return PSaux_Err_Syntax_Error; return FT_THROW( Syntax_Error );
} }
#ifdef FT_CONFIG_OPTION_INCREMENTAL #ifdef FT_CONFIG_OPTION_INCREMENTAL
@ -249,7 +249,7 @@
{ {
FT_ERROR(( "t1operator_seac:" FT_ERROR(( "t1operator_seac:"
" invalid seac character code arguments\n" )); " invalid seac character code arguments\n" ));
return PSaux_Err_Syntax_Error; return FT_THROW( Syntax_Error );
} }
/* if we are trying to load a composite glyph, do not load the */ /* if we are trying to load a composite glyph, do not load the */
@ -1545,10 +1545,10 @@
return error; return error;
Syntax_Error: Syntax_Error:
return PSaux_Err_Syntax_Error; return FT_THROW( Syntax_Error );
Stack_Underflow: Stack_Underflow:
return PSaux_Err_Stack_Underflow; return FT_THROW( Stack_Underflow );
} }
@ -1585,7 +1585,7 @@
{ {
FT_ERROR(( "t1_decoder_init:" FT_ERROR(( "t1_decoder_init:"
" the `psnames' module is not available\n" )); " the `psnames' module is not available\n" ));
return PSaux_Err_Unimplemented_Feature; return FT_THROW( Unimplemented_Feature );
} }
decoder->psnames = psnames; decoder->psnames = psnames;

View File

@ -823,7 +823,7 @@
break; break;
default: default:
hints->error = PSH_Err_Invalid_Argument; hints->error = FT_THROW( Invalid_Argument );
hints->hint_type = hint_type; hints->hint_type = hint_type;
FT_TRACE0(( "ps_hints_open: invalid charstring type\n" )); FT_TRACE0(( "ps_hints_open: invalid charstring type\n" ));
@ -938,7 +938,7 @@
else else
{ {
FT_ERROR(( "ps_hints_t1stem3: called with invalid hint type\n" )); FT_ERROR(( "ps_hints_t1stem3: called with invalid hint type\n" ));
error = PSH_Err_Invalid_Argument; error = FT_THROW( Invalid_Argument );
goto Fail; goto Fail;
} }
} }
@ -979,7 +979,7 @@
else else
{ {
/* invalid hint type */ /* invalid hint type */
error = PSH_Err_Invalid_Argument; error = FT_THROW( Invalid_Argument );
goto Fail; goto Fail;
} }
} }

View File

@ -4,7 +4,7 @@
/* */ /* */
/* PSNames module implementation (body). */ /* PSNames module implementation (body). */
/* */ /* */
/* Copyright 1996-2003, 2005-2008, 2012 by */ /* Copyright 1996-2003, 2005-2008, 2012, 2013 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */ /* */
/* This file is part of the FreeType project, and may only be used, */ /* This file is part of the FreeType project, and may only be used, */
@ -17,6 +17,7 @@
#include <ft2build.h> #include <ft2build.h>
#include FT_INTERNAL_DEBUG_H
#include FT_INTERNAL_OBJECTS_H #include FT_INTERNAL_OBJECTS_H
#include FT_SERVICE_POSTSCRIPT_CMAPS_H #include FT_SERVICE_POSTSCRIPT_CMAPS_H
@ -369,7 +370,7 @@
/* No unicode chars here! */ /* No unicode chars here! */
FT_FREE( table->maps ); FT_FREE( table->maps );
if ( !error ) if ( !error )
error = PSnames_Err_No_Unicode_Glyph_Name; error = FT_THROW( No_Unicode_Glyph_Name );
} }
else else
{ {

View File

@ -4,7 +4,7 @@
/* */ /* */
/* The FreeType glyph rasterizer (body). */ /* The FreeType glyph rasterizer (body). */
/* */ /* */
/* Copyright 1996-2003, 2005, 2007-2012 by */ /* Copyright 1996-2003, 2005, 2007-2013 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */ /* */
/* This file is part of the FreeType project, and may only be used, */ /* This file is part of the FreeType project, and may only be used, */
@ -179,6 +179,9 @@
#ifdef _STANDALONE_ #ifdef _STANDALONE_
/* Auxiliary macros for token concatenation. */
#define FT_ERR_XCAT( x, y ) x ## y
#define FT_ERR_CAT( x, y ) FT_ERR_XCAT( x, y )
/* This macro is used to indicate that a function parameter is unused. */ /* This macro is used to indicate that a function parameter is unused. */
/* Its purpose is simply to reduce compiler warnings. Note also that */ /* Its purpose is simply to reduce compiler warnings. Note also that */
@ -187,7 +190,7 @@
#define FT_UNUSED( x ) (x) = (x) #define FT_UNUSED( x ) (x) = (x)
/* Disable the tracing mechanism for simplicity -- developers can */ /* Disable the tracing mechanism for simplicity -- developers can */
/* activate it easily by redefining these two macros. */ /* activate it easily by redefining these macros. */
#ifndef FT_ERROR #ifndef FT_ERROR
#define FT_ERROR( x ) do { } while ( 0 ) /* nothing */ #define FT_ERROR( x ) do { } while ( 0 ) /* nothing */
#endif #endif
@ -198,6 +201,10 @@
#define FT_TRACE6( x ) do { } while ( 0 ) /* nothing */ #define FT_TRACE6( x ) do { } while ( 0 ) /* nothing */
#endif #endif
#ifndef FT_THROW
#define FT_THROW( e ) FT_ERR_CAT( Raster_Err_, e )
#endif
#define Raster_Err_None 0 #define Raster_Err_None 0
#define Raster_Err_Not_Ini -1 #define Raster_Err_Not_Ini -1
#define Raster_Err_Overflow -2 #define Raster_Err_Overflow -2
@ -224,7 +231,7 @@
#include FT_INTERNAL_OBJECTS_H #include FT_INTERNAL_OBJECTS_H
#include FT_INTERNAL_DEBUG_H /* for FT_TRACE() and FT_ERROR() */ #include FT_INTERNAL_DEBUG_H /* for FT_TRACE, FT_ERROR, and FT_THROW */
#include "rasterrs.h" #include "rasterrs.h"
@ -735,7 +742,7 @@
if ( ras.top >= ras.maxBuff ) if ( ras.top >= ras.maxBuff )
{ {
ras.error = Raster_Err_Overflow; ras.error = FT_THROW( Overflow );
return FAILURE; return FAILURE;
} }
@ -765,7 +772,7 @@
default: default:
FT_ERROR(( "New_Profile: invalid profile direction\n" )); FT_ERROR(( "New_Profile: invalid profile direction\n" ));
ras.error = Raster_Err_Invalid; ras.error = FT_THROW( Invalid );
return FAILURE; return FAILURE;
} }
@ -807,7 +814,7 @@
if ( h < 0 ) if ( h < 0 )
{ {
FT_ERROR(( "End_Profile: negative height encountered\n" )); FT_ERROR(( "End_Profile: negative height encountered\n" ));
ras.error = Raster_Err_Neg_Height; ras.error = FT_THROW( Neg_Height );
return FAILURE; return FAILURE;
} }
@ -840,7 +847,7 @@
if ( ras.top >= ras.maxBuff ) if ( ras.top >= ras.maxBuff )
{ {
FT_TRACE1(( "overflow in End_Profile\n" )); FT_TRACE1(( "overflow in End_Profile\n" ));
ras.error = Raster_Err_Overflow; ras.error = FT_THROW( Overflow );
return FAILURE; return FAILURE;
} }
@ -894,7 +901,7 @@
ras.maxBuff--; ras.maxBuff--;
if ( ras.maxBuff <= ras.top ) if ( ras.maxBuff <= ras.top )
{ {
ras.error = Raster_Err_Overflow; ras.error = FT_THROW( Overflow );
return FAILURE; return FAILURE;
} }
ras.numTurns++; ras.numTurns++;
@ -1145,7 +1152,7 @@
size = e2 - e1 + 1; size = e2 - e1 + 1;
if ( ras.top + size >= ras.maxBuff ) if ( ras.top + size >= ras.maxBuff )
{ {
ras.error = Raster_Err_Overflow; ras.error = FT_THROW( Overflow );
return FAILURE; return FAILURE;
} }
@ -1320,7 +1327,7 @@
if ( ( top + TRUNC( e2 - e ) + 1 ) >= ras.maxBuff ) if ( ( top + TRUNC( e2 - e ) + 1 ) >= ras.maxBuff )
{ {
ras.top = top; ras.top = top;
ras.error = Raster_Err_Overflow; ras.error = FT_THROW( Overflow );
return FAILURE; return FAILURE;
} }
@ -1995,7 +2002,7 @@
return SUCCESS; return SUCCESS;
Invalid_Outline: Invalid_Outline:
ras.error = Raster_Err_Invalid; ras.error = FT_THROW( Invalid );
Fail: Fail:
return FAILURE; return FAILURE;
@ -2964,7 +2971,7 @@
/* check the Y-turns */ /* check the Y-turns */
if ( ras.numTurns == 0 ) if ( ras.numTurns == 0 )
{ {
ras.error = Raster_Err_Invalid; ras.error = FT_THROW( Invalid );
return FAILURE; return FAILURE;
} }
@ -3205,7 +3212,7 @@
if ( ras.band_top >= 7 || k < i ) if ( ras.band_top >= 7 || k < i )
{ {
ras.band_top = 0; ras.band_top = 0;
ras.error = Raster_Err_Invalid; ras.error = FT_THROW( Invalid );
return ras.error; return ras.error;
} }
@ -3394,7 +3401,7 @@
{ {
FT_UNUSED_RASTER; FT_UNUSED_RASTER;
return Raster_Err_Unsupported; return FT_THROW( Unsupported );
} }
#endif /* !FT_RASTER_OPTION_ANTI_ALIASING */ #endif /* !FT_RASTER_OPTION_ANTI_ALIASING */
@ -3549,37 +3556,37 @@
if ( !raster || !raster->buffer || !raster->buffer_size ) if ( !raster || !raster->buffer || !raster->buffer_size )
return Raster_Err_Not_Ini; return FT_THROW( Not_Ini );
if ( !outline ) if ( !outline )
return Raster_Err_Invalid; return FT_THROW( Invalid );
/* return immediately if the outline is empty */ /* return immediately if the outline is empty */
if ( outline->n_points == 0 || outline->n_contours <= 0 ) if ( outline->n_points == 0 || outline->n_contours <= 0 )
return Raster_Err_None; return Raster_Err_None;
if ( !outline->contours || !outline->points ) if ( !outline->contours || !outline->points )
return Raster_Err_Invalid; return FT_THROW( Invalid );
if ( outline->n_points != if ( outline->n_points !=
outline->contours[outline->n_contours - 1] + 1 ) outline->contours[outline->n_contours - 1] + 1 )
return Raster_Err_Invalid; return FT_THROW( Invalid );
worker = raster->worker; worker = raster->worker;
/* this version of the raster does not support direct rendering, sorry */ /* this version of the raster does not support direct rendering, sorry */
if ( params->flags & FT_RASTER_FLAG_DIRECT ) if ( params->flags & FT_RASTER_FLAG_DIRECT )
return Raster_Err_Unsupported; return FT_THROW( Unsupported );
if ( !target_map ) if ( !target_map )
return Raster_Err_Invalid; return FT_THROW( Invalid );
/* nothing to do */ /* nothing to do */
if ( !target_map->width || !target_map->rows ) if ( !target_map->width || !target_map->rows )
return Raster_Err_None; return Raster_Err_None;
if ( !target_map->buffer ) if ( !target_map->buffer )
return Raster_Err_Invalid; return FT_THROW( Invalid );
ras.outline = *outline; ras.outline = *outline;
ras.target = *target_map; ras.target = *target_map;

View File

@ -4,7 +4,7 @@
/* */ /* */
/* The FreeType glyph rasterizer interface (body). */ /* The FreeType glyph rasterizer interface (body). */
/* */ /* */
/* Copyright 1996-2003, 2005, 2006, 2011 by */ /* Copyright 1996-2003, 2005, 2006, 2011, 2013 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */ /* */
/* This file is part of the FreeType project, and may only be used, */ /* This file is part of the FreeType project, and may only be used, */
@ -17,6 +17,7 @@
#include <ft2build.h> #include <ft2build.h>
#include FT_INTERNAL_DEBUG_H
#include FT_INTERNAL_OBJECTS_H #include FT_INTERNAL_OBJECTS_H
#include FT_OUTLINE_H #include FT_OUTLINE_H
#include "ftrend1.h" #include "ftrend1.h"
@ -66,7 +67,7 @@
if ( slot->format != render->glyph_format ) if ( slot->format != render->glyph_format )
{ {
error = Raster_Err_Invalid_Argument; error = FT_THROW( Invalid_Argument );
goto Exit; goto Exit;
} }
@ -114,7 +115,7 @@
/* check glyph image format */ /* check glyph image format */
if ( slot->format != render->glyph_format ) if ( slot->format != render->glyph_format )
{ {
error = Raster_Err_Invalid_Argument; error = FT_THROW( Invalid_Argument );
goto Exit; goto Exit;
} }
@ -124,13 +125,13 @@
{ {
/* raster1 is only capable of producing monochrome bitmaps */ /* raster1 is only capable of producing monochrome bitmaps */
if ( render->clazz == &ft_raster1_renderer_class ) if ( render->clazz == &ft_raster1_renderer_class )
return Raster_Err_Cannot_Render_Glyph; return FT_THROW( Cannot_Render_Glyph );
} }
else else
{ {
/* raster5 is only capable of producing 5-gray-levels bitmaps */ /* raster5 is only capable of producing 5-gray-levels bitmaps */
if ( render->clazz == &ft_raster5_renderer_class ) if ( render->clazz == &ft_raster5_renderer_class )
return Raster_Err_Cannot_Render_Glyph; return FT_THROW( Cannot_Render_Glyph );
} }
#else /* FT_CONFIG_OPTION_PIC */ #else /* FT_CONFIG_OPTION_PIC */
/* When PIC is enabled, we cannot get to the class object */ /* When PIC is enabled, we cannot get to the class object */
@ -142,13 +143,13 @@
{ {
/* raster1 is only capable of producing monochrome bitmaps */ /* raster1 is only capable of producing monochrome bitmaps */
if ( render->clazz->root.module_name[6] == '1' ) if ( render->clazz->root.module_name[6] == '1' )
return Raster_Err_Cannot_Render_Glyph; return FT_THROW( Cannot_Render_Glyph );
} }
else else
{ {
/* raster5 is only capable of producing 5-gray-levels bitmaps */ /* raster5 is only capable of producing 5-gray-levels bitmaps */
if ( render->clazz->root.module_name[6] == '5' ) if ( render->clazz->root.module_name[6] == '5' )
return Raster_Err_Cannot_Render_Glyph; return FT_THROW( Cannot_Render_Glyph );
} }
#endif /* FT_CONFIG_OPTION_PIC */ #endif /* FT_CONFIG_OPTION_PIC */
@ -179,7 +180,7 @@
if ( width > FT_USHORT_MAX || height > FT_USHORT_MAX ) if ( width > FT_USHORT_MAX || height > FT_USHORT_MAX )
{ {
error = Raster_Err_Invalid_Argument; error = FT_THROW( Invalid_Argument );
goto Exit; goto Exit;
} }

View File

@ -4,7 +4,7 @@
/* */ /* */
/* High-level SFNT driver interface (body). */ /* High-level SFNT driver interface (body). */
/* */ /* */
/* Copyright 1996-2007, 2009-2012 by */ /* Copyright 1996-2007, 2009-2013 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */ /* */
/* This file is part of the FreeType project, and may only be used, */ /* This file is part of the FreeType project, and may only be used, */
@ -119,14 +119,14 @@
FT_ULong *length ) FT_ULong *length )
{ {
if ( !offset || !length ) if ( !offset || !length )
return SFNT_Err_Invalid_Argument; return FT_THROW( Invalid_Argument );
if ( !tag ) if ( !tag )
*length = face->num_tables; *length = face->num_tables;
else else
{ {
if ( idx >= face->num_tables ) if ( idx >= face->num_tables )
return SFNT_Err_Table_Missing; return FT_THROW( Table_Missing );
*tag = face->dir_tables[idx].Tag; *tag = face->dir_tables[idx].Tag;
*offset = face->dir_tables[idx].Offset; *offset = face->dir_tables[idx].Offset;
@ -371,7 +371,7 @@
*acharset_registry = registry.u.atom; *acharset_registry = registry.u.atom;
} }
else else
error = SFNT_Err_Invalid_Argument; error = FT_THROW( Invalid_Argument );
} }
} }
@ -458,7 +458,7 @@
FT_UNUSED( face_index ); FT_UNUSED( face_index );
FT_UNUSED( header ); FT_UNUSED( header );
return SFNT_Err_Unimplemented_Feature; return FT_THROW( Unimplemented_Feature );
} }
@ -471,7 +471,7 @@
FT_UNUSED( stream ); FT_UNUSED( stream );
FT_UNUSED( header ); FT_UNUSED( header );
return SFNT_Err_Unimplemented_Feature; return FT_THROW( Unimplemented_Feature );
} }
@ -482,7 +482,7 @@
FT_UNUSED( face ); FT_UNUSED( face );
FT_UNUSED( stream ); FT_UNUSED( stream );
return SFNT_Err_Unimplemented_Feature; return FT_THROW( Unimplemented_Feature );
} }
@ -535,7 +535,7 @@
* is only there for some rogue clients which would want to call it * is only there for some rogue clients which would want to call it
* directly (which doesn't make much sense). * directly (which doesn't make much sense).
*/ */
return SFNT_Err_Unimplemented_Feature; return FT_THROW( Unimplemented_Feature );
} }
@ -556,7 +556,7 @@
FT_UNUSED( cmap ); FT_UNUSED( cmap );
FT_UNUSED( input ); FT_UNUSED( input );
return SFNT_Err_Unimplemented_Feature; return FT_THROW( Unimplemented_Feature );
} }

View File

@ -4,7 +4,7 @@
/* */ /* */
/* SFNT object management (base). */ /* SFNT object management (base). */
/* */ /* */
/* Copyright 1996-2008, 2010-2012 by */ /* Copyright 1996-2008, 2010-2013 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */ /* */
/* This file is part of the FreeType project, and may only be used, */ /* This file is part of the FreeType project, and may only be used, */
@ -386,7 +386,7 @@
tag != 0x00020000UL ) tag != 0x00020000UL )
{ {
FT_TRACE2(( " not a font using the SFNT container format\n" )); FT_TRACE2(( " not a font using the SFNT container format\n" ));
return SFNT_Err_Unknown_File_Format; return FT_THROW( Unknown_File_Format );
} }
face->ttc_header.tag = TTAG_ttcf; face->ttc_header.tag = TTAG_ttcf;
@ -402,7 +402,7 @@
return error; return error;
if ( face->ttc_header.count == 0 ) if ( face->ttc_header.count == 0 )
return SFNT_Err_Invalid_Table; return FT_THROW( Invalid_Table );
/* a rough size estimate: let's conservatively assume that there */ /* a rough size estimate: let's conservatively assume that there */
/* is just a single table info in each subfont header (12 + 16*1 = */ /* is just a single table info in each subfont header (12 + 16*1 = */
@ -410,7 +410,7 @@
/* size of the TTC header plus `28*count' bytes for all subfont */ /* size of the TTC header plus `28*count' bytes for all subfont */
/* headers */ /* headers */
if ( (FT_ULong)face->ttc_header.count > stream->size / ( 28 + 4 ) ) if ( (FT_ULong)face->ttc_header.count > stream->size / ( 28 + 4 ) )
return SFNT_Err_Array_Too_Large; return FT_THROW( Array_Too_Large );
/* now read the offsets of each font in the file */ /* now read the offsets of each font in the file */
if ( FT_NEW_ARRAY( face->ttc_header.offsets, face->ttc_header.count ) ) if ( FT_NEW_ARRAY( face->ttc_header.offsets, face->ttc_header.count ) )
@ -465,7 +465,7 @@
if ( !sfnt ) if ( !sfnt )
{ {
FT_ERROR(( "sfnt_init_face: cannot access `sfnt' module\n" )); FT_ERROR(( "sfnt_init_face: cannot access `sfnt' module\n" ));
return SFNT_Err_Missing_Module; return FT_THROW( Missing_Module );
} }
face->sfnt = sfnt; face->sfnt = sfnt;
@ -486,7 +486,7 @@
face_index = 0; face_index = 0;
if ( face_index >= face->ttc_header.count ) if ( face_index >= face->ttc_header.count )
return SFNT_Err_Invalid_Argument; return FT_THROW( Invalid_Argument );
if ( FT_STREAM_SEEK( face->ttc_header.offsets[face_index] ) ) if ( FT_STREAM_SEEK( face->ttc_header.offsets[face_index] ) )
return error; return error;
@ -628,7 +628,7 @@
if ( face->header.Units_Per_EM == 0 ) if ( face->header.Units_Per_EM == 0 )
{ {
error = SFNT_Err_Invalid_Table; error = FT_THROW( Invalid_Table );
goto Exit; goto Exit;
} }
@ -658,7 +658,7 @@
LOADM_( hmtx, 0 ); LOADM_( hmtx, 0 );
if ( error == SFNT_Err_Table_Missing ) if ( error == SFNT_Err_Table_Missing )
{ {
error = SFNT_Err_Hmtx_Table_Missing; error = FT_THROW( Hmtx_Table_Missing );
#ifdef FT_CONFIG_OPTION_INCREMENTAL #ifdef FT_CONFIG_OPTION_INCREMENTAL
/* If this is an incrementally loaded font and there are */ /* If this is an incrementally loaded font and there are */
@ -685,7 +685,7 @@
} }
else else
{ {
error = SFNT_Err_Horiz_Header_Missing; error = FT_THROW( Horiz_Header_Missing );
#ifdef FT_CONFIG_OPTION_INCREMENTAL #ifdef FT_CONFIG_OPTION_INCREMENTAL
/* If this is an incrementally loaded font and there are */ /* If this is an incrementally loaded font and there are */

View File

@ -4,7 +4,7 @@
/* */ /* */
/* TrueType and OpenType embedded BDF properties (body). */ /* TrueType and OpenType embedded BDF properties (body). */
/* */ /* */
/* Copyright 2005, 2006, 2010 by */ /* Copyright 2005, 2006, 2010, 2013 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */ /* */
/* This file is part of the FreeType project, and may only be used, */ /* This file is part of the FreeType project, and may only be used, */
@ -74,7 +74,7 @@
length < 8 || length < 8 ||
FT_FRAME_EXTRACT( length, bdf->table ) ) FT_FRAME_EXTRACT( length, bdf->table ) )
{ {
error = SFNT_Err_Invalid_Table; error = FT_THROW( Invalid_Table );
goto Exit; goto Exit;
} }
@ -131,7 +131,7 @@
BadTable: BadTable:
FT_FRAME_RELEASE( bdf->table ); FT_FRAME_RELEASE( bdf->table );
FT_ZERO( bdf ); FT_ZERO( bdf );
error = SFNT_Err_Invalid_Table; error = FT_THROW( Invalid_Table );
goto Exit; goto Exit;
} }

View File

@ -4,7 +4,7 @@
/* */ /* */
/* TrueType character mapping table (cmap) support (body). */ /* TrueType character mapping table (cmap) support (body). */
/* */ /* */
/* Copyright 2002-2010, 2012 by */ /* Copyright 2002-2010, 2012, 2013 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */ /* */
/* This file is part of the FreeType project, and may only be used, */ /* This file is part of the FreeType project, and may only be used, */
@ -3442,7 +3442,7 @@
if ( !p || p + 4 > limit ) if ( !p || p + 4 > limit )
return SFNT_Err_Invalid_Table; return FT_THROW( Invalid_Table );
/* only recognize format 0 */ /* only recognize format 0 */
if ( TT_NEXT_USHORT( p ) != 0 ) if ( TT_NEXT_USHORT( p ) != 0 )
@ -3451,7 +3451,7 @@
FT_ERROR(( "tt_face_build_cmaps:" FT_ERROR(( "tt_face_build_cmaps:"
" unsupported `cmap' table format = %d\n", " unsupported `cmap' table format = %d\n",
TT_PEEK_USHORT( p ) )); TT_PEEK_USHORT( p ) ));
return SFNT_Err_Invalid_Table; return FT_THROW( Invalid_Table );
} }
num_cmaps = TT_NEXT_USHORT( p ); num_cmaps = TT_NEXT_USHORT( p );

View File

@ -61,7 +61,7 @@
{ {
FT_ERROR(( "tt_face_load_kern:" FT_ERROR(( "tt_face_load_kern:"
" kerning table is too small - ignored\n" )); " kerning table is too small - ignored\n" ));
error = SFNT_Err_Table_Missing; error = FT_THROW( Table_Missing );
goto Exit; goto Exit;
} }

View File

@ -5,7 +5,7 @@
/* Load the basic TrueType tables, i.e., tables that can be either in */ /* Load the basic TrueType tables, i.e., tables that can be either in */
/* TTF or OTF fonts (body). */ /* TTF or OTF fonts (body). */
/* */ /* */
/* Copyright 1996-2010, 2012 by */ /* Copyright 1996-2010, 2012, 2013 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */ /* */
/* This file is part of the FreeType project, and may only be used, */ /* This file is part of the FreeType project, and may only be used, */
@ -142,7 +142,7 @@
goto Exit; goto Exit;
} }
else else
error = SFNT_Err_Table_Missing; error = FT_THROW( Table_Missing );
Exit: Exit:
return error; return error;
@ -237,7 +237,7 @@
if ( table.Length < 0x36 ) if ( table.Length < 0x36 )
{ {
FT_TRACE2(( "check_table_dir: `head' table too small\n" )); FT_TRACE2(( "check_table_dir: `head' table too small\n" ));
error = SFNT_Err_Table_Missing; error = FT_THROW( Table_Missing );
goto Exit; goto Exit;
} }
@ -249,7 +249,7 @@
{ {
FT_TRACE2(( "check_table_dir:" FT_TRACE2(( "check_table_dir:"
" no magic number found in `head' table\n")); " no magic number found in `head' table\n"));
error = SFNT_Err_Table_Missing; error = FT_THROW( Table_Missing );
goto Exit; goto Exit;
} }
@ -267,7 +267,7 @@
if ( sfnt->num_tables == 0 ) if ( sfnt->num_tables == 0 )
{ {
FT_TRACE2(( "check_table_dir: no tables found\n" )); FT_TRACE2(( "check_table_dir: no tables found\n" ));
error = SFNT_Err_Unknown_File_Format; error = FT_THROW( Unknown_File_Format );
goto Exit; goto Exit;
} }
@ -285,7 +285,7 @@
#else #else
FT_TRACE2(( " neither `head' nor `sing' table found\n" )); FT_TRACE2(( " neither `head' nor `sing' table found\n" ));
#endif #endif
error = SFNT_Err_Table_Missing; error = FT_THROW( Table_Missing );
} }
Exit: Exit:
@ -353,7 +353,7 @@
#if 0 #if 0
if ( sfnt.search_range != 1 << ( sfnt.entry_selector + 4 ) || if ( sfnt.search_range != 1 << ( sfnt.entry_selector + 4 ) ||
sfnt.search_range + sfnt.range_shift != sfnt.num_tables << 4 ) sfnt.search_range + sfnt.range_shift != sfnt.num_tables << 4 )
return SFNT_Err_Unknown_File_Format; return FT_THROW( Unknown_File_Format );
#endif #endif
/* load the table directory */ /* load the table directory */
@ -482,7 +482,7 @@
table = tt_face_lookup_table( face, tag ); table = tt_face_lookup_table( face, tag );
if ( !table ) if ( !table )
{ {
error = SFNT_Err_Table_Missing; error = FT_THROW( Table_Missing );
goto Exit; goto Exit;
} }
@ -801,7 +801,7 @@
if ( storage_start > storage_limit ) if ( storage_start > storage_limit )
{ {
FT_ERROR(( "tt_face_load_name: invalid `name' table\n" )); FT_ERROR(( "tt_face_load_name: invalid `name' table\n" ));
error = SFNT_Err_Name_Table_Missing; error = FT_THROW( Name_Table_Missing );
goto Exit; goto Exit;
} }
@ -1235,7 +1235,7 @@
if ( face->gasp.version >= 2 ) if ( face->gasp.version >= 2 )
{ {
face->gasp.numRanges = 0; face->gasp.numRanges = 0;
error = SFNT_Err_Invalid_Table; error = FT_THROW( Invalid_Table );
goto Exit; goto Exit;
} }

View File

@ -4,7 +4,7 @@
/* */ /* */
/* Load the metrics tables common to TTF and OTF fonts (body). */ /* Load the metrics tables common to TTF and OTF fonts (body). */
/* */ /* */
/* Copyright 2006-2009, 2011-2012 by */ /* Copyright 2006-2009, 2011-2013 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */ /* */
/* This file is part of the FreeType project, and may only be used, */ /* This file is part of the FreeType project, and may only be used, */
@ -167,8 +167,8 @@
/* Adobe simply ignores this problem. So we shall do the same. */ /* Adobe simply ignores this problem. So we shall do the same. */
#if 0 #if 0
error = vertical ? SFNT_Err_Invalid_Vert_Metrics error = vertical ? FT_THROW( Invalid_Vert_Metrics )
: SFNT_Err_Invalid_Horiz_Metrics; : FT_THROW( Invalid_Horiz_Metrics );
goto Exit; goto Exit;
#else #else
num_shorts = 0; num_shorts = 0;

View File

@ -5,7 +5,7 @@
/* Postcript name table processing for TrueType and OpenType fonts */ /* Postcript name table processing for TrueType and OpenType fonts */
/* (body). */ /* (body). */
/* */ /* */
/* Copyright 1996-2001, 2002, 2003, 2006, 2007, 2008, 2009, 2010 by */ /* Copyright 1996-2003, 2006-2010, 2013 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */ /* */
/* This file is part of the FreeType project, and may only be used, */ /* This file is part of the FreeType project, and may only be used, */
@ -178,7 +178,7 @@
if ( num_glyphs > face->max_profile.numGlyphs ) if ( num_glyphs > face->max_profile.numGlyphs )
{ {
error = SFNT_Err_Invalid_File_Format; error = FT_THROW( Invalid_File_Format );
goto Exit; goto Exit;
} }
@ -325,7 +325,7 @@
/* check the number of glyphs */ /* check the number of glyphs */
if ( num_glyphs > face->max_profile.numGlyphs || num_glyphs > 258 ) if ( num_glyphs > face->max_profile.numGlyphs || num_glyphs > 258 )
{ {
error = SFNT_Err_Invalid_File_Format; error = FT_THROW( Invalid_File_Format );
goto Exit; goto Exit;
} }
@ -345,7 +345,7 @@
if ( idx < 0 || idx > num_glyphs ) if ( idx < 0 || idx > num_glyphs )
{ {
error = SFNT_Err_Invalid_File_Format; error = FT_THROW( Invalid_File_Format );
goto Fail; goto Fail;
} }
} }
@ -402,7 +402,7 @@
else if ( format == 0x00028000L ) else if ( format == 0x00028000L )
error = load_format_25( face, stream, post_limit ); error = load_format_25( face, stream, post_limit );
else else
error = SFNT_Err_Invalid_File_Format; error = FT_THROW( Invalid_File_Format );
face->postscript_names.loaded = 1; face->postscript_names.loaded = 1;
@ -488,15 +488,15 @@
if ( !face ) if ( !face )
return SFNT_Err_Invalid_Face_Handle; return FT_THROW( Invalid_Face_Handle );
if ( idx >= (FT_UInt)face->max_profile.numGlyphs ) if ( idx >= (FT_UInt)face->max_profile.numGlyphs )
return SFNT_Err_Invalid_Glyph_Index; return FT_THROW( Invalid_Glyph_Index );
#ifdef FT_CONFIG_OPTION_POSTSCRIPT_NAMES #ifdef FT_CONFIG_OPTION_POSTSCRIPT_NAMES
psnames = (FT_Service_PsCMaps)face->psnames; psnames = (FT_Service_PsCMaps)face->psnames;
if ( !psnames ) if ( !psnames )
return SFNT_Err_Unimplemented_Feature; return FT_THROW( Unimplemented_Feature );
#endif #endif
names = &face->postscript_names; names = &face->postscript_names;

View File

@ -4,8 +4,7 @@
/* */ /* */
/* TrueType and OpenType embedded bitmap support (body). */ /* TrueType and OpenType embedded bitmap support (body). */
/* */ /* */
/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, */ /* Copyright 1996-2010, 2013 by */
/* 2010 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */ /* */
/* This file is part of the FreeType project, and may only be used, */ /* This file is part of the FreeType project, and may only be used, */
@ -353,7 +352,7 @@
if ( range->last_glyph < range->first_glyph ) if ( range->last_glyph < range->first_glyph )
{ {
error = SFNT_Err_Invalid_File_Format; error = FT_THROW( Invalid_File_Format );
goto Exit; goto Exit;
} }
@ -390,7 +389,7 @@
break; break;
default: default:
error = SFNT_Err_Invalid_File_Format; error = FT_THROW( Invalid_File_Format );
} }
Exit: Exit:
@ -496,7 +495,7 @@
num_strikes >= 0x10000L ) num_strikes >= 0x10000L )
{ {
FT_ERROR(( "tt_face_load_sbit_strikes: invalid table version\n" )); FT_ERROR(( "tt_face_load_sbit_strikes: invalid table version\n" ));
error = SFNT_Err_Invalid_File_Format; error = FT_THROW( Invalid_File_Format );
goto Exit; goto Exit;
} }
@ -662,7 +661,7 @@
if ( strike_index >= face->num_sbit_strikes ) if ( strike_index >= face->num_sbit_strikes )
return SFNT_Err_Invalid_Argument; return FT_THROW( Invalid_Argument );
strike = face->sbit_strikes + strike_index; strike = face->sbit_strikes + strike_index;
@ -782,7 +781,7 @@
*arange = 0; *arange = 0;
*aglyph_offset = 0; *aglyph_offset = 0;
return SFNT_Err_Invalid_Argument; return FT_THROW( Invalid_Argument );
} }
@ -847,7 +846,7 @@
*astrike = 0; *astrike = 0;
*aglyph_offset = 0; *aglyph_offset = 0;
return SFNT_Err_Invalid_Argument; return FT_THROW( Invalid_Argument );
} }
@ -942,7 +941,7 @@
if ( range->index_format == 2 || range->index_format == 5 ) if ( range->index_format == 2 || range->index_format == 5 )
*metrics = range->metrics; *metrics = range->metrics;
else else
return SFNT_Err_Invalid_File_Format; return FT_THROW( Invalid_File_Format );
} }
Exit: Exit:
@ -1171,7 +1170,7 @@
if ( x_offset < 0 || x_offset + metrics->width > map->width || if ( x_offset < 0 || x_offset + metrics->width > map->width ||
y_offset < 0 || y_offset + metrics->height > map->rows ) y_offset < 0 || y_offset + metrics->height > map->rows )
{ {
error = SFNT_Err_Invalid_Argument; error = FT_THROW( Invalid_Argument );
goto Exit; goto Exit;
} }
@ -1221,7 +1220,7 @@
break; break;
default: /* invalid format */ default: /* invalid format */
return SFNT_Err_Invalid_File_Format; return FT_THROW( Invalid_File_Format );
} }
/* Now read data and draw glyph into target pixmap */ /* Now read data and draw glyph into target pixmap */
@ -1301,7 +1300,7 @@
break; break;
default: default:
return SFNT_Err_Invalid_File_Format; return FT_THROW( Invalid_File_Format );
} }
size = map->rows * map->pitch; size = map->rows * map->pitch;
@ -1328,7 +1327,7 @@
case 8: /* compound format */ case 8: /* compound format */
if ( FT_STREAM_SKIP( 1L ) ) if ( FT_STREAM_SKIP( 1L ) )
{ {
error = SFNT_Err_Invalid_Stream_Skip; error = FT_THROW( Invalid_Stream_Skip );
goto Exit; goto Exit;
} }
/* fallthrough */ /* fallthrough */
@ -1337,7 +1336,7 @@
break; break;
default: /* invalid image format */ default: /* invalid image format */
return SFNT_Err_Invalid_File_Format; return FT_THROW( Invalid_File_Format );
} }
/* All right, we have a compound format. First of all, read */ /* All right, we have a compound format. First of all, read */

View File

@ -63,7 +63,7 @@
if ( table_size < 8 ) if ( table_size < 8 )
{ {
FT_ERROR(( "tt_face_load_sbit_strikes: table too short\n" )); FT_ERROR(( "tt_face_load_sbit_strikes: table too short\n" ));
error = SFNT_Err_Invalid_File_Format; error = FT_THROW( Invalid_File_Format );
goto Exit; goto Exit;
} }
@ -81,7 +81,7 @@
if ( version != 0x00020000UL || num_strikes >= 0x10000UL ) if ( version != 0x00020000UL || num_strikes >= 0x10000UL )
{ {
FT_ERROR(( "tt_face_load_sbit_strikes: invalid table version\n" )); FT_ERROR(( "tt_face_load_sbit_strikes: invalid table version\n" ));
error = SFNT_Err_Invalid_File_Format; error = FT_THROW( Invalid_File_Format );
goto Fail; goto Fail;
} }
@ -136,7 +136,7 @@
if ( strike_index >= (FT_ULong)face->sbit_num_strikes ) if ( strike_index >= (FT_ULong)face->sbit_num_strikes )
return SFNT_Err_Invalid_Argument; return FT_THROW( Invalid_Argument );
strike = face->sbit_table + 8 + strike_index * 48; strike = face->sbit_table + 8 + strike_index * 48;
@ -216,7 +216,7 @@
if ( 8 + 48 * strike_index + 3 * 4 + 34 + 1 > face->sbit_table_size ) if ( 8 + 48 * strike_index + 3 * 4 + 34 + 1 > face->sbit_table_size )
{ {
error = SFNT_Err_Invalid_File_Format; error = FT_THROW( Invalid_File_Format );
goto Exit; goto Exit;
} }
@ -231,7 +231,7 @@
if ( decoder->strike_index_array > face->sbit_table_size || if ( decoder->strike_index_array > face->sbit_table_size ||
decoder->strike_index_array + 8 * decoder->strike_index_count > decoder->strike_index_array + 8 * decoder->strike_index_count >
face->sbit_table_size ) face->sbit_table_size )
error = SFNT_Err_Invalid_File_Format; error = FT_THROW( Invalid_File_Format );
} }
Exit: Exit:
@ -257,7 +257,7 @@
if ( !decoder->metrics_loaded ) if ( !decoder->metrics_loaded )
{ {
error = SFNT_Err_Invalid_Argument; error = FT_THROW( Invalid_Argument );
goto Exit; goto Exit;
} }
@ -290,7 +290,7 @@
break; break;
default: default:
error = SFNT_Err_Invalid_File_Format; error = FT_THROW( Invalid_File_Format );
goto Exit; goto Exit;
} }
@ -348,7 +348,7 @@
return SFNT_Err_Ok; return SFNT_Err_Ok;
Fail: Fail:
return SFNT_Err_Invalid_Argument; return FT_THROW( Invalid_Argument );
} }
@ -401,13 +401,13 @@
if ( x_pos < 0 || x_pos + width > bit_width || if ( x_pos < 0 || x_pos + width > bit_width ||
y_pos < 0 || y_pos + height > bit_height ) y_pos < 0 || y_pos + height > bit_height )
{ {
error = SFNT_Err_Invalid_File_Format; error = FT_THROW( Invalid_File_Format );
goto Exit; goto Exit;
} }
if ( p + ( ( line_bits + 7 ) >> 3 ) * height > limit ) if ( p + ( ( line_bits + 7 ) >> 3 ) * height > limit )
{ {
error = SFNT_Err_Invalid_File_Format; error = FT_THROW( Invalid_File_Format );
goto Exit; goto Exit;
} }
@ -542,13 +542,13 @@
if ( x_pos < 0 || x_pos + width > bit_width || if ( x_pos < 0 || x_pos + width > bit_width ||
y_pos < 0 || y_pos + height > bit_height ) y_pos < 0 || y_pos + height > bit_height )
{ {
error = SFNT_Err_Invalid_File_Format; error = FT_THROW( Invalid_File_Format );
goto Exit; goto Exit;
} }
if ( p + ( ( line_bits * height + 7 ) >> 3 ) > limit ) if ( p + ( ( line_bits * height + 7 ) >> 3 ) > limit )
{ {
error = SFNT_Err_Invalid_File_Format; error = FT_THROW( Invalid_File_Format );
goto Exit; goto Exit;
} }
@ -690,7 +690,7 @@
return error; return error;
Fail: Fail:
error = SFNT_Err_Invalid_File_Format; error = FT_THROW( Invalid_File_Format );
goto Exit; goto Exit;
} }
@ -713,7 +713,7 @@
/* seek into the EBDT table now */ /* seek into the EBDT table now */
if ( glyph_start + glyph_size > decoder->ebdt_size ) if ( glyph_start + glyph_size > decoder->ebdt_size )
{ {
error = SFNT_Err_Invalid_Argument; error = FT_THROW( Invalid_Argument );
goto Exit; goto Exit;
} }
@ -972,10 +972,10 @@
y_pos ); y_pos );
Failure: Failure:
return SFNT_Err_Invalid_Table; return FT_THROW( Invalid_Table );
NoBitmap: NoBitmap:
return SFNT_Err_Invalid_Argument; return FT_THROW( Invalid_Argument );
} }

View File

@ -4,7 +4,7 @@
/* */ /* */
/* A new `perfect' anti-aliasing renderer (body). */ /* A new `perfect' anti-aliasing renderer (body). */
/* */ /* */
/* Copyright 2000-2003, 2005-2012 by */ /* Copyright 2000-2003, 2005-2013 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */ /* */
/* This file is part of the FreeType project, and may only be used, */ /* This file is part of the FreeType project, and may only be used, */
@ -94,6 +94,11 @@
#ifdef _STANDALONE_ #ifdef _STANDALONE_
/* Auxiliary macros for token concatenation. */
#define FT_ERR_XCAT( x, y ) x ## y
#define FT_ERR_CAT( x, y ) FT_ERR_XCAT( x, y )
/* define this to dump debugging information */ /* define this to dump debugging information */
/* #define FT_DEBUG_LEVEL_TRACE */ /* #define FT_DEBUG_LEVEL_TRACE */
@ -154,6 +159,21 @@ typedef ptrdiff_t FT_PtrDist;
va_end( ap ); va_end( ap );
} }
/* empty function useful for setting a breakpoint to catch errors */
int
FT_Throw( int error,
int line,
const char* file )
{
FT_UNUSED( error );
FT_UNUSED( line );
FT_UNUSED( file );
return 0;
}
/* we don't handle tracing levels in stand-alone mode; */ /* we don't handle tracing levels in stand-alone mode; */
#ifndef FT_TRACE5 #ifndef FT_TRACE5
#define FT_TRACE5( varformat ) FT_Message varformat #define FT_TRACE5( varformat ) FT_Message varformat
@ -165,11 +185,19 @@ typedef ptrdiff_t FT_PtrDist;
#define FT_ERROR( varformat ) FT_Message varformat #define FT_ERROR( varformat ) FT_Message varformat
#endif #endif
#define FT_THROW( e ) \
( FT_Throw( FT_ERR_CAT( ErrRaster, e ), \
__LINE__, \
__FILE__ ) | \
FT_ERR_CAT( ErrRaster, e ) )
#else /* !FT_DEBUG_LEVEL_TRACE */ #else /* !FT_DEBUG_LEVEL_TRACE */
#define FT_TRACE5( x ) do { } while ( 0 ) /* nothing */ #define FT_TRACE5( x ) do { } while ( 0 ) /* nothing */
#define FT_TRACE7( x ) do { } while ( 0 ) /* nothing */ #define FT_TRACE7( x ) do { } while ( 0 ) /* nothing */
#define FT_ERROR( x ) do { } while ( 0 ) /* nothing */ #define FT_ERROR( x ) do { } while ( 0 ) /* nothing */
#define FT_THROW( e ) FT_ERR_CAT( ErrRaster_, e )
#endif /* !FT_DEBUG_LEVEL_TRACE */ #endif /* !FT_DEBUG_LEVEL_TRACE */
@ -202,6 +230,7 @@ typedef ptrdiff_t FT_PtrDist;
raster_done_ \ raster_done_ \
}; };
#else /* !_STANDALONE_ */ #else /* !_STANDALONE_ */
@ -215,13 +244,14 @@ typedef ptrdiff_t FT_PtrDist;
#include "ftspic.h" #include "ftspic.h"
#define ErrRaster_Invalid_Mode Smooth_Err_Cannot_Render_Glyph #define Smooth_Err_Invalid_Mode Smooth_Err_Cannot_Render_Glyph
#define ErrRaster_Invalid_Outline Smooth_Err_Invalid_Outline #define Smooth_Err_Memory_Overflow Smooth_Err_Out_Of_Memory
#define ErrRaster_Memory_Overflow Smooth_Err_Out_Of_Memory #define ErrRaster_Memory_Overflow Smooth_Err_Out_Of_Memory
#define ErrRaster_Invalid_Argument Smooth_Err_Invalid_Argument
#endif /* !_STANDALONE_ */ #endif /* !_STANDALONE_ */
#ifndef FT_MEM_SET #ifndef FT_MEM_SET
#define FT_MEM_SET( d, s, c ) ft_memset( d, s, c ) #define FT_MEM_SET( d, s, c ) ft_memset( d, s, c )
#endif #endif
@ -1486,7 +1516,7 @@ typedef ptrdiff_t FT_PtrDist;
if ( !outline || !func_interface ) if ( !outline || !func_interface )
return ErrRaster_Invalid_Argument; return FT_THROW( Invalid_Argument );
shift = func_interface->shift; shift = func_interface->shift;
delta = func_interface->delta; delta = func_interface->delta;
@ -1699,7 +1729,7 @@ typedef ptrdiff_t FT_PtrDist;
return error; return error;
Invalid_Outline: Invalid_Outline:
return ErrRaster_Invalid_Outline; return FT_THROW( Invalid_Outline );
} }
#endif /* _STANDALONE_ */ #endif /* _STANDALONE_ */
@ -1737,7 +1767,7 @@ typedef ptrdiff_t FT_PtrDist;
gray_record_cell( RAS_VAR ); gray_record_cell( RAS_VAR );
} }
else else
error = ErrRaster_Memory_Overflow; error = FT_THROW( Memory_Overflow );
return error; return error;
} }
@ -1890,21 +1920,21 @@ typedef ptrdiff_t FT_PtrDist;
if ( !raster || !raster->buffer || !raster->buffer_size ) if ( !raster || !raster->buffer || !raster->buffer_size )
return ErrRaster_Invalid_Argument; return FT_THROW( Invalid_Argument );
if ( !outline ) if ( !outline )
return ErrRaster_Invalid_Outline; return FT_THROW( Invalid_Outline );
/* return immediately if the outline is empty */ /* return immediately if the outline is empty */
if ( outline->n_points == 0 || outline->n_contours <= 0 ) if ( outline->n_points == 0 || outline->n_contours <= 0 )
return 0; return 0;
if ( !outline->contours || !outline->points ) if ( !outline->contours || !outline->points )
return ErrRaster_Invalid_Outline; return FT_THROW( Invalid_Outline );
if ( outline->n_points != if ( outline->n_points !=
outline->contours[outline->n_contours - 1] + 1 ) outline->contours[outline->n_contours - 1] + 1 )
return ErrRaster_Invalid_Outline; return FT_THROW( Invalid_Outline );
worker = raster->worker; worker = raster->worker;
@ -1912,19 +1942,19 @@ typedef ptrdiff_t FT_PtrDist;
if ( !( params->flags & FT_RASTER_FLAG_DIRECT ) ) if ( !( params->flags & FT_RASTER_FLAG_DIRECT ) )
{ {
if ( !target_map ) if ( !target_map )
return ErrRaster_Invalid_Argument; return FT_THROW( Invalid_Argument );
/* nothing to do */ /* nothing to do */
if ( !target_map->width || !target_map->rows ) if ( !target_map->width || !target_map->rows )
return 0; return 0;
if ( !target_map->buffer ) if ( !target_map->buffer )
return ErrRaster_Invalid_Argument; return FT_THROW( Invalid_Argument );
} }
/* this version does not support monochrome rendering */ /* this version does not support monochrome rendering */
if ( !( params->flags & FT_RASTER_FLAG_AA ) ) if ( !( params->flags & FT_RASTER_FLAG_AA ) )
return ErrRaster_Invalid_Mode; return FT_THROW( Invalid_Mode );
/* compute clipping box */ /* compute clipping box */
if ( !( params->flags & FT_RASTER_FLAG_DIRECT ) ) if ( !( params->flags & FT_RASTER_FLAG_DIRECT ) )

View File

@ -4,7 +4,7 @@
/* */ /* */
/* Anti-aliasing renderer interface (body). */ /* Anti-aliasing renderer interface (body). */
/* */ /* */
/* Copyright 2000-2006, 2009-2012 by */ /* Copyright 2000-2006, 2009-2013 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */ /* */
/* This file is part of the FreeType project, and may only be used, */ /* This file is part of the FreeType project, and may only be used, */
@ -66,7 +66,7 @@
if ( slot->format != render->glyph_format ) if ( slot->format != render->glyph_format )
{ {
error = Smooth_Err_Invalid_Argument; error = FT_THROW( Invalid_Argument );
goto Exit; goto Exit;
} }
@ -125,14 +125,14 @@
/* check glyph image format */ /* check glyph image format */
if ( slot->format != render->glyph_format ) if ( slot->format != render->glyph_format )
{ {
error = Smooth_Err_Invalid_Argument; error = FT_THROW( Invalid_Argument );
goto Exit; goto Exit;
} }
/* check mode */ /* check mode */
if ( mode != required_mode ) if ( mode != required_mode )
{ {
error = Smooth_Err_Cannot_Render_Glyph; error = FT_THROW( Cannot_Render_Glyph );
goto Exit; goto Exit;
} }
@ -158,7 +158,7 @@
FT_ERROR(( "ft_smooth_render_generic: glyph too large:" FT_ERROR(( "ft_smooth_render_generic: glyph too large:"
" xMin = %d, xMax = %d\n", " xMin = %d, xMax = %d\n",
cbox.xMin >> 6, cbox.xMax >> 6 )); cbox.xMin >> 6, cbox.xMax >> 6 ));
error = Smooth_Err_Raster_Overflow; error = FT_THROW( Raster_Overflow );
goto Exit; goto Exit;
} }
else else
@ -169,7 +169,7 @@
FT_ERROR(( "ft_smooth_render_generic: glyph too large:" FT_ERROR(( "ft_smooth_render_generic: glyph too large:"
" yMin = %d, yMax = %d\n", " yMin = %d, yMax = %d\n",
cbox.yMin >> 6, cbox.yMax >> 6 )); cbox.yMin >> 6, cbox.yMax >> 6 ));
error = Smooth_Err_Raster_Overflow; error = FT_THROW( Raster_Overflow );
goto Exit; goto Exit;
} }
else else
@ -239,7 +239,7 @@
{ {
FT_ERROR(( "ft_smooth_render_generic: glyph too large: %u x %u\n", FT_ERROR(( "ft_smooth_render_generic: glyph too large: %u x %u\n",
width, height )); width, height ));
error = Smooth_Err_Raster_Overflow; error = FT_THROW( Raster_Overflow );
goto Exit; goto Exit;
} }
@ -373,7 +373,7 @@
*/ */
if ( x_left > FT_INT_MAX || y_top > FT_INT_MAX ) if ( x_left > FT_INT_MAX || y_top > FT_INT_MAX )
{ {
error = Smooth_Err_Invalid_Pixel_Size; error = FT_THROW( Invalid_Pixel_Size );
goto Exit; goto Exit;
} }

View File

@ -4,7 +4,7 @@
/* */ /* */
/* TrueType font driver implementation (body). */ /* TrueType font driver implementation (body). */
/* */ /* */
/* Copyright 1996-2012 by */ /* Copyright 1996-2013 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */ /* */
/* This file is part of the FreeType project, and may only be used, */ /* This file is part of the FreeType project, and may only be used, */
@ -294,13 +294,13 @@
if ( !slot ) if ( !slot )
return TT_Err_Invalid_Slot_Handle; return FT_THROW( Invalid_Slot_Handle );
if ( !size ) if ( !size )
return TT_Err_Invalid_Size_Handle; return FT_THROW( Invalid_Size_Handle );
if ( !face ) if ( !face )
return TT_Err_Invalid_Argument; return FT_THROW( Invalid_Argument );
#ifdef FT_CONFIG_OPTION_INCREMENTAL #ifdef FT_CONFIG_OPTION_INCREMENTAL
if ( glyph_index >= (FT_UInt)face->num_glyphs && if ( glyph_index >= (FT_UInt)face->num_glyphs &&
@ -308,7 +308,7 @@
#else #else
if ( glyph_index >= (FT_UInt)face->num_glyphs ) if ( glyph_index >= (FT_UInt)face->num_glyphs )
#endif #endif
return TT_Err_Invalid_Argument; return FT_THROW( Invalid_Argument );
if ( load_flags & FT_LOAD_NO_HINTING ) if ( load_flags & FT_LOAD_NO_HINTING )
{ {

View File

@ -314,7 +314,7 @@
if ( p + 10 > limit ) if ( p + 10 > limit )
return TT_Err_Invalid_Outline; return FT_THROW( Invalid_Outline );
loader->n_contours = FT_NEXT_SHORT( p ); loader->n_contours = FT_NEXT_SHORT( p );
@ -415,14 +415,14 @@
{ {
FT_TRACE0(( "TT_Load_Simple_Glyph: too many instructions (%d)\n", FT_TRACE0(( "TT_Load_Simple_Glyph: too many instructions (%d)\n",
n_ins )); n_ins ));
error = TT_Err_Too_Many_Hints; error = FT_THROW( Too_Many_Hints );
goto Fail; goto Fail;
} }
if ( ( limit - p ) < n_ins ) if ( ( limit - p ) < n_ins )
{ {
FT_TRACE0(( "TT_Load_Simple_Glyph: instruction count mismatch\n" )); FT_TRACE0(( "TT_Load_Simple_Glyph: instruction count mismatch\n" ));
error = TT_Err_Too_Many_Hints; error = FT_THROW( Too_Many_Hints );
goto Fail; goto Fail;
} }
@ -552,7 +552,7 @@
return error; return error;
Invalid_Outline: Invalid_Outline:
error = TT_Err_Invalid_Outline; error = FT_THROW( Invalid_Outline );
goto Fail; goto Fail;
} }
@ -673,7 +673,7 @@
return error; return error;
Invalid_Composite: Invalid_Composite:
error = TT_Err_Invalid_Composite; error = FT_THROW( Invalid_Composite );
goto Fail; goto Fail;
} }
@ -1024,7 +1024,7 @@
l += num_base_points; l += num_base_points;
if ( k >= num_base_points || if ( k >= num_base_points ||
l >= num_points ) l >= num_points )
return TT_Err_Invalid_Composite; return FT_THROW( Invalid_Composite );
p1 = gloader->base.outline.points + k; p1 = gloader->base.outline.points + k;
p2 = gloader->base.outline.points + l; p2 = gloader->base.outline.points + l;
@ -1187,7 +1187,7 @@
FT_TRACE1(( "TT_Process_Composite_Glyph: " FT_TRACE1(( "TT_Process_Composite_Glyph: "
"too many instructions (%d) for glyph with length %d\n", "too many instructions (%d) for glyph with length %d\n",
n_ins, loader->byte_len )); n_ins, loader->byte_len ));
return TT_Err_Too_Many_Hints; return FT_THROW( Too_Many_Hints );
} }
tmp = loader->exec->glyphSize; tmp = loader->exec->glyphSize;
@ -1280,14 +1280,14 @@
if ( recurse_count > 1 && if ( recurse_count > 1 &&
recurse_count > face->max_profile.maxComponentDepth ) recurse_count > face->max_profile.maxComponentDepth )
{ {
error = TT_Err_Invalid_Composite; error = FT_THROW( Invalid_Composite );
goto Exit; goto Exit;
} }
/* check glyph index */ /* check glyph index */
if ( glyph_index >= (FT_UInt)face->root.num_glyphs ) if ( glyph_index >= (FT_UInt)face->root.num_glyphs )
{ {
error = TT_Err_Invalid_Glyph_Index; error = FT_THROW( Invalid_Glyph_Index );
goto Exit; goto Exit;
} }
@ -1351,7 +1351,7 @@
#endif /* FT_CONFIG_OPTION_INCREMENTAL */ #endif /* FT_CONFIG_OPTION_INCREMENTAL */
{ {
FT_TRACE2(( "no `glyf' table but non-zero `loca' entry\n" )); FT_TRACE2(( "no `glyf' table but non-zero `loca' entry\n" ));
error = TT_Err_Invalid_Table; error = FT_THROW( Invalid_Table );
goto Exit; goto Exit;
} }
@ -1632,7 +1632,7 @@
else else
{ {
/* invalid composite count (negative but not -1) */ /* invalid composite count (negative but not -1) */
error = TT_Err_Invalid_Outline; error = FT_THROW( Invalid_Outline );
goto Exit; goto Exit;
} }
@ -1933,7 +1933,7 @@
exec = size->debug ? size->context exec = size->debug ? size->context
: ( (TT_Driver)FT_FACE_DRIVER( face ) )->context; : ( (TT_Driver)FT_FACE_DRIVER( face ) )->context;
if ( !exec ) if ( !exec )
return TT_Err_Could_Not_Find_Context; return FT_THROW( Could_Not_Find_Context );
#ifdef TT_CONFIG_OPTION_SUBPIXEL_HINTING #ifdef TT_CONFIG_OPTION_SUBPIXEL_HINTING
@ -2076,7 +2076,7 @@
FT_Error error = face->goto_table( face, TTAG_glyf, stream, 0 ); FT_Error error = face->goto_table( face, TTAG_glyf, stream, 0 );
if ( error == TT_Err_Table_Missing ) if ( FT_ERROR_BASE( error ) == FT_Err_Table_Missing )
loader->glyf_offset = 0; loader->glyf_offset = 0;
else if ( error ) else if ( error )
{ {
@ -2177,10 +2177,10 @@
/* if FT_LOAD_NO_SCALE is not set, `ttmetrics' must be valid */ /* if FT_LOAD_NO_SCALE is not set, `ttmetrics' must be valid */
if ( !( load_flags & FT_LOAD_NO_SCALE ) && !size->ttmetrics.valid ) if ( !( load_flags & FT_LOAD_NO_SCALE ) && !size->ttmetrics.valid )
return TT_Err_Invalid_Size_Handle; return FT_THROW( Invalid_Size_Handle );
if ( load_flags & FT_LOAD_SBITS_ONLY ) if ( load_flags & FT_LOAD_SBITS_ONLY )
return TT_Err_Invalid_Argument; return FT_THROW( Invalid_Argument );
error = tt_loader_init( &loader, size, glyph, load_flags, FALSE ); error = tt_loader_init( &loader, size, glyph, load_flags, FALSE );
if ( error ) if ( error )

View File

@ -4,7 +4,7 @@
/* */ /* */
/* TrueType GX Font Variation loader */ /* TrueType GX Font Variation loader */
/* */ /* */
/* Copyright 2004-2012 by */ /* Copyright 2004-2013 by */
/* David Turner, Robert Wilhelm, Werner Lemberg, and George Williams. */ /* David Turner, Robert Wilhelm, Werner Lemberg, and George Williams. */
/* */ /* */
/* This file is part of the FreeType project, and may only be used, */ /* This file is part of the FreeType project, and may only be used, */
@ -412,7 +412,7 @@
if ( gvar_head.version != (FT_Long)0x00010000L || if ( gvar_head.version != (FT_Long)0x00010000L ||
gvar_head.axisCount != (FT_UShort)blend->mmvar->num_axis ) gvar_head.axisCount != (FT_UShort)blend->mmvar->num_axis )
{ {
error = TT_Err_Invalid_Table; error = FT_THROW( Invalid_Table );
goto Exit; goto Exit;
} }
@ -681,7 +681,7 @@
fvar_head.offsetToData + fvar_head.axisCount * 20U + fvar_head.offsetToData + fvar_head.axisCount * 20U +
fvar_head.instanceCount * fvar_head.instanceSize > table_len ) fvar_head.instanceCount * fvar_head.instanceSize > table_len )
{ {
error = TT_Err_Invalid_Table; error = FT_THROW( Invalid_Table );
goto Exit; goto Exit;
} }
@ -875,14 +875,14 @@
if ( num_coords != mmvar->num_axis ) if ( num_coords != mmvar->num_axis )
{ {
error = TT_Err_Invalid_Argument; error = FT_THROW( Invalid_Argument );
goto Exit; goto Exit;
} }
for ( i = 0; i < num_coords; ++i ) for ( i = 0; i < num_coords; ++i )
if ( coords[i] < -0x00010000L || coords[i] > 0x00010000L ) if ( coords[i] < -0x00010000L || coords[i] > 0x00010000L )
{ {
error = TT_Err_Invalid_Argument; error = FT_THROW( Invalid_Argument );
goto Exit; goto Exit;
} }
@ -1004,7 +1004,7 @@
if ( num_coords != mmvar->num_axis ) if ( num_coords != mmvar->num_axis )
{ {
error = TT_Err_Invalid_Argument; error = FT_THROW( Invalid_Argument );
goto Exit; goto Exit;
} }
@ -1020,7 +1020,7 @@
{ {
if ( coords[i] > a->maximum || coords[i] < a->minimum ) if ( coords[i] > a->maximum || coords[i] < a->minimum )
{ {
error = TT_Err_Invalid_Argument; error = FT_THROW( Invalid_Argument );
goto Exit; goto Exit;
} }
@ -1323,7 +1323,7 @@
if ( !face->doblend || blend == NULL ) if ( !face->doblend || blend == NULL )
return TT_Err_Invalid_Argument; return FT_THROW( Invalid_Argument );
/* to be freed by the caller */ /* to be freed by the caller */
if ( FT_NEW_ARRAY( delta_xy, n_points ) ) if ( FT_NEW_ARRAY( delta_xy, n_points ) )
@ -1383,7 +1383,7 @@
} }
else if ( ( tupleIndex & GX_TI_TUPLE_INDEX_MASK ) >= blend->tuplecount ) else if ( ( tupleIndex & GX_TI_TUPLE_INDEX_MASK ) >= blend->tuplecount )
{ {
error = TT_Err_Invalid_Table; error = FT_THROW( Invalid_Table );
goto Fail3; goto Fail3;
} }
else else

View File

@ -1699,7 +1699,7 @@
if ( aRange < 1 || aRange > 3 ) if ( aRange < 1 || aRange > 3 )
{ {
CUR.error = TT_Err_Bad_Argument; CUR.error = FT_THROW( Bad_Argument );
return FAILURE; return FAILURE;
} }
@ -1707,7 +1707,7 @@
if ( range->base == NULL ) /* invalid coderange */ if ( range->base == NULL ) /* invalid coderange */
{ {
CUR.error = TT_Err_Invalid_CodeRange; CUR.error = FT_THROW( Invalid_CodeRange );
return FAILURE; return FAILURE;
} }
@ -1717,7 +1717,7 @@
if ( aIP > range->size ) if ( aIP > range->size )
{ {
CUR.error = TT_Err_Code_Overflow; CUR.error = FT_THROW( Code_Overflow );
return FAILURE; return FAILURE;
} }
@ -2670,7 +2670,7 @@
BOUNDS( aIdx2, CUR.zp1.n_points ) ) BOUNDS( aIdx2, CUR.zp1.n_points ) )
{ {
if ( CUR.pedantic_hinting ) if ( CUR.pedantic_hinting )
CUR.error = TT_Err_Invalid_Reference; CUR.error = FT_THROW( Invalid_Reference );
return FAILURE; return FAILURE;
} }
@ -2926,10 +2926,10 @@
CUR.func_round = (TT_Round_Func)Round_Super_45; CUR.func_round = (TT_Round_Func)Round_Super_45;
#define DO_SLOOP \ #define DO_SLOOP \
if ( args[0] < 0 ) \ if ( args[0] < 0 ) \
CUR.error = TT_Err_Bad_Argument; \ CUR.error = FT_THROW( Bad_Argument ); \
else \ else \
CUR.GS.loop = args[0]; CUR.GS.loop = args[0];
@ -3011,21 +3011,21 @@
args[0] = CUR.top; args[0] = CUR.top;
#define DO_CINDEX \ #define DO_CINDEX \
{ \ { \
FT_Long L; \ FT_Long L; \
\ \
\ \
L = args[0]; \ L = args[0]; \
\ \
if ( L <= 0 || L > CUR.args ) \ if ( L <= 0 || L > CUR.args ) \
{ \ { \
if ( CUR.pedantic_hinting ) \ if ( CUR.pedantic_hinting ) \
CUR.error = TT_Err_Invalid_Reference; \ CUR.error = FT_THROW( Invalid_Reference ); \
args[0] = 0; \ args[0] = 0; \
} \ } \
else \ else \
args[0] = CUR.stack[CUR.args - L]; \ args[0] = CUR.stack[CUR.args - L]; \
} }
@ -3033,24 +3033,24 @@
if ( args[1] != 0 ) \ if ( args[1] != 0 ) \
{ \ { \
if ( args[0] == 0 && CUR.args == 0 ) \ if ( args[0] == 0 && CUR.args == 0 ) \
CUR.error = TT_Err_Bad_Argument; \ CUR.error = FT_THROW( Bad_Argument ); \
CUR.IP += args[0]; \ CUR.IP += args[0]; \
if ( CUR.IP < 0 || \ if ( CUR.IP < 0 || \
( CUR.callTop > 0 && \ ( CUR.callTop > 0 && \
CUR.IP > CUR.callStack[CUR.callTop - 1].Cur_End ) ) \ CUR.IP > CUR.callStack[CUR.callTop - 1].Cur_End ) ) \
CUR.error = TT_Err_Bad_Argument; \ CUR.error = FT_THROW( Bad_Argument ); \
CUR.step_ins = FALSE; \ CUR.step_ins = FALSE; \
} }
#define DO_JMPR \ #define DO_JMPR \
if ( args[0] == 0 && CUR.args == 0 ) \ if ( args[0] == 0 && CUR.args == 0 ) \
CUR.error = TT_Err_Bad_Argument; \ CUR.error = FT_THROW( Bad_Argument ); \
CUR.IP += args[0]; \ CUR.IP += args[0]; \
if ( CUR.IP < 0 || \ if ( CUR.IP < 0 || \
( CUR.callTop > 0 && \ ( CUR.callTop > 0 && \
CUR.IP > CUR.callStack[CUR.callTop - 1].Cur_End ) ) \ CUR.IP > CUR.callStack[CUR.callTop - 1].Cur_End ) ) \
CUR.error = TT_Err_Bad_Argument; \ CUR.error = FT_THROW( Bad_Argument ); \
CUR.step_ins = FALSE; CUR.step_ins = FALSE;
@ -3058,12 +3058,12 @@
if ( args[1] == 0 ) \ if ( args[1] == 0 ) \
{ \ { \
if ( args[0] == 0 && CUR.args == 0 ) \ if ( args[0] == 0 && CUR.args == 0 ) \
CUR.error = TT_Err_Bad_Argument; \ CUR.error = FT_THROW( Bad_Argument ); \
CUR.IP += args[0]; \ CUR.IP += args[0]; \
if ( CUR.IP < 0 || \ if ( CUR.IP < 0 || \
( CUR.callTop > 0 && \ ( CUR.callTop > 0 && \
CUR.IP > CUR.callStack[CUR.callTop - 1].Cur_End ) ) \ CUR.IP > CUR.callStack[CUR.callTop - 1].Cur_End ) ) \
CUR.error = TT_Err_Bad_Argument; \ CUR.error = FT_THROW( Bad_Argument ); \
CUR.step_ins = FALSE; \ CUR.step_ins = FALSE; \
} }
@ -3122,7 +3122,7 @@
#define DO_DIV \ #define DO_DIV \
if ( args[1] == 0 ) \ if ( args[1] == 0 ) \
CUR.error = TT_Err_Divide_By_Zero; \ CUR.error = FT_THROW( Divide_By_Zero ); \
else \ else \
args[0] = FT_MulDiv_No_Round( args[0], 64L, args[1] ); args[0] = FT_MulDiv_No_Round( args[0], 64L, args[1] );
@ -3276,8 +3276,8 @@
} }
#define DO_DEBUG \ #define DO_DEBUG \
CUR.error = TT_Err_Debug_OpCode; CUR.error = FT_THROW( Debug_OpCode );
#define DO_ROUND \ #define DO_ROUND \
@ -3305,10 +3305,10 @@
#undef ARRAY_BOUND_ERROR #undef ARRAY_BOUND_ERROR
#define ARRAY_BOUND_ERROR \ #define ARRAY_BOUND_ERROR \
{ \ { \
CUR.error = TT_Err_Invalid_Reference; \ CUR.error = FT_THROW( Invalid_Reference ); \
return; \ return; \
} }
@ -4287,7 +4287,7 @@
if ( L <= 0 || L > CUR.args ) if ( L <= 0 || L > CUR.args )
{ {
if ( CUR.pedantic_hinting ) if ( CUR.pedantic_hinting )
CUR.error = TT_Err_Invalid_Reference; CUR.error = FT_THROW( Invalid_Reference );
} }
else else
{ {
@ -4357,7 +4357,7 @@
} }
Fail_Overflow: Fail_Overflow:
CUR.error = TT_Err_Code_Overflow; CUR.error = FT_THROW( Code_Overflow );
return FAILURE; return FAILURE;
} }
@ -4568,7 +4568,7 @@
/* check that there is enough room for new functions */ /* check that there is enough room for new functions */
if ( CUR.numFDefs >= CUR.maxFDefs ) if ( CUR.numFDefs >= CUR.maxFDefs )
{ {
CUR.error = TT_Err_Too_Many_Function_Defs; CUR.error = FT_THROW( Too_Many_Function_Defs );
return; return;
} }
CUR.numFDefs++; CUR.numFDefs++;
@ -4578,7 +4578,7 @@
/* func # must be within unsigned 16-bit integer */ /* func # must be within unsigned 16-bit integer */
if ( n > 0xFFFFU ) if ( n > 0xFFFFU )
{ {
CUR.error = TT_Err_Too_Many_Function_Defs; CUR.error = FT_THROW( Too_Many_Function_Defs );
return; return;
} }
@ -4704,7 +4704,7 @@
{ {
case 0x89: /* IDEF */ case 0x89: /* IDEF */
case 0x2C: /* FDEF */ case 0x2C: /* FDEF */
CUR.error = TT_Err_Nested_DEFS; CUR.error = FT_THROW( Nested_DEFS );
return; return;
case 0x2D: /* ENDF */ case 0x2D: /* ENDF */
@ -4731,7 +4731,7 @@
if ( CUR.callTop <= 0 ) /* We encountered an ENDF without a call */ if ( CUR.callTop <= 0 ) /* We encountered an ENDF without a call */
{ {
CUR.error = TT_Err_ENDF_In_Exec_Stream; CUR.error = FT_THROW( ENDF_In_Exec_Stream );
return; return;
} }
@ -4820,7 +4820,7 @@
/* check the call stack */ /* check the call stack */
if ( CUR.callTop >= CUR.callSize ) if ( CUR.callTop >= CUR.callSize )
{ {
CUR.error = TT_Err_Stack_Overflow; CUR.error = FT_THROW( Stack_Overflow );
return; return;
} }
@ -4846,7 +4846,7 @@
return; return;
Fail: Fail:
CUR.error = TT_Err_Invalid_Reference; CUR.error = FT_THROW( Invalid_Reference );
} }
@ -4906,7 +4906,7 @@
/* check stack */ /* check stack */
if ( CUR.callTop >= CUR.callSize ) if ( CUR.callTop >= CUR.callSize )
{ {
CUR.error = TT_Err_Stack_Overflow; CUR.error = FT_THROW( Stack_Overflow );
return; return;
} }
@ -4934,7 +4934,7 @@
return; return;
Fail: Fail:
CUR.error = TT_Err_Invalid_Reference; CUR.error = FT_THROW( Invalid_Reference );
} }
@ -4965,7 +4965,7 @@
/* check that there is enough room for a new instruction */ /* check that there is enough room for a new instruction */
if ( CUR.numIDefs >= CUR.maxIDefs ) if ( CUR.numIDefs >= CUR.maxIDefs )
{ {
CUR.error = TT_Err_Too_Many_Instruction_Defs; CUR.error = FT_THROW( Too_Many_Instruction_Defs );
return; return;
} }
CUR.numIDefs++; CUR.numIDefs++;
@ -4974,7 +4974,7 @@
/* opcode must be unsigned 8-bit integer */ /* opcode must be unsigned 8-bit integer */
if ( 0 > args[0] || args[0] > 0x00FF ) if ( 0 > args[0] || args[0] > 0x00FF )
{ {
CUR.error = TT_Err_Too_Many_Instruction_Defs; CUR.error = FT_THROW( Too_Many_Instruction_Defs );
return; return;
} }
@ -4995,7 +4995,7 @@
{ {
case 0x89: /* IDEF */ case 0x89: /* IDEF */
case 0x2C: /* FDEF */ case 0x2C: /* FDEF */
CUR.error = TT_Err_Nested_DEFS; CUR.error = FT_THROW( Nested_DEFS );
return; return;
case 0x2D: /* ENDF */ case 0x2D: /* ENDF */
return; return;
@ -5029,7 +5029,7 @@
if ( BOUNDS( L, CUR.stackSize + 1 - CUR.top ) ) if ( BOUNDS( L, CUR.stackSize + 1 - CUR.top ) )
{ {
CUR.error = TT_Err_Stack_Overflow; CUR.error = FT_THROW( Stack_Overflow );
return; return;
} }
@ -5056,7 +5056,7 @@
if ( BOUNDS( L, CUR.stackSize + 1 - CUR.top ) ) if ( BOUNDS( L, CUR.stackSize + 1 - CUR.top ) )
{ {
CUR.error = TT_Err_Stack_Overflow; CUR.error = FT_THROW( Stack_Overflow );
return; return;
} }
@ -5086,7 +5086,7 @@
if ( BOUNDS( L, CUR.stackSize + 1 - CUR.top ) ) if ( BOUNDS( L, CUR.stackSize + 1 - CUR.top ) )
{ {
CUR.error = TT_Err_Stack_Overflow; CUR.error = FT_THROW( Stack_Overflow );
return; return;
} }
@ -5111,7 +5111,7 @@
if ( BOUNDS( L, CUR.stackSize + 1 - CUR.top ) ) if ( BOUNDS( L, CUR.stackSize + 1 - CUR.top ) )
{ {
CUR.error = TT_Err_Stack_Overflow; CUR.error = FT_THROW( Stack_Overflow );
return; return;
} }
@ -5154,7 +5154,7 @@
if ( BOUNDSL( L, CUR.zp2.n_points ) ) if ( BOUNDSL( L, CUR.zp2.n_points ) )
{ {
if ( CUR.pedantic_hinting ) if ( CUR.pedantic_hinting )
CUR.error = TT_Err_Invalid_Reference; CUR.error = FT_THROW( Invalid_Reference );
R = 0; R = 0;
} }
else else
@ -5191,7 +5191,7 @@
if ( BOUNDS( L, CUR.zp2.n_points ) ) if ( BOUNDS( L, CUR.zp2.n_points ) )
{ {
if ( CUR.pedantic_hinting ) if ( CUR.pedantic_hinting )
CUR.error = TT_Err_Invalid_Reference; CUR.error = FT_THROW( Invalid_Reference );
return; return;
} }
@ -5235,7 +5235,7 @@
BOUNDS( K, CUR.zp1.n_points ) ) BOUNDS( K, CUR.zp1.n_points ) )
{ {
if ( CUR.pedantic_hinting ) if ( CUR.pedantic_hinting )
CUR.error = TT_Err_Invalid_Reference; CUR.error = FT_THROW( Invalid_Reference );
D = 0; D = 0;
} }
else else
@ -5311,7 +5311,7 @@
BOUNDS( p1, CUR.zp2.n_points ) ) BOUNDS( p1, CUR.zp2.n_points ) )
{ {
if ( CUR.pedantic_hinting ) if ( CUR.pedantic_hinting )
CUR.error = TT_Err_Invalid_Reference; CUR.error = FT_THROW( Invalid_Reference );
return; return;
} }
@ -5389,7 +5389,7 @@
default: default:
if ( CUR.pedantic_hinting ) if ( CUR.pedantic_hinting )
CUR.error = TT_Err_Invalid_Reference; CUR.error = FT_THROW( Invalid_Reference );
return; return;
} }
@ -5418,7 +5418,7 @@
default: default:
if ( CUR.pedantic_hinting ) if ( CUR.pedantic_hinting )
CUR.error = TT_Err_Invalid_Reference; CUR.error = FT_THROW( Invalid_Reference );
return; return;
} }
@ -5447,7 +5447,7 @@
default: default:
if ( CUR.pedantic_hinting ) if ( CUR.pedantic_hinting )
CUR.error = TT_Err_Invalid_Reference; CUR.error = FT_THROW( Invalid_Reference );
return; return;
} }
@ -5476,7 +5476,7 @@
default: default:
if ( CUR.pedantic_hinting ) if ( CUR.pedantic_hinting )
CUR.error = TT_Err_Invalid_Reference; CUR.error = FT_THROW( Invalid_Reference );
return; return;
} }
@ -5507,7 +5507,7 @@
if ( K < 1 || K > 2 ) if ( K < 1 || K > 2 )
{ {
if ( CUR.pedantic_hinting ) if ( CUR.pedantic_hinting )
CUR.error = TT_Err_Invalid_Reference; CUR.error = FT_THROW( Invalid_Reference );
return; return;
} }
@ -5605,7 +5605,7 @@
if ( CUR.top < CUR.GS.loop ) if ( CUR.top < CUR.GS.loop )
{ {
if ( CUR.pedantic_hinting ) if ( CUR.pedantic_hinting )
CUR.error = TT_Err_Too_Few_Arguments; CUR.error = FT_THROW( Too_Few_Arguments );
goto Fail; goto Fail;
} }
@ -5619,7 +5619,7 @@
{ {
if ( CUR.pedantic_hinting ) if ( CUR.pedantic_hinting )
{ {
CUR.error = TT_Err_Invalid_Reference; CUR.error = FT_THROW( Invalid_Reference );
return; return;
} }
} }
@ -5654,7 +5654,7 @@
BOUNDS( L, CUR.pts.n_points ) ) BOUNDS( L, CUR.pts.n_points ) )
{ {
if ( CUR.pedantic_hinting ) if ( CUR.pedantic_hinting )
CUR.error = TT_Err_Invalid_Reference; CUR.error = FT_THROW( Invalid_Reference );
return; return;
} }
@ -5682,7 +5682,7 @@
BOUNDS( L, CUR.pts.n_points ) ) BOUNDS( L, CUR.pts.n_points ) )
{ {
if ( CUR.pedantic_hinting ) if ( CUR.pedantic_hinting )
CUR.error = TT_Err_Invalid_Reference; CUR.error = FT_THROW( Invalid_Reference );
return; return;
} }
@ -5716,7 +5716,7 @@
if ( BOUNDS( p, zp.n_points ) ) if ( BOUNDS( p, zp.n_points ) )
{ {
if ( CUR.pedantic_hinting ) if ( CUR.pedantic_hinting )
CUR.error = TT_Err_Invalid_Reference; CUR.error = FT_THROW( Invalid_Reference );
*refp = 0; *refp = 0;
return FAILURE; return FAILURE;
} }
@ -5819,7 +5819,7 @@
if ( CUR.top < CUR.GS.loop ) if ( CUR.top < CUR.GS.loop )
{ {
if ( CUR.pedantic_hinting ) if ( CUR.pedantic_hinting )
CUR.error = TT_Err_Invalid_Reference; CUR.error = FT_THROW( Invalid_Reference );
goto Fail; goto Fail;
} }
@ -5835,7 +5835,7 @@
{ {
if ( CUR.pedantic_hinting ) if ( CUR.pedantic_hinting )
{ {
CUR.error = TT_Err_Invalid_Reference; CUR.error = FT_THROW( Invalid_Reference );
return; return;
} }
} }
@ -5878,7 +5878,7 @@
if ( BOUNDS( contour, bounds ) ) if ( BOUNDS( contour, bounds ) )
{ {
if ( CUR.pedantic_hinting ) if ( CUR.pedantic_hinting )
CUR.error = TT_Err_Invalid_Reference; CUR.error = FT_THROW( Invalid_Reference );
return; return;
} }
@ -5926,7 +5926,7 @@
if ( BOUNDS( args[0], 2 ) ) if ( BOUNDS( args[0], 2 ) )
{ {
if ( CUR.pedantic_hinting ) if ( CUR.pedantic_hinting )
CUR.error = TT_Err_Invalid_Reference; CUR.error = FT_THROW( Invalid_Reference );
return; return;
} }
@ -5972,7 +5972,7 @@
if ( CUR.top < CUR.GS.loop + 1 ) if ( CUR.top < CUR.GS.loop + 1 )
{ {
if ( CUR.pedantic_hinting ) if ( CUR.pedantic_hinting )
CUR.error = TT_Err_Invalid_Reference; CUR.error = FT_THROW( Invalid_Reference );
goto Fail; goto Fail;
} }
@ -6007,7 +6007,7 @@
{ {
if ( CUR.pedantic_hinting ) if ( CUR.pedantic_hinting )
{ {
CUR.error = TT_Err_Invalid_Reference; CUR.error = FT_THROW( Invalid_Reference );
return; return;
} }
} }
@ -6118,7 +6118,7 @@
BOUNDS( CUR.GS.rp0, CUR.zp0.n_points ) ) BOUNDS( CUR.GS.rp0, CUR.zp0.n_points ) )
{ {
if ( CUR.pedantic_hinting ) if ( CUR.pedantic_hinting )
CUR.error = TT_Err_Invalid_Reference; CUR.error = FT_THROW( Invalid_Reference );
return; return;
} }
@ -6171,7 +6171,7 @@
if ( BOUNDS( point, CUR.zp0.n_points ) ) if ( BOUNDS( point, CUR.zp0.n_points ) )
{ {
if ( CUR.pedantic_hinting ) if ( CUR.pedantic_hinting )
CUR.error = TT_Err_Invalid_Reference; CUR.error = FT_THROW( Invalid_Reference );
return; return;
} }
@ -6231,7 +6231,7 @@
BOUNDSL( cvtEntry, CUR.cvtSize ) ) BOUNDSL( cvtEntry, CUR.cvtSize ) )
{ {
if ( CUR.pedantic_hinting ) if ( CUR.pedantic_hinting )
CUR.error = TT_Err_Invalid_Reference; CUR.error = FT_THROW( Invalid_Reference );
goto Fail; goto Fail;
} }
@ -6333,7 +6333,7 @@
BOUNDS( CUR.GS.rp0, CUR.zp0.n_points ) ) BOUNDS( CUR.GS.rp0, CUR.zp0.n_points ) )
{ {
if ( CUR.pedantic_hinting ) if ( CUR.pedantic_hinting )
CUR.error = TT_Err_Invalid_Reference; CUR.error = FT_THROW( Invalid_Reference );
goto Fail; goto Fail;
} }
@ -6481,7 +6481,7 @@
BOUNDS( CUR.GS.rp0, CUR.zp0.n_points ) ) BOUNDS( CUR.GS.rp0, CUR.zp0.n_points ) )
{ {
if ( CUR.pedantic_hinting ) if ( CUR.pedantic_hinting )
CUR.error = TT_Err_Invalid_Reference; CUR.error = FT_THROW( Invalid_Reference );
goto Fail; goto Fail;
} }
@ -6685,7 +6685,7 @@
CUR.iup_called && CUR.iup_called &&
( CUR.sph_tweak_flags & SPH_TWEAK_NO_ALIGNRP_AFTER_IUP ) ) ( CUR.sph_tweak_flags & SPH_TWEAK_NO_ALIGNRP_AFTER_IUP ) )
{ {
CUR.error = TT_Err_Invalid_Reference; CUR.error = FT_THROW( Invalid_Reference );
goto Fail; goto Fail;
} }
#endif /* TT_CONFIG_OPTION_SUBPIXEL_HINTING */ #endif /* TT_CONFIG_OPTION_SUBPIXEL_HINTING */
@ -6694,7 +6694,7 @@
BOUNDS( CUR.GS.rp0, CUR.zp0.n_points ) ) BOUNDS( CUR.GS.rp0, CUR.zp0.n_points ) )
{ {
if ( CUR.pedantic_hinting ) if ( CUR.pedantic_hinting )
CUR.error = TT_Err_Invalid_Reference; CUR.error = FT_THROW( Invalid_Reference );
goto Fail; goto Fail;
} }
@ -6708,7 +6708,7 @@
{ {
if ( CUR.pedantic_hinting ) if ( CUR.pedantic_hinting )
{ {
CUR.error = TT_Err_Invalid_Reference; CUR.error = FT_THROW( Invalid_Reference );
return; return;
} }
} }
@ -6767,7 +6767,7 @@
BOUNDS( point, CUR.zp2.n_points ) ) BOUNDS( point, CUR.zp2.n_points ) )
{ {
if ( CUR.pedantic_hinting ) if ( CUR.pedantic_hinting )
CUR.error = TT_Err_Invalid_Reference; CUR.error = FT_THROW( Invalid_Reference );
return; return;
} }
@ -6843,7 +6843,7 @@
BOUNDS( p2, CUR.zp0.n_points ) ) BOUNDS( p2, CUR.zp0.n_points ) )
{ {
if ( CUR.pedantic_hinting ) if ( CUR.pedantic_hinting )
CUR.error = TT_Err_Invalid_Reference; CUR.error = FT_THROW( Invalid_Reference );
return; return;
} }
@ -6878,7 +6878,7 @@
if ( CUR.top < CUR.GS.loop ) if ( CUR.top < CUR.GS.loop )
{ {
if ( CUR.pedantic_hinting ) if ( CUR.pedantic_hinting )
CUR.error = TT_Err_Invalid_Reference; CUR.error = FT_THROW( Invalid_Reference );
goto Fail; goto Fail;
} }
@ -6892,7 +6892,7 @@
if ( BOUNDS( CUR.GS.rp1, CUR.zp0.n_points ) ) if ( BOUNDS( CUR.GS.rp1, CUR.zp0.n_points ) )
{ {
if ( CUR.pedantic_hinting ) if ( CUR.pedantic_hinting )
CUR.error = TT_Err_Invalid_Reference; CUR.error = FT_THROW( Invalid_Reference );
goto Fail; goto Fail;
} }
@ -6948,7 +6948,7 @@
{ {
if ( CUR.pedantic_hinting ) if ( CUR.pedantic_hinting )
{ {
CUR.error = TT_Err_Invalid_Reference; CUR.error = FT_THROW( Invalid_Reference );
return; return;
} }
continue; continue;
@ -7022,7 +7022,7 @@
if ( BOUNDS( point, CUR.zp0.n_points ) ) if ( BOUNDS( point, CUR.zp0.n_points ) )
{ {
if ( CUR.pedantic_hinting ) if ( CUR.pedantic_hinting )
CUR.error = TT_Err_Invalid_Reference; CUR.error = FT_THROW( Invalid_Reference );
return; return;
} }
@ -7304,7 +7304,7 @@
if ( CUR.args < n ) if ( CUR.args < n )
{ {
if ( CUR.pedantic_hinting ) if ( CUR.pedantic_hinting )
CUR.error = TT_Err_Too_Few_Arguments; CUR.error = FT_THROW( Too_Few_Arguments );
n = CUR.args; n = CUR.args;
} }
@ -7322,7 +7322,7 @@
if ( CUR.args < 2 ) if ( CUR.args < 2 )
{ {
if ( CUR.pedantic_hinting ) if ( CUR.pedantic_hinting )
CUR.error = TT_Err_Too_Few_Arguments; CUR.error = FT_THROW( Too_Few_Arguments );
CUR.args = 0; CUR.args = 0;
goto Fail; goto Fail;
} }
@ -7431,7 +7431,7 @@
} }
else else
if ( CUR.pedantic_hinting ) if ( CUR.pedantic_hinting )
CUR.error = TT_Err_Invalid_Reference; CUR.error = FT_THROW( Invalid_Reference );
} }
Fail: Fail:
@ -7463,7 +7463,7 @@
if ( CUR.args < n ) if ( CUR.args < n )
{ {
if ( CUR.pedantic_hinting ) if ( CUR.pedantic_hinting )
CUR.error = TT_Err_Too_Few_Arguments; CUR.error = FT_THROW( Too_Few_Arguments );
n = CUR.args; n = CUR.args;
} }
@ -7480,7 +7480,7 @@
if ( CUR.args < 2 ) if ( CUR.args < 2 )
{ {
if ( CUR.pedantic_hinting ) if ( CUR.pedantic_hinting )
CUR.error = TT_Err_Too_Few_Arguments; CUR.error = FT_THROW( Too_Few_Arguments );
CUR.args = 0; CUR.args = 0;
goto Fail; goto Fail;
} }
@ -7494,7 +7494,7 @@
{ {
if ( CUR.pedantic_hinting ) if ( CUR.pedantic_hinting )
{ {
CUR.error = TT_Err_Invalid_Reference; CUR.error = FT_THROW( Invalid_Reference );
return; return;
} }
} }
@ -7684,7 +7684,7 @@
if ( CUR.callTop >= CUR.callSize ) if ( CUR.callTop >= CUR.callSize )
{ {
CUR.error = TT_Err_Stack_Overflow; CUR.error = FT_THROW( Stack_Overflow );
return; return;
} }
@ -7703,7 +7703,7 @@
} }
} }
CUR.error = TT_Err_Invalid_Opcode; CUR.error = FT_THROW( Invalid_Opcode );
} }
@ -8092,7 +8092,7 @@
if ( CUR.pedantic_hinting ) if ( CUR.pedantic_hinting )
{ {
CUR.error = TT_Err_Too_Few_Arguments; CUR.error = FT_THROW( Too_Few_Arguments );
goto LErrorLabel_; goto LErrorLabel_;
} }
@ -8109,7 +8109,7 @@
/* statement. */ /* statement. */
if ( CUR.new_top > CUR.stackSize ) if ( CUR.new_top > CUR.stackSize )
{ {
CUR.error = TT_Err_Stack_Overflow; CUR.error = FT_THROW( Stack_Overflow );
goto LErrorLabel_; goto LErrorLabel_;
} }
@ -8397,7 +8397,7 @@
break; break;
Set_Invalid_Ref: Set_Invalid_Ref:
CUR.error = TT_Err_Invalid_Reference; CUR.error = FT_THROW( Invalid_Reference );
break; break;
case 0x43: /* RS */ case 0x43: /* RS */
@ -8712,7 +8712,7 @@
if ( CUR.callTop >= CUR.callSize ) if ( CUR.callTop >= CUR.callSize )
{ {
CUR.error = TT_Err_Invalid_Reference; CUR.error = FT_THROW( Invalid_Reference );
goto LErrorLabel_; goto LErrorLabel_;
} }
@ -8732,7 +8732,7 @@
} }
} }
CUR.error = TT_Err_Invalid_Opcode; CUR.error = FT_THROW( Invalid_Opcode );
goto LErrorLabel_; goto LErrorLabel_;
#if 0 #if 0
@ -8758,14 +8758,14 @@
/* increment instruction counter and check if we didn't */ /* increment instruction counter and check if we didn't */
/* run this program for too long (e.g. infinite loops). */ /* run this program for too long (e.g. infinite loops). */
if ( ++ins_counter > MAX_RUNNABLE_OPCODES ) if ( ++ins_counter > MAX_RUNNABLE_OPCODES )
return TT_Err_Execution_Too_Long; return FT_THROW( Execution_Too_Long );
LSuiteLabel_: LSuiteLabel_:
if ( CUR.IP >= CUR.codeSize ) if ( CUR.IP >= CUR.codeSize )
{ {
if ( CUR.callTop > 0 ) if ( CUR.callTop > 0 )
{ {
CUR.error = TT_Err_Code_Overflow; CUR.error = FT_THROW( Code_Overflow );
goto LErrorLabel_; goto LErrorLabel_;
} }
else else
@ -8782,7 +8782,7 @@
return TT_Err_Ok; return TT_Err_Ok;
LErrorCodeOverflow_: LErrorCodeOverflow_:
CUR.error = TT_Err_Code_Overflow; CUR.error = FT_THROW( Code_Overflow );
LErrorLabel_: LErrorLabel_:

View File

@ -521,7 +521,7 @@
if ( !sfnt ) if ( !sfnt )
{ {
FT_ERROR(( "tt_face_init: cannot access `sfnt' module\n" )); FT_ERROR(( "tt_face_init: cannot access `sfnt' module\n" ));
error = TT_Err_Missing_Module; error = FT_THROW( Missing_Module );
goto Exit; goto Exit;
} }
@ -651,7 +651,7 @@
return error; return error;
Bad_Format: Bad_Format:
error = TT_Err_Unknown_File_Format; error = FT_THROW( Unknown_File_Format );
goto Exit; goto Exit;
} }
@ -752,7 +752,7 @@
exec = ( (TT_Driver)FT_FACE_DRIVER( face ) )->context; exec = ( (TT_Driver)FT_FACE_DRIVER( face ) )->context;
if ( !exec ) if ( !exec )
return TT_Err_Could_Not_Find_Context; return FT_THROW( Could_Not_Find_Context );
TT_Load_Context( exec, face, size ); TT_Load_Context( exec, face, size );
@ -846,7 +846,7 @@
exec = ( (TT_Driver)FT_FACE_DRIVER( face ) )->context; exec = ( (TT_Driver)FT_FACE_DRIVER( face ) )->context;
if ( !exec ) if ( !exec )
return TT_Err_Could_Not_Find_Context; return FT_THROW( Could_Not_Find_Context );
TT_Load_Context( exec, face, size ); TT_Load_Context( exec, face, size );
@ -1180,7 +1180,7 @@
*metrics = size->root.metrics; *metrics = size->root.metrics;
if ( metrics->x_ppem < 1 || metrics->y_ppem < 1 ) if ( metrics->x_ppem < 1 || metrics->y_ppem < 1 )
return TT_Err_Invalid_PPem; return FT_THROW( Invalid_PPem );
/* This bit flag, if set, indicates that the ppems must be */ /* This bit flag, if set, indicates that the ppems must be */
/* rounded to integers. Nearly all TrueType fonts have this bit */ /* rounded to integers. Nearly all TrueType fonts have this bit */
@ -1257,7 +1257,7 @@
if ( !TT_New_Context( driver ) ) if ( !TT_New_Context( driver ) )
return TT_Err_Could_Not_Find_Context; return FT_THROW( Could_Not_Find_Context );
#else #else

View File

@ -4,7 +4,7 @@
/* */ /* */
/* TrueType-specific tables loader (body). */ /* TrueType-specific tables loader (body). */
/* */ /* */
/* Copyright 1996-2002, 2004-2012 by */ /* Copyright 1996-2002, 2004-2013 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */ /* */
/* This file is part of the FreeType project, and may only be used, */ /* This file is part of the FreeType project, and may only be used, */
@ -72,7 +72,7 @@
/* it is possible that a font doesn't have a glyf table at all */ /* it is possible that a font doesn't have a glyf table at all */
/* or its size is zero */ /* or its size is zero */
if ( error == TT_Err_Table_Missing ) if ( FT_ERROR_BASE( error ) == TT_Err_Table_Missing )
face->glyf_len = 0; face->glyf_len = 0;
else if ( error ) else if ( error )
goto Exit; goto Exit;
@ -81,7 +81,7 @@
error = face->goto_table( face, TTAG_loca, stream, &table_len ); error = face->goto_table( face, TTAG_loca, stream, &table_len );
if ( error ) if ( error )
{ {
error = TT_Err_Locations_Missing; error = FT_THROW( Locations_Missing );
goto Exit; goto Exit;
} }
@ -92,7 +92,7 @@
if ( table_len >= 0x40000L ) if ( table_len >= 0x40000L )
{ {
FT_TRACE2(( "table too large\n" )); FT_TRACE2(( "table too large\n" ));
error = TT_Err_Invalid_Table; error = FT_THROW( Invalid_Table );
goto Exit; goto Exit;
} }
face->num_locations = table_len >> shift; face->num_locations = table_len >> shift;
@ -104,7 +104,7 @@
if ( table_len >= 0x20000L ) if ( table_len >= 0x20000L )
{ {
FT_TRACE2(( "table too large\n" )); FT_TRACE2(( "table too large\n" ));
error = TT_Err_Invalid_Table; error = FT_THROW( Invalid_Table );
goto Exit; goto Exit;
} }
face->num_locations = table_len >> shift; face->num_locations = table_len >> shift;
@ -525,7 +525,7 @@
if ( version != 0 || num_records > 255 || record_size > 0x10001L ) if ( version != 0 || num_records > 255 || record_size > 0x10001L )
{ {
error = TT_Err_Invalid_File_Format; error = FT_THROW( Invalid_File_Format );
goto Fail; goto Fail;
} }

View File

@ -4,7 +4,7 @@
/* */ /* */
/* AFM support for Type 1 fonts (body). */ /* AFM support for Type 1 fonts (body). */
/* */ /* */
/* Copyright 1996-2011 by */ /* Copyright 1996-2011, 2013 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */ /* */
/* This file is part of the FreeType project, and may only be used, */ /* This file is part of the FreeType project, and may only be used, */
@ -18,9 +18,10 @@
#include <ft2build.h> #include <ft2build.h>
#include "t1afm.h" #include "t1afm.h"
#include "t1errors.h" #include FT_INTERNAL_DEBUG_H
#include FT_INTERNAL_STREAM_H #include FT_INTERNAL_STREAM_H
#include FT_INTERNAL_POSTSCRIPT_AUX_H #include FT_INTERNAL_POSTSCRIPT_AUX_H
#include "t1errors.h"
/*************************************************************************/ /*************************************************************************/
@ -128,7 +129,7 @@
p = start + 99; p = start + 99;
if ( p + 2 > limit ) if ( p + 2 > limit )
{ {
error = T1_Err_Unknown_File_Format; error = FT_THROW( Unknown_File_Format );
goto Exit; goto Exit;
} }
width_table_length = FT_PEEK_USHORT_LE( p ); width_table_length = FT_PEEK_USHORT_LE( p );
@ -148,7 +149,7 @@
if ( p + 2 > limit ) if ( p + 2 > limit )
{ {
error = T1_Err_Unknown_File_Format; error = FT_THROW( Unknown_File_Format );
goto Exit; goto Exit;
} }
@ -156,7 +157,7 @@
p += 2; p += 2;
if ( p + 4 * fi->NumKernPair > limit ) if ( p + 4 * fi->NumKernPair > limit )
{ {
error = T1_Err_Unknown_File_Format; error = FT_THROW( Unknown_File_Format );
goto Exit; goto Exit;
} }
@ -269,7 +270,7 @@
} }
} }
if ( error == T1_Err_Unknown_File_Format ) if ( FT_ERROR_BASE( error ) == FT_Err_Unknown_File_Format )
{ {
FT_Byte* start = stream->cursor; FT_Byte* start = stream->cursor;
@ -366,7 +367,7 @@
if ( !fi ) if ( !fi )
return T1_Err_Invalid_Argument; return FT_THROW( Invalid_Argument );
for ( i = 0; i < fi->NumTrackKern; i++ ) for ( i = 0; i < fi->NumTrackKern; i++ )
{ {

View File

@ -4,7 +4,7 @@
/* */ /* */
/* Type 1 Glyph Loader (body). */ /* Type 1 Glyph Loader (body). */
/* */ /* */
/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2008, 2009, 2010 by */ /* Copyright 1996-2006, 2008-2010, 2013 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */ /* */
/* This file is part of the FreeType project, and may only be used, */ /* This file is part of the FreeType project, and may only be used, */
@ -296,7 +296,7 @@
if ( glyph_index >= (FT_UInt)face->root.num_glyphs ) if ( glyph_index >= (FT_UInt)face->root.num_glyphs )
#endif /* FT_CONFIG_OPTION_INCREMENTAL */ #endif /* FT_CONFIG_OPTION_INCREMENTAL */
{ {
error = T1_Err_Invalid_Argument; error = FT_THROW( Invalid_Argument );
goto Exit; goto Exit;
} }

View File

@ -182,7 +182,7 @@
return error; return error;
Fail: Fail:
error = T1_Err_Invalid_File_Format; error = FT_THROW( Invalid_File_Format );
goto Exit; goto Exit;
} }
@ -196,7 +196,7 @@
FT_Error error; FT_Error error;
error = T1_Err_Invalid_Argument; error = FT_THROW( Invalid_Argument );
if ( blend ) if ( blend )
{ {
@ -586,7 +586,7 @@
{ {
FT_ERROR(( "parse_blend_axis_types: incorrect number of axes: %d\n", FT_ERROR(( "parse_blend_axis_types: incorrect number of axes: %d\n",
num_axis )); num_axis ));
error = T1_Err_Invalid_File_Format; error = FT_THROW( Invalid_File_Format );
goto Exit; goto Exit;
} }
@ -613,7 +613,7 @@
len = token->limit - token->start; len = token->limit - token->start;
if ( len == 0 ) if ( len == 0 )
{ {
error = T1_Err_Invalid_File_Format; error = FT_THROW( Invalid_File_Format );
goto Exit; goto Exit;
} }
@ -656,7 +656,7 @@
FT_ERROR(( "parse_blend_design_positions:" FT_ERROR(( "parse_blend_design_positions:"
" incorrect number of designs: %d\n", " incorrect number of designs: %d\n",
num_designs )); num_designs ));
error = T1_Err_Invalid_File_Format; error = FT_THROW( Invalid_File_Format );
goto Exit; goto Exit;
} }
@ -689,7 +689,7 @@
FT_ERROR(( "parse_blend_design_positions:" FT_ERROR(( "parse_blend_design_positions:"
" invalid number of axes: %d\n", " invalid number of axes: %d\n",
n_axis )); n_axis ));
error = T1_Err_Invalid_File_Format; error = FT_THROW( Invalid_File_Format );
goto Exit; goto Exit;
} }
@ -702,7 +702,7 @@
else if ( n_axis != num_axis ) else if ( n_axis != num_axis )
{ {
FT_ERROR(( "parse_blend_design_positions: incorrect table\n" )); FT_ERROR(( "parse_blend_design_positions: incorrect table\n" ));
error = T1_Err_Invalid_File_Format; error = FT_THROW( Invalid_File_Format );
goto Exit; goto Exit;
} }
@ -752,7 +752,7 @@
{ {
FT_ERROR(( "parse_blend_design_map: incorrect number of axes: %d\n", FT_ERROR(( "parse_blend_design_map: incorrect number of axes: %d\n",
num_axis )); num_axis ));
error = T1_Err_Invalid_File_Format; error = FT_THROW( Invalid_File_Format );
goto Exit; goto Exit;
} }
@ -783,7 +783,7 @@
if ( num_points <= 0 || num_points > T1_MAX_MM_MAP_POINTS ) if ( num_points <= 0 || num_points > T1_MAX_MM_MAP_POINTS )
{ {
FT_ERROR(( "parse_blend_design_map: incorrect table\n" )); FT_ERROR(( "parse_blend_design_map: incorrect table\n" ));
error = T1_Err_Invalid_File_Format; error = FT_THROW( Invalid_File_Format );
goto Exit; goto Exit;
} }
@ -844,7 +844,7 @@
FT_ERROR(( "parse_weight_vector:" FT_ERROR(( "parse_weight_vector:"
" incorrect number of designs: %d\n", " incorrect number of designs: %d\n",
num_designs )); num_designs ));
error = T1_Err_Invalid_File_Format; error = FT_THROW( Invalid_File_Format );
goto Exit; goto Exit;
} }
@ -861,7 +861,7 @@
" /BlendDesignPosition and /WeightVector have\n" " /BlendDesignPosition and /WeightVector have\n"
" " " "
" different number of elements\n" )); " different number of elements\n" ));
error = T1_Err_Invalid_File_Format; error = FT_THROW( Invalid_File_Format );
goto Exit; goto Exit;
} }
@ -1082,7 +1082,7 @@
if( !incremental ) if( !incremental )
{ {
FT_ERROR(( "read_binary_data: invalid size field\n" )); FT_ERROR(( "read_binary_data: invalid size field\n" ));
parser->root.error = T1_Err_Invalid_File_Format; parser->root.error = FT_THROW( Invalid_File_Format );
} }
return 0; return 0;
@ -1109,7 +1109,7 @@
if ( result < 0 ) if ( result < 0 )
{ {
parser->root.error = T1_Err_Invalid_File_Format; parser->root.error = FT_THROW( Invalid_File_Format );
return; return;
} }
@ -1118,7 +1118,7 @@
if ( temp_scale == 0 ) if ( temp_scale == 0 )
{ {
FT_ERROR(( "t1_parse_font_matrix: invalid font matrix\n" )); FT_ERROR(( "t1_parse_font_matrix: invalid font matrix\n" ));
parser->root.error = T1_Err_Invalid_File_Format; parser->root.error = FT_THROW( Invalid_File_Format );
return; return;
} }
@ -1166,7 +1166,7 @@
if ( cur >= limit ) if ( cur >= limit )
{ {
FT_ERROR(( "parse_encoding: out of bounds\n" )); FT_ERROR(( "parse_encoding: out of bounds\n" ));
parser->root.error = T1_Err_Invalid_File_Format; parser->root.error = FT_THROW( Invalid_File_Format );
return; return;
} }
@ -1312,7 +1312,7 @@
/* specification (it might be an encoding for a CID type1 */ /* specification (it might be an encoding for a CID type1 */
/* font, however), so we conclude that this font is NOT a */ /* font, however), so we conclude that this font is NOT a */
/* type1 font. */ /* type1 font. */
parser->root.error = T1_Err_Unknown_File_Format; parser->root.error = FT_THROW( Unknown_File_Format );
return; return;
} }
} }
@ -1375,7 +1375,7 @@
T1_Skip_Spaces ( parser ); T1_Skip_Spaces ( parser );
if ( parser->root.cursor >= parser->root.limit || if ( parser->root.cursor >= parser->root.limit ||
*parser->root.cursor != ']' ) *parser->root.cursor != ']' )
parser->root.error = T1_Err_Invalid_File_Format; parser->root.error = FT_THROW( Invalid_File_Format );
return; return;
} }
@ -1454,7 +1454,7 @@
/* least contain a `return'), but we support them anyway */ /* least contain a `return'), but we support them anyway */
if ( size < face->type1.private_dict.lenIV ) if ( size < face->type1.private_dict.lenIV )
{ {
error = T1_Err_Invalid_File_Format; error = FT_THROW( Invalid_File_Format );
goto Fail; goto Fail;
} }
@ -1510,7 +1510,7 @@
num_glyphs = (FT_Int)T1_ToInt( parser ); num_glyphs = (FT_Int)T1_ToInt( parser );
if ( num_glyphs < 0 ) if ( num_glyphs < 0 )
{ {
error = T1_Err_Invalid_File_Format; error = FT_THROW( Invalid_File_Format );
goto Fail; goto Fail;
} }
@ -1601,7 +1601,7 @@
if ( cur + 1 >= limit ) if ( cur + 1 >= limit )
{ {
error = T1_Err_Invalid_File_Format; error = FT_THROW( Invalid_File_Format );
goto Fail; goto Fail;
} }
@ -1641,7 +1641,7 @@
if ( size <= face->type1.private_dict.lenIV ) if ( size <= face->type1.private_dict.lenIV )
{ {
error = T1_Err_Invalid_File_Format; error = FT_THROW( Invalid_File_Format );
goto Fail; goto Fail;
} }
@ -1898,7 +1898,7 @@
parser->root.cursor = start_binary; parser->root.cursor = start_binary;
if ( !read_binary_data( parser, &s, &b, IS_INCREMENTAL ) ) if ( !read_binary_data( parser, &s, &b, IS_INCREMENTAL ) )
return T1_Err_Invalid_File_Format; return FT_THROW( Invalid_File_Format );
have_integer = 0; have_integer = 0;
} }
@ -1911,7 +1911,7 @@
parser->root.cursor = start_binary; parser->root.cursor = start_binary;
if ( !read_binary_data( parser, &s, &b, IS_INCREMENTAL ) ) if ( !read_binary_data( parser, &s, &b, IS_INCREMENTAL ) )
return T1_Err_Invalid_File_Format; return FT_THROW( Invalid_File_Format );
have_integer = 0; have_integer = 0;
} }
@ -2190,7 +2190,7 @@
if ( !loader.charstrings.init ) if ( !loader.charstrings.init )
{ {
FT_ERROR(( "T1_Open_Face: no `/CharStrings' array in face\n" )); FT_ERROR(( "T1_Open_Face: no `/CharStrings' array in face\n" ));
error = T1_Err_Invalid_File_Format; error = FT_THROW( Invalid_File_Format );
} }
loader.charstrings.init = 0; loader.charstrings.init = 0;

View File

@ -326,7 +326,7 @@
if ( !psaux ) if ( !psaux )
{ {
FT_ERROR(( "T1_Face_Init: cannot access `psaux' module\n" )); FT_ERROR(( "T1_Face_Init: cannot access `psaux' module\n" ));
error = T1_Err_Missing_Module; error = FT_THROW( Missing_Module );
goto Exit; goto Exit;
} }
@ -348,7 +348,7 @@
if ( face_index > 0 ) if ( face_index > 0 )
{ {
FT_ERROR(( "T1_Face_Init: invalid face index\n" )); FT_ERROR(( "T1_Face_Init: invalid face index\n" ));
error = T1_Err_Invalid_Argument; error = FT_THROW( Invalid_Argument );
goto Exit; goto Exit;
} }

View File

@ -4,7 +4,7 @@
/* */ /* */
/* Type 1 parser (body). */ /* Type 1 parser (body). */
/* */ /* */
/* Copyright 1996-2005, 2008, 2009, 2012 by */ /* Copyright 1996-2005, 2008, 2009, 2012, 2013 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */ /* */
/* This file is part of the FreeType project, and may only be used, */ /* This file is part of the FreeType project, and may only be used, */
@ -122,7 +122,7 @@
error = T1_Err_Ok; error = T1_Err_Ok;
if ( ft_memcmp( stream->cursor, header_string, header_length ) != 0 ) if ( ft_memcmp( stream->cursor, header_string, header_length ) != 0 )
error = T1_Err_Unknown_File_Format; error = FT_THROW( Unknown_File_Format );
FT_FRAME_EXIT(); FT_FRAME_EXIT();
} }
@ -299,7 +299,7 @@
{ {
FT_ERROR(( "T1_Get_Private_Dict:" FT_ERROR(( "T1_Get_Private_Dict:"
" invalid private dictionary section\n" )); " invalid private dictionary section\n" ));
error = T1_Err_Invalid_File_Format; error = FT_THROW( Invalid_File_Format );
goto Fail; goto Fail;
} }
@ -355,7 +355,7 @@
{ {
FT_ERROR(( "T1_Get_Private_Dict:" FT_ERROR(( "T1_Get_Private_Dict:"
" could not find `eexec' keyword\n" )); " could not find `eexec' keyword\n" ));
error = T1_Err_Invalid_File_Format; error = FT_THROW( Invalid_File_Format );
goto Exit; goto Exit;
} }
} }
@ -414,7 +414,7 @@
{ {
FT_ERROR(( "T1_Get_Private_Dict:" FT_ERROR(( "T1_Get_Private_Dict:"
" `eexec' not properly terminated\n" )); " `eexec' not properly terminated\n" ));
error = T1_Err_Invalid_File_Format; error = FT_THROW( Invalid_File_Format );
goto Exit; goto Exit;
} }
@ -474,7 +474,7 @@
{ {
FT_ERROR(( "T1_Get_Private_Dict:" FT_ERROR(( "T1_Get_Private_Dict:"
" invalid private dictionary section\n" )); " invalid private dictionary section\n" ));
error = T1_Err_Invalid_File_Format; error = FT_THROW( Invalid_File_Format );
goto Fail; goto Fail;
} }

View File

@ -63,7 +63,7 @@
{ {
FT_ERROR(( "T42_Open_Face: cannot handle FontType %d\n", FT_ERROR(( "T42_Open_Face: cannot handle FontType %d\n",
type1->font_type )); type1->font_type ));
error = T42_Err_Unknown_File_Format; error = FT_THROW( Unknown_File_Format );
goto Exit; goto Exit;
} }
@ -74,7 +74,7 @@
if ( !loader.charstrings.init ) if ( !loader.charstrings.init )
{ {
FT_ERROR(( "T42_Open_Face: no charstrings array in face\n" )); FT_ERROR(( "T42_Open_Face: no charstrings array in face\n" ));
error = T42_Err_Invalid_File_Format; error = FT_THROW( Invalid_File_Format );
} }
loader.charstrings.init = 0; loader.charstrings.init = 0;
@ -185,7 +185,7 @@
if ( !psaux ) if ( !psaux )
{ {
FT_ERROR(( "T42_Face_Init: cannot access `psaux' module\n" )); FT_ERROR(( "T42_Face_Init: cannot access `psaux' module\n" ));
error = T42_Err_Missing_Module; error = FT_THROW( Missing_Module );
goto Exit; goto Exit;
} }
@ -204,7 +204,7 @@
if ( face_index > 0 ) if ( face_index > 0 )
{ {
FT_ERROR(( "T42_Face_Init: invalid face index\n" )); FT_ERROR(( "T42_Face_Init: invalid face index\n" ));
error = T42_Err_Invalid_Argument; error = FT_THROW( Invalid_Argument );
goto Exit; goto Exit;
} }
@ -347,8 +347,8 @@
charmap.encoding = FT_ENCODING_UNICODE; charmap.encoding = FT_ENCODING_UNICODE;
error = FT_CMap_New( cmap_classes->unicode, NULL, &charmap, NULL ); error = FT_CMap_New( cmap_classes->unicode, NULL, &charmap, NULL );
if ( error && if ( error &&
FT_ERROR_BASE( error) != FT_Err_No_Unicode_Glyph_Name ) FT_ERROR_BASE( error ) != FT_Err_No_Unicode_Glyph_Name )
goto Exit; goto Exit;
error = FT_Err_Ok; error = FT_Err_Ok;
@ -482,7 +482,7 @@
if ( !ttmodule ) if ( !ttmodule )
{ {
FT_ERROR(( "T42_Driver_Init: cannot access `truetype' module\n" )); FT_ERROR(( "T42_Driver_Init: cannot access `truetype' module\n" ));
return T42_Err_Missing_Module; return FT_THROW( Missing_Module );
} }
driver->ttclazz = (FT_Driver_Class)ttmodule->clazz; driver->ttclazz = (FT_Driver_Class)ttmodule->clazz;

View File

@ -4,7 +4,7 @@
/* */ /* */
/* Type 42 font parser (body). */ /* Type 42 font parser (body). */
/* */ /* */
/* Copyright 2002-2012 by */ /* Copyright 2002-2013 by */
/* Roberto Alameda. */ /* Roberto Alameda. */
/* */ /* */
/* This file is part of the FreeType project, and may only be used, */ /* This file is part of the FreeType project, and may only be used, */
@ -176,7 +176,7 @@
if ( ft_memcmp( stream->cursor, "%!PS-TrueTypeFont", 17 ) != 0 ) if ( ft_memcmp( stream->cursor, "%!PS-TrueTypeFont", 17 ) != 0 )
{ {
FT_TRACE2(( " not a Type42 font\n" )); FT_TRACE2(( " not a Type42 font\n" ));
error = T42_Err_Unknown_File_Format; error = FT_THROW( Unknown_File_Format );
} }
FT_FRAME_EXIT(); FT_FRAME_EXIT();
@ -305,7 +305,7 @@
if ( cur >= limit ) if ( cur >= limit )
{ {
FT_ERROR(( "t42_parse_encoding: out of bounds\n" )); FT_ERROR(( "t42_parse_encoding: out of bounds\n" ));
parser->root.error = T42_Err_Invalid_File_Format; parser->root.error = FT_THROW( Invalid_File_Format );
return; return;
} }
@ -473,7 +473,7 @@
else else
{ {
FT_ERROR(( "t42_parse_encoding: invalid token\n" )); FT_ERROR(( "t42_parse_encoding: invalid token\n" ));
parser->root.error = T42_Err_Invalid_File_Format; parser->root.error = FT_THROW( Invalid_File_Format );
} }
} }
} }
@ -526,7 +526,7 @@
if ( parser->root.cursor >= limit || *parser->root.cursor++ != '[' ) if ( parser->root.cursor >= limit || *parser->root.cursor++ != '[' )
{ {
FT_ERROR(( "t42_parse_sfnts: can't find begin of sfnts vector\n" )); FT_ERROR(( "t42_parse_sfnts: can't find begin of sfnts vector\n" ));
error = T42_Err_Invalid_File_Format; error = FT_THROW( Invalid_File_Format );
goto Fail; goto Fail;
} }
@ -571,7 +571,7 @@
{ {
FT_ERROR(( "t42_parse_sfnts: " FT_ERROR(( "t42_parse_sfnts: "
"can't handle mixed binary and hex strings\n" )); "can't handle mixed binary and hex strings\n" ));
error = T42_Err_Invalid_File_Format; error = FT_THROW( Invalid_File_Format );
goto Fail; goto Fail;
} }
@ -579,7 +579,7 @@
if ( string_size < 0 ) if ( string_size < 0 )
{ {
FT_ERROR(( "t42_parse_sfnts: invalid string size\n" )); FT_ERROR(( "t42_parse_sfnts: invalid string size\n" ));
error = T42_Err_Invalid_File_Format; error = FT_THROW( Invalid_File_Format );
goto Fail; goto Fail;
} }
@ -592,7 +592,7 @@
if ( limit - parser->root.cursor < string_size ) if ( limit - parser->root.cursor < string_size )
{ {
FT_ERROR(( "t42_parse_sfnts: too many binary data\n" )); FT_ERROR(( "t42_parse_sfnts: too many binary data\n" ));
error = T42_Err_Invalid_File_Format; error = FT_THROW( Invalid_File_Format );
goto Fail; goto Fail;
} }
else else
@ -602,7 +602,7 @@
if ( !string_buf ) if ( !string_buf )
{ {
FT_ERROR(( "t42_parse_sfnts: invalid data in sfnts array\n" )); FT_ERROR(( "t42_parse_sfnts: invalid data in sfnts array\n" ));
error = T42_Err_Invalid_File_Format; error = FT_THROW( Invalid_File_Format );
goto Fail; goto Fail;
} }
@ -614,7 +614,7 @@
if ( !string_size ) if ( !string_size )
{ {
FT_ERROR(( "t42_parse_sfnts: invalid string\n" )); FT_ERROR(( "t42_parse_sfnts: invalid string\n" ));
error = T42_Err_Invalid_File_Format; error = FT_THROW( Invalid_File_Format );
goto Fail; goto Fail;
} }
@ -679,7 +679,7 @@
if ( count >= ttf_size ) if ( count >= ttf_size )
{ {
FT_ERROR(( "t42_parse_sfnts: too many binary data\n" )); FT_ERROR(( "t42_parse_sfnts: too many binary data\n" ));
error = T42_Err_Invalid_File_Format; error = FT_THROW( Invalid_File_Format );
goto Fail; goto Fail;
} }
face->ttf_data[count++] = string_buf[n]; face->ttf_data[count++] = string_buf[n];
@ -690,7 +690,7 @@
} }
/* if control reaches this point, the format was not valid */ /* if control reaches this point, the format was not valid */
error = T42_Err_Invalid_File_Format; error = FT_THROW( Invalid_File_Format );
Fail: Fail:
parser->root.error = error; parser->root.error = error;
@ -726,7 +726,7 @@
if ( parser->root.cursor >= limit ) if ( parser->root.cursor >= limit )
{ {
FT_ERROR(( "t42_parse_charstrings: out of bounds\n" )); FT_ERROR(( "t42_parse_charstrings: out of bounds\n" ));
error = T42_Err_Invalid_File_Format; error = FT_THROW( Invalid_File_Format );
goto Fail; goto Fail;
} }
@ -768,14 +768,14 @@
else else
{ {
FT_ERROR(( "t42_parse_charstrings: invalid token\n" )); FT_ERROR(( "t42_parse_charstrings: invalid token\n" ));
error = T42_Err_Invalid_File_Format; error = FT_THROW( Invalid_File_Format );
goto Fail; goto Fail;
} }
if ( parser->root.cursor >= limit ) if ( parser->root.cursor >= limit )
{ {
FT_ERROR(( "t42_parse_charstrings: out of bounds\n" )); FT_ERROR(( "t42_parse_charstrings: out of bounds\n" ));
error = T42_Err_Invalid_File_Format; error = FT_THROW( Invalid_File_Format );
goto Fail; goto Fail;
} }
@ -835,7 +835,7 @@
if ( cur + 1 >= limit ) if ( cur + 1 >= limit )
{ {
FT_ERROR(( "t42_parse_charstrings: out of bounds\n" )); FT_ERROR(( "t42_parse_charstrings: out of bounds\n" ));
error = T42_Err_Invalid_File_Format; error = FT_THROW( Invalid_File_Format );
goto Fail; goto Fail;
} }
@ -866,7 +866,7 @@
if ( parser->root.cursor >= limit ) if ( parser->root.cursor >= limit )
{ {
FT_ERROR(( "t42_parse_charstrings: out of bounds\n" )); FT_ERROR(( "t42_parse_charstrings: out of bounds\n" ));
error = T42_Err_Invalid_File_Format; error = FT_THROW( Invalid_File_Format );
goto Fail; goto Fail;
} }
@ -889,7 +889,7 @@
if ( !notdef_found ) if ( !notdef_found )
{ {
FT_ERROR(( "t42_parse_charstrings: no /.notdef glyph\n" )); FT_ERROR(( "t42_parse_charstrings: no /.notdef glyph\n" ));
error = T42_Err_Invalid_File_Format; error = FT_THROW( Invalid_File_Format );
goto Fail; goto Fail;
} }

View File

@ -4,7 +4,7 @@
/* */ /* */
/* FreeType font driver for Windows FNT/FON files */ /* FreeType font driver for Windows FNT/FON files */
/* */ /* */
/* Copyright 1996-2004, 2006-2012 by */ /* Copyright 1996-2004, 2006-2013 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* Copyright 2003 Huw D M Davies for Codeweavers */ /* Copyright 2003 Huw D M Davies for Codeweavers */
/* Copyright 2007 Dmitry Timoshkov for Codeweavers */ /* Copyright 2007 Dmitry Timoshkov for Codeweavers */
@ -225,7 +225,7 @@
header->version != 0x300 ) header->version != 0x300 )
{ {
FT_TRACE2(( " not a Windows FNT file\n" )); FT_TRACE2(( " not a Windows FNT file\n" ));
error = FNT_Err_Unknown_File_Format; error = FT_THROW( Unknown_File_Format );
goto Exit; goto Exit;
} }
@ -235,7 +235,7 @@
if ( header->file_size < size ) if ( header->file_size < size )
{ {
FT_TRACE2(( " not a Windows FNT file\n" )); FT_TRACE2(( " not a Windows FNT file\n" ));
error = FNT_Err_Unknown_File_Format; error = FT_THROW( Unknown_File_Format );
goto Exit; goto Exit;
} }
@ -253,7 +253,7 @@
if ( header->file_type & 1 ) if ( header->file_type & 1 )
{ {
FT_TRACE2(( "[can't handle vector FNT fonts]\n" )); FT_TRACE2(( "[can't handle vector FNT fonts]\n" ));
error = FNT_Err_Unknown_File_Format; error = FT_THROW( Unknown_File_Format );
goto Exit; goto Exit;
} }
@ -344,7 +344,7 @@
if ( !font_count || !font_offset ) if ( !font_count || !font_offset )
{ {
FT_TRACE2(( "this file doesn't contain any FNT resources\n" )); FT_TRACE2(( "this file doesn't contain any FNT resources\n" ));
error = FNT_Err_Invalid_File_Format; error = FT_THROW( Invalid_File_Format );
goto Exit; goto Exit;
} }
@ -353,7 +353,7 @@
if ( font_count * 118UL > stream->size ) if ( font_count * 118UL > stream->size )
{ {
FT_TRACE2(( "invalid number of faces\n" )); FT_TRACE2(( "invalid number of faces\n" ));
error = FNT_Err_Invalid_File_Format; error = FT_THROW( Invalid_File_Format );
goto Exit; goto Exit;
} }
@ -361,7 +361,7 @@
if ( face_index >= font_count ) if ( face_index >= font_count )
{ {
error = FNT_Err_Invalid_Argument; error = FT_THROW( Invalid_Argument );
goto Exit; goto Exit;
} }
else if ( face_index < 0 ) else if ( face_index < 0 )
@ -417,7 +417,7 @@
pe32_header.magic32 != 0x10b ) pe32_header.magic32 != 0x10b )
{ {
FT_TRACE2(( "this file has an invalid PE header\n" )); FT_TRACE2(( "this file has an invalid PE header\n" ));
error = FNT_Err_Invalid_File_Format; error = FT_THROW( Invalid_File_Format );
goto Exit; goto Exit;
} }
@ -440,7 +440,7 @@
} }
FT_TRACE2(( "this file doesn't contain any resources\n" )); FT_TRACE2(( "this file doesn't contain any resources\n" ));
error = FNT_Err_Invalid_File_Format; error = FT_THROW( Invalid_File_Format );
goto Exit; goto Exit;
Found_rsrc_section: Found_rsrc_section:
@ -462,7 +462,7 @@
if ( !(dir_entry1.offset & 0x80000000UL ) /* DataIsDirectory */ ) if ( !(dir_entry1.offset & 0x80000000UL ) /* DataIsDirectory */ )
{ {
error = FNT_Err_Invalid_File_Format; error = FT_THROW( Invalid_File_Format );
goto Exit; goto Exit;
} }
@ -486,7 +486,7 @@
if ( !(dir_entry2.offset & 0x80000000UL ) /* DataIsDirectory */ ) if ( !(dir_entry2.offset & 0x80000000UL ) /* DataIsDirectory */ )
{ {
error = FNT_Err_Invalid_File_Format; error = FT_THROW( Invalid_File_Format );
goto Exit; goto Exit;
} }
@ -510,7 +510,7 @@
if ( dir_entry2.offset & 0x80000000UL /* DataIsDirectory */ ) if ( dir_entry2.offset & 0x80000000UL /* DataIsDirectory */ )
{ {
error = FNT_Err_Invalid_File_Format; error = FT_THROW( Invalid_File_Format );
goto Exit; goto Exit;
} }
@ -561,13 +561,13 @@
if ( !face->root.num_faces ) if ( !face->root.num_faces )
{ {
FT_TRACE2(( "this file doesn't contain any RT_FONT resources\n" )); FT_TRACE2(( "this file doesn't contain any RT_FONT resources\n" ));
error = FNT_Err_Invalid_File_Format; error = FT_THROW( Invalid_File_Format );
goto Exit; goto Exit;
} }
if ( face_index >= face->root.num_faces ) if ( face_index >= face->root.num_faces )
{ {
error = FNT_Err_Invalid_Argument; error = FT_THROW( Invalid_Argument );
goto Exit; goto Exit;
} }
} }
@ -724,7 +724,7 @@
if ( !error ) if ( !error )
{ {
if ( face_index > 0 ) if ( face_index > 0 )
error = FNT_Err_Invalid_Argument; error = FT_THROW( Invalid_Argument );
else if ( face_index < 0 ) else if ( face_index < 0 )
goto Exit; goto Exit;
} }
@ -836,7 +836,7 @@
if ( font->header.last_char < font->header.first_char ) if ( font->header.last_char < font->header.first_char )
{ {
FT_TRACE2(( "invalid number of glyphs\n" )); FT_TRACE2(( "invalid number of glyphs\n" ));
error = FNT_Err_Invalid_File_Format; error = FT_THROW( Invalid_File_Format );
goto Fail; goto Fail;
} }
@ -847,7 +847,7 @@
if ( font->header.face_name_offset >= font->header.file_size ) if ( font->header.face_name_offset >= font->header.file_size )
{ {
FT_TRACE2(( "invalid family name offset\n" )); FT_TRACE2(( "invalid family name offset\n" ));
error = FNT_Err_Invalid_File_Format; error = FT_THROW( Invalid_File_Format );
goto Fail; goto Fail;
} }
family_size = font->header.file_size - font->header.face_name_offset; family_size = font->header.file_size - font->header.face_name_offset;
@ -940,7 +940,7 @@
break; break;
default: default:
error = FNT_Err_Unimplemented_Feature; error = FT_THROW( Unimplemented_Feature );
break; break;
} }
@ -971,7 +971,7 @@
if ( !face ) if ( !face )
{ {
error = FNT_Err_Invalid_Argument; error = FT_THROW( Invalid_Argument );
goto Exit; goto Exit;
} }
@ -980,7 +980,7 @@
if ( !font || if ( !font ||
glyph_index >= (FT_UInt)( FT_FACE( face )->num_glyphs ) ) glyph_index >= (FT_UInt)( FT_FACE( face )->num_glyphs ) )
{ {
error = FNT_Err_Invalid_Argument; error = FT_THROW( Invalid_Argument );
goto Exit; goto Exit;
} }
@ -1005,7 +1005,7 @@
if ( offset >= font->header.file_size ) if ( offset >= font->header.file_size )
{ {
FT_TRACE2(( "invalid FNT offset\n" )); FT_TRACE2(( "invalid FNT offset\n" ));
error = FNT_Err_Invalid_File_Format; error = FT_THROW( Invalid_File_Format );
goto Exit; goto Exit;
} }
@ -1027,7 +1027,7 @@
if ( offset + pitch * bitmap->rows >= font->header.file_size ) if ( offset + pitch * bitmap->rows >= font->header.file_size )
{ {
FT_TRACE2(( "invalid bitmap width\n" )); FT_TRACE2(( "invalid bitmap width\n" ));
error = FNT_Err_Invalid_File_Format; error = FT_THROW( Invalid_File_Format );
goto Exit; goto Exit;
} }