Fix indexing bug in regexp, part 2.
authoryangguo@chromium.org <yangguo@chromium.org@ce2b1a6d-e550-0410-aec6-3dcde31c8c00>
Mon, 13 Aug 2012 15:53:40 +0000 (15:53 +0000)
committeryangguo@chromium.org <yangguo@chromium.org@ce2b1a6d-e550-0410-aec6-3dcde31c8c00>
Mon, 13 Aug 2012 15:53:40 +0000 (15:53 +0000)
The previous fix initialized the start index incorrectly.

BUG=

Review URL: https://chromiumcodereview.appspot.com/10834291

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12302 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

src/jsregexp.cc
test/mjsunit/regress/regress-crbug-142087.js

index 0bca6a9..ae25432 100644 (file)
@@ -748,12 +748,12 @@ RegExpImpl::GlobalCache::GlobalCache(Handle<JSRegExp> regexp,
 
   // Set state so that fetching the results the first time triggers a call
   // to the compiled regexp.
-  current_match_index_ = max_matches_;
+  current_match_index_ = max_matches_ - 1;
   num_matches_ = max_matches_;
   ASSERT(registers_per_match_ >= 2);  // Each match has at least one capture.
   ASSERT_GE(register_array_size_, registers_per_match_);
   int32_t* last_match =
-      &register_array_[(current_match_index_ - 1) * registers_per_match_];
+      &register_array_[current_match_index_ * registers_per_match_];
   last_match[0] = -1;
   last_match[1] = 0;
 }
index 6a1dbf7..881ca60 100644 (file)
@@ -27,7 +27,7 @@
 
 var string = "What are you looking for?";
 
-var expected_match = [];
+var expected_match = [""];
 for (var i = 0; i < string.length; i++) {
   expected_match.push("");
 }