From 054749f9ee22cf4bdbe700ab2c86136f520d6499 Mon Sep 17 00:00:00 2001 From: Justin Viiret Date: Tue, 11 Oct 2016 15:36:16 +1100 Subject: [PATCH] smallwrite: minimize DFAs if they have been pruned --- src/smallwrite/smallwrite_build.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/smallwrite/smallwrite_build.cpp b/src/smallwrite/smallwrite_build.cpp index 65361c6f..d395a7af 100644 --- a/src/smallwrite/smallwrite_build.cpp +++ b/src/smallwrite/smallwrite_build.cpp @@ -30,6 +30,7 @@ #include "grey.h" #include "ue2common.h" +#include "nfa/dfa_min.h" #include "nfa/mcclellancompile.h" #include "nfa/mcclellancompile_util.h" #include "nfa/nfa_internal.h" @@ -208,7 +209,9 @@ void SmallWriteBuildImpl::add(const NGWrapper &w) { return; } - prune_overlong(*r, cc.grey.smallWriteLargestBuffer); + if (prune_overlong(*r, cc.grey.smallWriteLargestBuffer)) { + minimize_hopcroft(*r, cc.grey); + } if (rdfa) { // do a merge of the new dfa with the existing dfa @@ -418,6 +421,7 @@ aligned_unique_ptr prepEngine(raw_dfa &rdfa, u32 roseQuality, return nullptr; } if (prune_overlong(rdfa, *small_region - *start_offset)) { + minimize_hopcroft(rdfa, cc.grey); if (rdfa.start_anchored == DEAD_STATE) { DEBUG_PRINTF("all patterns pruned out\n"); return nullptr;