diff --git a/src/nfagraph/ng_violet.cpp b/src/nfagraph/ng_violet.cpp index 757582f5..26fb0ef5 100644 --- a/src/nfagraph/ng_violet.cpp +++ b/src/nfagraph/ng_violet.cpp @@ -2529,15 +2529,22 @@ bool lookForCleanSplit(const NGHolder &h, const vector &ee, static void lookForCleanEarlySplits(RoseInGraph &vg, const CompileContext &cc) { u32 gen = 0; - set prev = {getStart(vg)}; + + vector prev = {getStart(vg)}; while (gen < MAX_DESIRED_CLEAN_SPLIT_DEPTH) { - set curr; + /* collect vertices in edge order for determinism */ + vector curr; + set curr_seen; for (RoseInVertex u : prev) { - insert(&curr, adjacent_vertices(u, vg)); + for (auto v : adjacent_vertices_range(u, vg)) { + if (curr_seen.insert(v).second) { + curr.push_back(v); + } + } } - map > rightfixes; + map> rightfixes; vector ordered_graphs; for (RoseInVertex v : curr) { for (const RoseInEdge &e : out_edges_range(v, vg)) {