From 6ca54c643094800c1915dd856b9ea36276fe1e97 Mon Sep 17 00:00:00 2001 From: Alexei Podtelezhnikov Date: Sun, 11 Sep 2016 16:00:52 -0400 Subject: [PATCH] [smooth] Fix valgrind warning and reoptimize. The algorithm calls `gray_set_cell' at the start of each new contour or when the contours cross the cell boundaries. Double-checking for that is wasteful. * src/smooth/ftgrays.c (gray_set_cell): Remove check for a new cell. (gray_convert_glyph): Remove initialization introduced by 44b172e88. --- ChangeLog | 11 +++++++++++ src/smooth/ftgrays.c | 21 +++++++++------------ 2 files changed, 20 insertions(+), 12 deletions(-) diff --git a/ChangeLog b/ChangeLog index b4e80ca86..d2a9efe13 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,14 @@ +2016-09-11 Alexei Podtelezhnikov + + [smooth] Fix valgrind warning and reoptimize. + + The algorithm calls `gray_set_cell' at the start of each new contour + or when the contours cross the cell boundaries. Double-checking for + that is wasteful. + + * src/smooth/ftgrays.c (gray_set_cell): Remove check for a new cell. + (gray_convert_glyph): Remove initialization introduced by 44b172e88. + 2016-09-10 Werner Lemberg [sfnt] Fix previous commit. diff --git a/src/smooth/ftgrays.c b/src/smooth/ftgrays.c index 59fafdb4d..8f85ec2f5 100644 --- a/src/smooth/ftgrays.c +++ b/src/smooth/ftgrays.c @@ -577,24 +577,21 @@ typedef ptrdiff_t FT_PtrDist; /* All cells that are on the left of the clipping region go to the */ /* min_ex - 1 horizontal position. */ + if ( ex > ras.max_ex ) ex = ras.max_ex; if ( ex < ras.min_ex ) ex = ras.min_ex - 1; - /* are we moving to a different cell ? */ - if ( ex != ras.ex || ey != ras.ey ) - { - /* record the current one if it is valid */ - if ( !ras.invalid ) - gray_record_cell( RAS_VAR ); + /* record the current one if it is valid */ + if ( !ras.invalid ) + gray_record_cell( RAS_VAR ); - ras.area = 0; - ras.cover = 0; - ras.ex = ex; - ras.ey = ey; - } + ras.area = 0; + ras.cover = 0; + ras.ex = ex; + ras.ey = ey; ras.invalid = ( ey >= ras.max_ey || ey < ras.min_ey || ex >= ras.max_ex ); @@ -1820,7 +1817,7 @@ typedef ptrdiff_t FT_PtrDist; ras.num_cells = 0; ras.invalid = 1; ras.min_ey = band[1]; - ras.max_ey = ras.ey = band[0]; + ras.max_ey = band[0]; error = gray_convert_glyph_inner( RAS_VAR );