Index: psobjs.c =================================================================== RCS file: /cvsroot/freetype2/src/psaux/psobjs.c,v retrieving revision 1.9 diff -u -r1.9 psobjs.c --- psobjs.c 2000/08/29 16:50:01 1.9 +++ psobjs.c 2000/10/10 23:15:00 @@ -1242,19 +1242,22 @@ /* is located on the first point. */ if ( outline->n_points > 1 ) { - FT_Int first = 0; - FT_Vector* p1 = outline->points + first; - FT_Vector* p2 = outline->points + outline->n_points - 1; + FT_Int first = 0; + FT_Vector* p1 = outline->points + first; + FT_Vector* p2 = outline->points + outline->n_points - 1; + FT_Byte* control = (FT_Byte*)outline->tags + outline->n_points - 1; - if ( outline->n_contours > 1 ) { - first = outline->contours[outline->n_contours - 2] + 1; - p1 = outline->points + first; + first = outline->contours[outline->n_contours - 2] + 1; + p1 = outline->points + first; } + /* "delete" last point iff it conincides with the first */ + /* point and it is not a control point (which can happen). */ if ( p1->x == p2->x && p1->y == p2->y ) - outline->n_points--; + if ( *control == FT_Curve_Tag_On ) + outline->n_points--; } if ( outline->n_contours > 0 )