]> granicus.if.org Git - graphviz/commitdiff
dotgen nodeposcmpf: 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.

lib/dotgen/mincross.c

index aecf3aa236f69ca115c8987e9b0340d6c3ecba9b..2bb1088185e05ca7f68decd0c1a2d46de8975c50 100644 (file)
@@ -1832,7 +1832,13 @@ static bool medians(graph_t * g, int r0, int r1)
 
 static int nodeposcmpf(node_t ** n0, node_t ** n1)
 {
-    return (ND_order(*n0) - ND_order(*n1));
+  if (ND_order(*n0) < ND_order(*n1)) {
+    return -1;
+  }
+  if (ND_order(*n0) > ND_order(*n1)) {
+    return 1;
+  }
+  return 0;
 }
 
 static int edgeidcmpf(edge_t ** e0, edge_t ** e1)