]> granicus.if.org Git - graphviz/commitdiff
gvcolor cmpf: rephrase comparator to avoid arithmetic
authorMatthew Fernandez <matthew.fernandez@gmail.com>
Fri, 8 Jul 2022 00:24:05 +0000 (17:24 -0700)
committerMatthew Fernandez <matthew.fernandez@gmail.com>
Sun, 24 Jul 2022 04:51:17 +0000 (21:51 -0700)
cccb8b1d22a18031fc92d93133c7fa14ef7e1361 fixed an integer overflow in a
`memcmp`-/`strcmp`-like comparator. The same situation exists in the code
touched in this commit. Rather than wait for an edge case to expose an overflow
here, this change makes the same update, removing arithmetic and the consequent
possibility of overflow.

cmd/tools/gvcolor.c

index d60b607dc90c3d1a4a2caf6fce2235a50bdf8f91..e0a1d872ccbc9ba76058d8777ed68b3363581448 100644 (file)
@@ -53,11 +53,11 @@ extern char *colorxlate(char *str, char *buf);
 
 static int cmpf(Agnode_t ** n0, Agnode_t ** n1)
 {
-    double t;
-    t = ND_relrank(*n0) - ND_relrank(*n1);
-    if (t < 0.0)
+    double relrank0 = ND_relrank(*n0);
+    double relrank1 = ND_relrank(*n1);
+    if (relrank0 < relrank1)
        return -1;
-    if (t > 0.0)
+    if (relrank0 > relrank1)
        return 1;
     return 0;
 }