From a48b3df76b2c09c76344f32153555ac35c78e10c Mon Sep 17 00:00:00 2001 From: Oliver Hamlet Date: Fri, 9 Jan 2015 22:43:45 +0000 Subject: [PATCH] Disable the isolated version number regex. It seems to catch mostly false positives. Also use a vector for the version regexes, so no magic number is required. --- src/backend/helpers.cpp | 6 +++--- src/backend/helpers.h | 2 +- src/backend/metadata.cpp | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/backend/helpers.cpp b/src/backend/helpers.cpp index c98c8e28..bdc89e2b 100644 --- a/src/backend/helpers.cpp +++ b/src/backend/helpers.cpp @@ -109,15 +109,15 @@ namespace loot { /// Array used to try each of the expressions defined above using /// an iteration for each of them. - const regex version_checks[7] = { + const std::vector version_checks({ regex(regex1, regex::ECMAScript | regex::icase), regex(regex2, regex::ECMAScript | regex::icase), regex(regex3, regex::ECMAScript | regex::icase), regex(regex4, regex::ECMAScript | regex::icase), regex(regex5, regex::ECMAScript | regex::icase), //This incorrectly identifies "OBSE v19" where 19 is any integer. - regex(regex6, regex::ECMAScript | regex::icase), //This is responsible for metallicow's false positive. + //regex(regex6, regex::ECMAScript | regex::icase), //This is responsible for metallicow's false positive. regex(regex7, regex::ECMAScript | regex::icase) - }; + }); ////////////////////////////////////////////////////////////////////////// // Helper functions diff --git a/src/backend/helpers.h b/src/backend/helpers.h index e29d5169..bd1092ec 100644 --- a/src/backend/helpers.h +++ b/src/backend/helpers.h @@ -35,7 +35,7 @@ namespace loot { /// Array used to try each of the expressions defined using /// an iteration for each of them. - extern const boost::regex version_checks[7]; + extern const std::vector version_checks; ////////////////////////////////////////////////////////////////////////// // Helper functions diff --git a/src/backend/metadata.cpp b/src/backend/metadata.cpp index 6081fd0a..7fe04db2 100644 --- a/src/backend/metadata.cpp +++ b/src/backend/metadata.cpp @@ -421,7 +421,7 @@ namespace loot { string text = boost::locale::conv::to_utf(file->getDescription(), "Windows-1252", boost::locale::conv::stop); BOOST_LOG_TRIVIAL(trace) << name << ": " << "Attempting to read the version from the description."; - for (size_t i = 0; i < 7; ++i) { + for (size_t i = 0; i < version_checks.size(); ++i) { smatch what; if (regex_search(text, what, version_checks[i])) { //Use the first sub-expression match.