From afa2e0fb0d3affceb06c111acca381dff6a032c4 Mon Sep 17 00:00:00 2001 From: Lukas Zaoral Date: Thu, 29 Jul 2021 14:42:03 +0200 Subject: [PATCH 1/2] csfilter.cc: fix checker regex matching Previously only whole strings were matched e.g. `COMPILER_WARNING`. Now we can use regexes like `COMPILER|DIVINE` as well. Fixes #23 --- src/csfilter.cc | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/src/csfilter.cc b/src/csfilter.cc index d4382cf9..cf1d321f 100644 --- a/src/csfilter.cc +++ b/src/csfilter.cc @@ -74,14 +74,10 @@ struct MsgFilter::Private { const RE reTmpCleaner = RE("(.*)"); void addMsgFilter( - std::string checker, + const std::string &checker, const std::string ®exp, const std::string &replacement = "") { - if (checker.empty()) - // match everything - checker = ".*"; - this->repList.push_back(new MsgReplace(checker, regexp, replacement)); } }; @@ -170,7 +166,7 @@ std::string MsgFilter::filterMsg( { std::string filtered = msg; for (const struct MsgReplace *rpl : d->repList) - if (boost::regex_match(checker, rpl->reChecker)) + if (boost::regex_search(checker, rpl->reChecker)) filtered = regexReplaceWrap(filtered, rpl->reMsg, rpl->replaceWith); #if DEBUG_SUBST > 1 From d9b4cee4250ff4b12962e10212c71118020575a4 Mon Sep 17 00:00:00 2001 From: Lukas Zaoral Date: Thu, 29 Jul 2021 14:45:37 +0200 Subject: [PATCH 2/2] csfilter.cc: store MsgReplace directly in TMsgReplaceList ... as the contents of std::vector are already allocated on the heap. --- src/csfilter.cc | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/src/csfilter.cc b/src/csfilter.cc index cf1d321f..7d817d24 100644 --- a/src/csfilter.cc +++ b/src/csfilter.cc @@ -57,7 +57,7 @@ struct MsgReplace { } }; -typedef std::vector TMsgReplaceList; +typedef std::vector TMsgReplaceList; struct MsgFilter::Private { bool ignorePath = false; @@ -78,7 +78,7 @@ struct MsgFilter::Private { const std::string ®exp, const std::string &replacement = "") { - this->repList.push_back(new MsgReplace(checker, regexp, replacement)); + repList.emplace_back(checker, regexp, replacement); } }; @@ -142,9 +142,6 @@ MsgFilter::MsgFilter(): MsgFilter::~MsgFilter() { - for (struct MsgReplace *rpl : d->repList) - delete rpl; - delete d; } @@ -165,9 +162,9 @@ std::string MsgFilter::filterMsg( const std::string &checker) { std::string filtered = msg; - for (const struct MsgReplace *rpl : d->repList) - if (boost::regex_search(checker, rpl->reChecker)) - filtered = regexReplaceWrap(filtered, rpl->reMsg, rpl->replaceWith); + for (const MsgReplace &rpl : d->repList) + if (boost::regex_search(checker, rpl.reChecker)) + filtered = regexReplaceWrap(filtered, rpl.reMsg, rpl.replaceWith); #if DEBUG_SUBST > 1 std::cerr << "filterMsg: " << filtered << "\n";