]> granicus.if.org Git - graphviz/commitdiff
common textfont_comparf: 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/common/textspan.c

index f9c60b259246c87c7f7cc62f6c36b71cd103ab0f..dc54287c2bf8e15a3d7528f3a2bd74fe3140c189 100644 (file)
@@ -152,8 +152,8 @@ static int textfont_comparf (Dt_t* dt, void* key1, void* key2, Dtdisc_t* disc)
         rc = strcmp(f1->color, f2->color);
         if (rc) return rc;
     }
-    rc = (f1->flags - f2->flags);
-    if (rc) return rc;
+    if (f1->flags < f2->flags) return -1;
+    if (f1->flags > f2->flags) return 1;
     if (f1->size < f2->size) return -1;
     if (f1->size > f2->size) return 1;
     return 0;