• jgruber's avatar
    [regexp] Fix invalid lastIndex handling in RegExp.p[@@replace] · d74a9fd5
    jgruber authored
    The RegExp replace implementation is a bit of a mess. Here, we first
    try to handle parts of RegExp.p.exec, and then call directly into the
    raw irregexp code (skipping RegExp.p.exec).
    
    We got parts of this wrong: when lastIndex > string.length and the
    regexp instance is sticky, two things should happen. 1. The match
    should fail, and 2. lastIndex should be reset to 0. On the fast path,
    we did the latter but not the former, instead running exec with a
    lastIndex of 0.
    
    This CL omits the irregexp call in this case, and defaults to a failed
    match instead.
    
    Bug: chromium:875493
    Change-Id: I8c959610d267575e37686076a3fd5dfde322f0ca
    Reviewed-on: https://chromium-review.googlesource.com/1180889
    Commit-Queue: Jakob Gruber <jgruber@chromium.org>
    Reviewed-by: 's avatarMathias Bynens <mathias@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#55207}
    d74a9fd5
runtime-regexp.cc 67.6 KB