If we remove all the reports from the DFA because they're too deep, then
clear the DFA without depending on Hopcroft minimisation.
}
}
- return changed;
+ if (!changed) {
+ return false;
+ }
+
+ // We may have cleared all reports from the DFA, in which case it should
+ // become empty.
+ if (all_of_in(raw.states, [](const dstate &ds) {
+ return ds.reports.empty() && ds.reports_eod.empty();
+ })) {
+ DEBUG_PRINTF("no reports left at all, dfa is dead\n");
+ raw.states.clear();
+ raw.start_anchored = DEAD_STATE;
+ raw.start_floating = DEAD_STATE;
+ }
+
+ return true;
}
set<ReportID> all_reports(const raw_dfa &rdfa) {