<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>178890</bug_id>
          
          <creation_ts>2017-10-26 15:25:45 -0700</creation_ts>
          <short_desc>REGRESSION(r222601): We fail to properly backtrack into a sub pattern of a parenthesis with non-zero minimum</short_desc>
          <delta_ts>2017-10-26 17:31:55 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>Other</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Michael Saboff">msaboff</reporter>
          <assigned_to name="Michael Saboff">msaboff</assigned_to>
          <cc>buildbot</cc>
    
    <cc>commit-queue</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1365053</commentid>
    <comment_count>0</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2017-10-26 15:25:45 -0700</bug_when>
    <thetext>A somewhat reduced test case is:
Here is a somewhat reduced test case /:(?:\w)+\(([‘]?)((?:\([^\)]+\)|[^\(\)]*){1,2})\1\)/.exec(“:not(&apos;.hs-processed&apos;)”)

Prior to r222601, the handling of a greedy parenthesis minimum count during backtracking was always 0, ignoring the actual minimum from the pattern.  In this case, the parenthesized subpattern, ((?:\([^\)]+\)|[^\(\)]*){1,2}, has a minimum count of 1.  Here is a RegExp pattern dump of that part of the expression.

      non-captured subpattern {1,2} greedy,frame location 4
        alternative list,frame location 5
        alternative #0: minimum size: 3
          character inputPosition 3 &apos;(&apos;
          not character class inputPosition 4 [ASCII:(&apos;)&apos;)]
          not character class inputPosition 5 [ASCII:(&apos;)&apos;)] {0,...} greedy,frame location 1
          character inputPosition 5 &apos;)&apos;
        alternative #1: minimum size: 0
          not character class inputPosition 3 [ASCII:(&apos;(&apos;,&apos;)&apos;)] {0,...} greedy,frame location 1

With change r222601, we stop backtracking parenthesis when the match count is equal to the minimum without trying to backtrack the contained sub pattern.  If that sub match fails and we are at the minimum, then we can fail the parenthesis backtracking.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1365054</commentid>
    <comment_count>1</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2017-10-26 15:26:19 -0700</bug_when>
    <thetext>&lt;rdar://problem/35126949&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1365066</commentid>
    <comment_count>2</comment_count>
      <attachid>325069</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2017-10-26 15:55:41 -0700</bug_when>
    <thetext>Created attachment 325069
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1365123</commentid>
    <comment_count>3</comment_count>
      <attachid>325069</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2017-10-26 17:00:24 -0700</bug_when>
    <thetext>Comment on attachment 325069
Patch

r=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1365155</commentid>
    <comment_count>4</comment_count>
      <attachid>325069</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-10-26 17:31:54 -0700</bug_when>
    <thetext>Comment on attachment 325069
Patch

Clearing flags on attachment: 325069

Committed r224072: &lt;https://trac.webkit.org/changeset/224072&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1365156</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-10-26 17:31:55 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>325069</attachid>
            <date>2017-10-26 15:55:41 -0700</date>
            <delta_ts>2017-10-26 17:31:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>178890.patch</filename>
            <type>text/plain</type>
            <size>3061</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyMjQwNTYpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE0IEBACisyMDE3LTEwLTI2ICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBw
