| Index: src/parsing/parser.cc
|
| diff --git a/src/parsing/parser.cc b/src/parsing/parser.cc
|
| index 944e84c1235ca7c70dcd9f0b62b901d7dd22b8df..b8e6b9affc581aca97782af5590d65b4d959ff2a 100644
|
| --- a/src/parsing/parser.cc
|
| +++ b/src/parsing/parser.cc
|
| @@ -5565,8 +5565,11 @@ RegExpTree* RegExpParser::ParseDisjunction() {
|
| int index = 0;
|
| if (ParseBackReferenceIndex(&index)) {
|
| if (state->IsInsideCaptureGroup(index)) {
|
| - // The backreference is inside the capture group it refers to.
|
| - // Nothing can possibly have been captured yet.
|
| + // The back reference is inside the capture group it refers to.
|
| + // Nothing can possibly have been captured yet, so we use empty
|
| + // instead. This ensures that, when checking a back reference,
|
| + // the capture registers of the referenced capture are either
|
| + // both set or both cleared.
|
| builder->AddEmpty();
|
| } else {
|
| RegExpCapture* capture = GetCapture(index);
|
|
|