| Index: third_party/re2/re2/parse.cc
|
| diff --git a/third_party/re2/re2/parse.cc b/third_party/re2/re2/parse.cc
|
| index 551555a9ceb960c5079f943bee94105771d9592b..6423fe99889648d78384c6d896b47f10fe8dcd6e 100644
|
| --- a/third_party/re2/re2/parse.cc
|
| +++ b/third_party/re2/re2/parse.cc
|
| @@ -1455,6 +1455,13 @@ static void AddUGroup(CharClassBuilder *cc, UGroup *g, int sign,
|
| // to what's already missing. Too hard, so do in two steps.
|
| CharClassBuilder ccb1;
|
| AddUGroup(&ccb1, g, +1, parse_flags);
|
| + // If the flags say to take out \n, put it in, so that negating will take it out.
|
| + // Normally AddRangeFlags does this, but we're bypassing AddRangeFlags.
|
| + bool cutnl = !(parse_flags & Regexp::ClassNL) ||
|
| + (parse_flags & Regexp::NeverNL);
|
| + if (cutnl) {
|
| + ccb1.AddRange('\n', '\n');
|
| + }
|
| ccb1.Negate();
|
| cc->AddCharClass(&ccb1);
|
| return;
|
| @@ -1997,8 +2004,13 @@ Regexp* Regexp::Parse(const StringPiece& s, ParseFlags global_flags,
|
| return NULL;
|
| break;
|
| }
|
| - if (!ps.DoLeftParen(NULL))
|
| - return NULL;
|
| + if (ps.flags() & NeverCapture) {
|
| + if (!ps.DoLeftParenNoCapture())
|
| + return NULL;
|
| + } else {
|
| + if (!ps.DoLeftParen(NULL))
|
| + return NULL;
|
| + }
|
| t.remove_prefix(1); // '('
|
| break;
|
|
|
|
|