From 7ffe8209e685963276c04492c7ca25c66047c85a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Canna=C3=B2?= Date: Wed, 10 Jun 2020 00:59:51 +0200 Subject: [PATCH] Attempt to fix some valgrind errors --- lib/set_parser.cpp | 33 +++++++++++++++------------------ 1 file changed, 15 insertions(+), 18 deletions(-) diff --git a/lib/set_parser.cpp b/lib/set_parser.cpp index f700a98ad..217739b72 100644 --- a/lib/set_parser.cpp +++ b/lib/set_parser.cpp @@ -24,11 +24,11 @@ SetParser::SetParser(std::string nq) { std::map> SetParser::parse1() { proxy_debug(PROXY_DEBUG_MYSQL_QUERY_PROCESSOR, 4, "Parsing query %s\n", query.c_str()); - re2::RE2::Options *opt2=new re2::RE2::Options(RE2::Quiet); - opt2->set_case_sensitive(false); - opt2->set_longest_match(false); + re2::RE2::Options opt2 = re2::RE2::Options(RE2::Quiet); + opt2.set_case_sensitive(false); + opt2.set_longest_match(false); - re2::RE2 re0("^\\s*SET\\s+", *opt2); + re2::RE2 re0("^\\s*SET\\s+", opt2); re2::RE2::Replace(&query, re0, ""); std::map> result; @@ -40,7 +40,7 @@ std::map> SetParser::parse1() { #define VAR_VALUE_P1 "(((?:CONCAT\\()*(?:((?: )*REPLACE|IFNULL|CONCAT)\\()+(?: )*(?:NULL|@OLD_SQL_MODE|@@sql_mode),(?:(?:'|\\w|,| |\"|\\))+(?:\\))*)|(?:[@\\w/\\d:\\+\\-]|,)+|(?:)))" const string pattern="(?:" NAMES SPACES QUOTES NAME_VALUE QUOTES "(?: +COLLATE +" QUOTES NAME_VALUE QUOTES "|)" "|" SESSION_P1 VAR_P1 SPACES "(?:|:)=" SPACES QUOTES VAR_VALUE_P1 QUOTES ") *,? *"; - re2::RE2 re(pattern, *opt2); + re2::RE2 re(pattern, opt2); string var; string value1, value2, value3, value4, value5; re2::StringPiece input(query); @@ -67,7 +67,6 @@ std::map> SetParser::parse1() { std::transform(key.begin(), key.end(), key.begin(), ::tolower); result[key] = op; } - delete opt2; return result; } @@ -75,11 +74,11 @@ std::map> SetParser::parse1() { std::map> SetParser::parse2() { proxy_debug(PROXY_DEBUG_MYSQL_QUERY_PROCESSOR, 4, "Parsing query %s\n", query.c_str()); - re2::RE2::Options *opt2=new re2::RE2::Options(RE2::Quiet); - opt2->set_case_sensitive(false); - opt2->set_longest_match(false); + re2::RE2::Options opt2 = re2::RE2::Options(RE2::Quiet); + opt2.set_case_sensitive(false); + opt2.set_longest_match(false); - re2::RE2 re0("^\\s*SET\\s+", *opt2); + re2::RE2 re0("^\\s*SET\\s+", opt2); re2::RE2::Replace(&query, re0, ""); std::map> result; @@ -95,7 +94,7 @@ std::map> SetParser::parse2() { */ //const string pattern="(?:" NAMES SPACES QUOTES NAME_VALUE QUOTES "(?: +COLLATE +" QUOTES NAME_VALUE QUOTES "|)" "|" SESSION_P1 VAR_P1 SPACES "(?:|:)=" SPACES QUOTES VAR_VALUE_P1 QUOTES ") *,? *"; const string pattern="(|SESSION) *TRANSACTION(?: +)(?:(?:(ISOLATION(?: +)LEVEL)(?: +)(REPEATABLE(?: +)READ|READ(?: +)COMMITTED|READ(?: +)UNCOMMITTED|SERIALIZABLE))|(?:(READ)(?: +)(WRITE|ONLY)))"; - re2::RE2 re(pattern, *opt2); + re2::RE2 re(pattern, opt2); string var; string value1, value2, value3, value4, value5; re2::StringPiece input(query); @@ -120,29 +119,27 @@ std::map> SetParser::parse2() { result[key] = op; } - delete opt2; return result; } std::string SetParser::parse_character_set() { proxy_debug(PROXY_DEBUG_MYSQL_QUERY_PROCESSOR, 4, "Parsing query %s\n", query.c_str()); - re2::RE2::Options *opt2=new re2::RE2::Options(RE2::Quiet); - opt2->set_case_sensitive(false); - opt2->set_longest_match(false); + re2::RE2::Options opt2 = re2::RE2::Options(RE2::Quiet); + opt2.set_case_sensitive(false); + opt2.set_longest_match(false); - re2::RE2 re0("^\\s*SET\\s+", *opt2); + re2::RE2 re0("^\\s*SET\\s+", opt2); re2::RE2::Replace(&query, re0, ""); std::map> result; const string pattern="((charset)|(character +set))(?: )(\\S+)"; - re2::RE2 re(pattern, *opt2); + re2::RE2 re(pattern, opt2); string var; string value1, value2, value3, value4; re2::StringPiece input(query); re2::RE2::Consume(&input, re, &value1, &value2, &value3, &value4); - delete opt2; return value4; }