* src/truetype/ttinterp.c (TT_RunIns): Adjust loop detector limits.
This commit is contained in:
parent
a32270ae0e
commit
43061d6a93
@ -1,3 +1,7 @@
|
||||
2017-01-20 Werner Lemberg <wl@gnu.org>
|
||||
|
||||
* src/truetype/ttinterp.c (TT_RunIns): Adjust loop detector limits.
|
||||
|
||||
2017-01-17 Werner Lemberg <wl@gnu.org>
|
||||
|
||||
* include/freetype/ttnameid.h: Updated to OpenType 1.8.1.
|
||||
|
@ -7611,15 +7611,21 @@
|
||||
/* the number of points in the current glyph (if applicable). */
|
||||
/* */
|
||||
/* The idea is that in real-world bytecode you either iterate over */
|
||||
/* all CVT entries, or over all points (or contours) of a glyph, and */
|
||||
/* such iterations don't happen very often. */
|
||||
/* all CVT entries (in the `prep' table), or over all points (or */
|
||||
/* contours, in the `glyf' table) of a glyph, and such iterations */
|
||||
/* don't happen very often. */
|
||||
exc->loopcall_counter = 0;
|
||||
exc->neg_jump_counter = 0;
|
||||
|
||||
/* The maximum values are heuristic. */
|
||||
exc->loopcall_counter_max = FT_MAX( 100,
|
||||
10 * ( exc->pts.n_points +
|
||||
exc->cvtSize ) );
|
||||
if ( exc->pts.n_points )
|
||||
exc->loopcall_counter_max = FT_MAX( 50,
|
||||
10 * exc->pts.n_points ) +
|
||||
FT_MAX( 50,
|
||||
exc->cvtSize / 10 );
|
||||
else
|
||||
exc->loopcall_counter_max = FT_MAX( 100,
|
||||
5 * exc->cvtSize );
|
||||
FT_TRACE5(( "TT_RunIns: Limiting total number of loops in LOOPCALL"
|
||||
" to %d\n", exc->loopcall_counter_max ));
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user