]> granicus.if.org Git - graphviz/commitdiff
portcmp: rephrase to avoid conversion to int
authorMatthew Fernandez <matthew.fernandez@gmail.com>
Thu, 7 Oct 2021 02:57:42 +0000 (19:57 -0700)
committerMatthew Fernandez <matthew.fernandez@gmail.com>
Sun, 10 Oct 2021 18:15:10 +0000 (11:15 -0700)
This function was seemingly incorrectly casting the (float) result of a float
subtraction to an integer. Apart from triggering compiler warnings, this had the
effect of concluding points that were merely close together were actually equal.

lib/dotgen/dotsplines.c

index 3abe30e87c63101e2e258aad95ff69d9a6fa7fb7..aadb4fa43005da84d4aaa2874d5df1653e36d72d 100644 (file)
@@ -170,15 +170,19 @@ static splineInfo sinfo = {.swapEnds = swap_ends_p,
 
 int portcmp(port p0, port p1)
 {
-    int rv;
     if (p1.defined == FALSE)
        return (p0.defined ? 1 : 0);
     if (p0.defined == FALSE)
        return -1;
-    rv = p0.p.x - p1.p.x;
-    if (rv == 0)
-       rv = p0.p.y - p1.p.y;
-    return rv;
+    if (p0.p.x < p1.p.x)
+       return -1;
+    if (p0.p.x > p1.p.x)
+       return 1;
+    if (p0.p.y < p1.p.y)
+       return -1;
+    if (p0.p.y > p1.p.y)
+       return 1;
+    return 0;
 }
 
 /* swap_bezier: