< prev index next >
src/java.desktop/share/native/libfreetype/src/base/ftgloadr.c
Print this page
*** 2,12 ****
*
* ftgloadr.c
*
* The FreeType glyph loader (body).
*
! * Copyright (C) 2002-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg
*
* This file is part of the FreeType project, and may only be used,
* modified, and distributed under the terms of the FreeType project
* license, LICENSE.TXT. By continuing to use, modify, or distribute
--- 2,12 ----
*
* ftgloadr.c
*
* The FreeType glyph loader (body).
*
! * Copyright (C) 2002-2020 by
* David Turner, Robert Wilhelm, and Werner Lemberg
*
* This file is part of the FreeType project, and may only be used,
* modified, and distributed under the terms of the FreeType project
* license, LICENSE.TXT. By continuing to use, modify, or distribute
*** 144,156 ****
{
FT_Outline* base = &loader->base.outline;
FT_Outline* current = &loader->current.outline;
! current->points = base->points + base->n_points;
! current->tags = base->tags + base->n_points;
! current->contours = base->contours + base->n_contours;
/* handle extra points table - if any */
if ( loader->use_extra )
{
loader->current.extra_points = loader->base.extra_points +
--- 144,156 ----
{
FT_Outline* base = &loader->base.outline;
FT_Outline* current = &loader->current.outline;
! current->points = FT_OFFSET( base->points, base->n_points );
! current->tags = FT_OFFSET( base->tags, base->n_points );
! current->contours = FT_OFFSET( base->contours, base->n_contours );
/* handle extra points table - if any */
if ( loader->use_extra )
{
loader->current.extra_points = loader->base.extra_points +
*** 167,176 ****
--- 167,180 ----
{
FT_Error error;
FT_Memory memory = loader->memory;
+ if ( loader->max_points == 0 ||
+ loader->base.extra_points != NULL )
+ return FT_Err_Ok;
+
if ( !FT_NEW_ARRAY( loader->base.extra_points, 2 * loader->max_points ) )
{
loader->use_extra = 1;
loader->base.extra_points2 = loader->base.extra_points +
loader->max_points;
*** 187,197 ****
{
FT_GlyphLoad base = &loader->base;
FT_GlyphLoad current = &loader->current;
! current->subglyphs = base->subglyphs + base->num_subglyphs;
}
/* Ensure that we can add `n_points' and `n_contours' to our glyph. */
/* This function reallocates its outline tables if necessary. Note that */
--- 191,201 ----
{
FT_GlyphLoad base = &loader->base;
FT_GlyphLoad current = &loader->current;
! current->subglyphs = FT_OFFSET( base->subglyphs, base->num_subglyphs );
}
/* Ensure that we can add `n_points' and `n_contours' to our glyph. */
/* This function reallocates its outline tables if necessary. Note that */
*** 209,218 ****
--- 213,226 ----
FT_Bool adjust = 0;
FT_UInt new_max, old_max;
+ error = FT_GlyphLoader_CreateExtra( loader );
+ if ( error )
+ return error;
+
/* check points & tags */
new_max = (FT_UInt)base->n_points + (FT_UInt)current->n_points +
n_points;
old_max = loader->max_points;
*** 242,251 ****
--- 250,263 ----
adjust = 1;
loader->max_points = new_max;
}
+ error = FT_GlyphLoader_CreateExtra( loader );
+ if ( error )
+ return error;
+
/* check contours */
old_max = loader->max_contours;
new_max = (FT_UInt)base->n_contours + (FT_UInt)current->n_contours +
n_contours;
if ( new_max > old_max )
< prev index next >