diff --git a/grid.c b/grid.c index 90a9278..04bb8a3 100644 --- a/grid.c +++ b/grid.c @@ -342,21 +342,23 @@ static int grid_edge_bydots_cmpfn(void *v1, void *v2) grid_edge *b = v2; grid_dot *da, *db; - /* Pointer subtraction is valid here, because all dots point into the - * same dot-list (g->dots). - * Edges are not "normalised" - the 2 dots could be stored in any order, + /* Edges are not "normalised" - the 2 dots could be stored in any order, * so we need to take this into account when comparing edges. */ /* Compare first dots */ da = (a->dot1 < a->dot2) ? a->dot1 : a->dot2; db = (b->dot1 < b->dot2) ? b->dot1 : b->dot2; - if (da != db) - return db - da; + if (da->index < db->index) + return -1; + if (da->index > db->index) + return +1; /* Compare last dots */ da = (a->dot1 < a->dot2) ? a->dot2 : a->dot1; db = (b->dot1 < b->dot2) ? b->dot2 : b->dot1; - if (da != db) - return db - da; + if (da->index < db->index) + return -1; + if (da->index > db->index) + return +1; return 0; }