Index: src/cairo-hull.c =================================================================== RCS file: /cvs/cairo/cairo/src/cairo-hull.c,v retrieving revision 1.9 diff -u -r1.9 cairo-hull.c --- src/cairo-hull.c 21 Aug 2005 18:41:44 -0000 1.9 +++ src/cairo-hull.c 29 Sep 2005 23:51:37 -0000 @@ -41,6 +41,7 @@ cairo_point_t point; cairo_slope_t slope; int discard; + int id; } cairo_hull_t; static cairo_hull_t * @@ -70,10 +71,14 @@ _cairo_slope_init (&hull[i].slope, &hull[0].point, &hull[i].point); /* Discard all points coincident with the extremal point */ - if (i != 0 && hull[i].slope.dx == 0 && hull[i].slope.dy == 0) + if (i != 0 && hull[i].slope.dx == 0 && hull[i].slope.dy == 0) { hull[i].discard = 1; - else + hull[i].id = -i; + } else { hull[i].discard = 0; + hull[i].id = i; + } + hull[i].discard = 0; } return hull; @@ -102,7 +107,7 @@ * a well-defined ordering, and avoid setting discard on * both points. */ - if (a_dist < b_dist || (a_dist == b_dist && a < b)) { + if (a_dist < b_dist || (a_dist == b_dist && a->id < b->id)) { a->discard = 1; ret = -1; } else {