bGUuY29tPgorCisgICAgICAgIFJFR1JFU1NJT04ocjIyMjYwMSk6IFdlIGZhaWwgdG8gcHJvcGVy
bHkgYmFja3RyYWNrIGludG8gYSBzdWIgcGF0dGVybiBvZiBhIHBhcmVudGhlc2lzIHdpdGggbm9u
LXplcm8gbWluaW11bQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTc4ODkwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgTmV3IHJlZ3Jlc3Npb24gdGVzdC4KKworICAgICAgICAqIHN0cmVzcy9yZWdyZXNzLTE3
ODg5MC5qczogQWRkZWQuCisKIDIwMTctMTAtMjYgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUu
Y29tPgogCiAgICAgICAgIEpTUm9wZVN0cmluZzo6Um9wZUJ1aWxkZXI6OmFwcGVuZCgpIHNob3Vs
ZCBjaGVjayBmb3Igb3ZlcmZsb3dzLgpJbmRleDogSlNUZXN0cy9zdHJlc3MvcmVncmVzcy0xNzg4
OTAuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gSlNUZXN0cy9zdHJlc3MvcmVncmVzcy0xNzg4OTAuanMJKG5v
bmV4aXN0ZW50KQorKysgSlNUZXN0cy9zdHJlc3MvcmVncmVzcy0xNzg4OTAuanMJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSw0IEBACisvLyBSZWdyZXNzaW9uIHRlc3QgZm9yIGJ1ZyAxNzg4OTAK
KworaWYgKCEvOig/Olx3KStcKChbJ10/KSgoPzpcKFteXCldK1wpfFteXChcKV0qKXsxLDJ9KVwx
XCkvLnRlc3QoIjpub3QoJy5ocy1wcm9jZXNzZWQnKSIpKQorICAgIHRocm93ICIvOig/Olx3KStc
KChbJ10/KSgoPzpcKFteXCldK1wpfFteXChcKV0qKXsxLDJ9KVwxXCkvLnRlc3QoXCI6bm90KCcu
aHMtcHJvY2Vzc2VkJylcIikgc2hvdWxkIHN1Y2NlZWQsIGJ1dCBhY3R1YWxseSBmYWlscyI7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyMzkzNikKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNyBAQAor
MjAxNy0xMC0yNiAgTWljaGFlbCBTYWJvZmYgIDxtc2Fib2ZmQGFwcGxlLmNvbT4KKworICAgICAg
ICBSRUdSRVNTSU9OKHIyMjI2MDEpOiBXZSBmYWlsIHRvIHByb3Blcmx5IGJhY2t0cmFjayBpbnRv
IGEgc3ViIHBhdHRlcm4gb2YgYSBwYXJlbnRoZXNpcyB3aXRoIG5vbi16ZXJvIG1pbmltdW0KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3ODg5MAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlIG5lZWQgdG8g
bGV0IGEgY29udGFpbmVkIHN1YnBhdHRlcm4gYmFja3RyYWNrIGJlZm9yZSBkZWNsYXJpbmcgdGhh
dCB0aGUgY29udGFpbmluZworICAgICAgICBwYXJlbnRoZXNpcyBkb2Vzbid0IG1hdGNoLiAgSWYg
dGhlIHN1YnBhdHRlcm4gZmFpbHMgdG8gbWF0Y2ggYmFja3RyYWNraW5nLCB0aGVuIHdlCisgICAg
ICAgIGNhbiBjaGVjayB0byBzZWUgaWYgd2UgdHJ5aW5nIHRvIGJhY2t0cmFjayBiZWxvdyB0aGUg
bWluaW11bSBtYXRjaCBjb3VudC4KKyAgICAgICAgCisgICAgICAgICogeWFyci9ZYXJySW50ZXJw
cmV0ZXIuY3BwOgorICAgICAgICAoSlNDOjpZYXJyOjpJbnRlcnByZXRlcjo6YmFja3RyYWNrUGFy
ZW50aGVzZXMpOgorCiAyMDE3LTEwLTI0ICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBw
bGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IEVuYWJsZSBXZWJLaXQgbG9nZ2luZyBj
b25maWd1cmF0aW9uIGFuZCBkaXNwbGF5CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUveWFy
ci9ZYXJySW50ZXJwcmV0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS95YXJyL1lhcnJJbnRlcnByZXRlci5jcHAJKHJldmlzaW9uIDIyMzkzNikKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS95YXJyL1lhcnJJbnRlcnByZXRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTExMTAsNyArMTExMCw3IEBAIHB1YmxpYzoKICAgICAgICAgfQogCiAgICAgICAgIGNhc2UgUXVh
bnRpZmllckdyZWVkeTogewotICAgICAgICAgICAgaWYgKGJhY2tUcmFjay0+bWF0Y2hBbW91bnQg
PT0gdGVybS5hdG9tLnF1YW50aXR5TWluQ291bnQpCisgICAgICAgICAgICBpZiAoIWJhY2tUcmFj
ay0+bWF0Y2hBbW91bnQpCiAgICAgICAgICAgICAgICAgcmV0dXJuIEpTUmVnRXhwTm9NYXRjaDsK
IAogICAgICAgICAgICAgUGFyZW50aGVzZXNEaXNqdW5jdGlvbkNvbnRleHQqIGNvbnRleHQgPSBi
YWNrVHJhY2stPmxhc3RDb250ZXh0OwpAQCAtMTEzNiw3ICsxMTM2LDcgQEAgcHVibGljOgogICAg
ICAgICAgICAgICAgIHBvcFBhcmVudGhlc2VzRGlzanVuY3Rpb25Db250ZXh0KGJhY2tUcmFjayk7
CiAgICAgICAgICAgICAgICAgZnJlZVBhcmVudGhlc2VzRGlzanVuY3Rpb25Db250ZXh0KGNvbnRl
eHQpOwogCi0gICAgICAgICAgICAgICAgaWYgKHJlc3VsdCAhPSBKU1JlZ0V4cE5vTWF0Y2gpCisg
ICAgICAgICAgICAgICAgaWYgKHJlc3VsdCAhPSBKU1JlZ0V4cE5vTWF0Y2ggfHwgYmFja1RyYWNr
LT5tYXRjaEFtb3VudCA8IHRlcm0uYXRvbS5xdWFudGl0eU1pbkNvdW50KQogICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICAgICAgfQogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>