| Index: src/runtime.cc
|
| diff --git a/src/runtime.cc b/src/runtime.cc
|
| index a3c159a47f0b2e1555e59df94c2449472f796405..4deaabac184f9ef5fbc614788ede4058326020b6 100644
|
| --- a/src/runtime.cc
|
| +++ b/src/runtime.cc
|
| @@ -3946,7 +3946,6 @@ static int SearchRegExpMultiple(
|
| match = isolate->factory()->NewSubString(subject,
|
| match_start,
|
| match_end);
|
| - first = false;
|
| }
|
| elements->set(0, *match);
|
| for (int i = 1; i <= capture_count; i++) {
|
| @@ -3954,8 +3953,14 @@ static int SearchRegExpMultiple(
|
| if (start >= 0) {
|
| int end = current_match[i * 2 + 1];
|
| ASSERT(start <= end);
|
| - Handle<String> substring =
|
| - isolate->factory()->NewProperSubString(subject, start, end);
|
| + Handle<String> substring;
|
| + if (!first) {
|
| + substring =
|
| + isolate->factory()->NewProperSubString(subject, start, end);
|
| + } else {
|
| + substring =
|
| + isolate->factory()->NewSubString(subject, start, end);
|
| + }
|
| elements->set(i, *substring);
|
| } else {
|
| ASSERT(current_match[i * 2 + 1] < 0);
|
| @@ -3966,6 +3971,7 @@ static int SearchRegExpMultiple(
|
| elements->set(capture_count + 2, *subject);
|
| builder->Add(*isolate->factory()->NewJSArrayWithElements(elements));
|
| }
|
| + first = false;
|
| }
|
|
|
| // If we did not get the maximum number of matches, we can stop here
|
|
|