summaryrefslogtreecommitdiff
path: root/src/cairo-slope.c
diff options
context:
space:
mode:
authorBehdad Esfahbod <behdad@behdad.org>2007-03-09 16:23:35 -0500
committerBehdad Esfahbod <behdad@behdad.org>2007-03-13 05:14:20 -0400
commit6976ab1392e0fd07a081e6d6056510070e1d6df9 (patch)
treeb449c666339636132397a860dad93765239fdde0 /src/cairo-slope.c
parent9eee167210b6cc562014652572872cf0a7ccb00e (diff)
downloadcairo-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.c8
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)