diff options
author | Behdad Esfahbod <behdad@behdad.org> | 2007-03-09 16:23:35 -0500 |
---|---|---|
committer | Behdad Esfahbod <behdad@behdad.org> | 2007-03-13 05:14:20 -0400 |
commit | 6976ab1392e0fd07a081e6d6056510070e1d6df9 (patch) | |
tree | b449c666339636132397a860dad93765239fdde0 /src/cairo-slope.c | |
parent | 9eee167210b6cc562014652572872cf0a7ccb00e (diff) | |
download | cairo-6976ab1392e0fd07a081e6d6056510070e1d6df9.tar.gz |
[cairo-slope] Make comparison stable if both vectors are zero
Diffstat (limited to 'src/cairo-slope.c')
-rw-r--r-- | src/cairo-slope.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/src/cairo-slope.c b/src/cairo-slope.c index 2c888e404..78664c538 100644 --- a/src/cairo-slope.c +++ b/src/cairo-slope.c @@ -51,7 +51,7 @@ _cairo_slope_init (cairo_slope_t *slope, cairo_point_t *a, cairo_point_t *b) difference between a and b is less than PI. < 0 => a less positive than b - == 0 => a equal to be + == 0 => a equal to b > 0 => a more positive than b */ int @@ -67,6 +67,12 @@ _cairo_slope_compare (cairo_slope_t *a, cairo_slope_t *b) if (diff < 0) return -1; + /* special-case zero vectors. the intended logic here is: + * zero vectors all compare equal, and more positive than any + * non-zero vector. + */ + if (a->dx == 0 && a->dy == 0 && b->dx == 0 && b->dy ==0) + return 0; if (a->dx == 0 && a->dy == 0) return 1; if (b->dx == 0 && b->dy ==0) |