From aa557a908a9f3a865f9cb06b5d14648fab88acb9 Mon Sep 17 00:00:00 2001 From: David Turner Date: Mon, 4 Sep 2006 16:42:44 +0000 Subject: [PATCH] fix for the latest rasterizer optimization --- ChangeLog | 6 +++++- src/smooth/ftgrays.c | 13 ++++++++----- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/ChangeLog b/ChangeLog index b299b53d9..a375123ba 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2006-09-04 David Turner + + * src/smooth/ftgrays.c: fix for the latest rasterizer optimization + 2006-09-03 Werner Lemberg * devel/ftoption.h: Synchronize with @@ -1293,7 +1297,7 @@ compatibility code. * src/cache/ftcbasic.c: Fix a silly bug that prevented our `hack' to - support rogue clients compiled against 2.1.7 to work correctly. + support rogue clients compiled against 2.1.7 to work correctly. This probably explains the GNUstep crashes with the second release candidate. diff --git a/src/smooth/ftgrays.c b/src/smooth/ftgrays.c index 0410d5f96..08b797ef4 100644 --- a/src/smooth/ftgrays.c +++ b/src/smooth/ftgrays.c @@ -1651,21 +1651,21 @@ typedef struct TCell_ { PCell cells_max; int yindex; - long cell_start, cell_mod; + long cell_start, cell_end, cell_mod; ras.ycells = (PCell*)ras.buffer; ras.ycount = band->max - band->min; - for ( yindex = 0; yindex < ras.ycount; yindex++ ) - ras.ycells[yindex] = NULL; - cell_start = sizeof ( PCell ) * ras.ycount; cell_mod = cell_start % sizeof ( TCell ); if ( cell_mod > 0 ) cell_start += sizeof ( TCell ) - cell_mod; - cells_max = (PCell)( (char*)ras.buffer + ras.buffer_size ); + cell_end = ras.buffer_size; + cell_end -= cell_end % sizeof( TCell ); + + cells_max = (PCell)( (char*)ras.buffer + cell_end ); ras.cells = (PCell)( (char*)ras.buffer + cell_start ); if ( ras.cells >= cells_max ) goto ReduceBands; @@ -1673,6 +1673,9 @@ typedef struct TCell_ ras.max_cells = cells_max - ras.cells; if ( ras.max_cells < 2 ) goto ReduceBands; + + for ( yindex = 0; yindex < ras.ycount; yindex++ ) + ras.ycells[yindex] = NULL; } ras.num_cells = 0;