<?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>145351</bug_id>
          
          <creation_ts>2015-05-23 13:50:43 -0700</creation_ts>
          <short_desc>String.prototype.indexOf() should use StringView.</short_desc>
          <delta_ts>2015-06-09 11:02:22 -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>528+ (Nightly build)</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>Performance</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Andreas Kling">kling</reporter>
          <assigned_to name="Andreas Kling">kling</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1097120</commentid>
    <comment_count>0</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2015-05-23 13:50:43 -0700</bug_when>
    <thetext>We can avoid creating new StringImpls in indexOf() if we use JSString::view() to search through the string.
This requires adding a StringView::find(StringView, start) implementation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1097121</commentid>
    <comment_count>1</comment_count>
      <attachid>253650</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2015-05-23 13:55:32 -0700</bug_when>
    <thetext>Created attachment 253650
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1097366</commentid>
    <comment_count>2</comment_count>
      <attachid>253650</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-05-26 11:57:31 -0700</bug_when>
    <thetext>Comment on attachment 253650
Patch

Clearing flags on attachment: 253650

Committed r184867: &lt;http://trac.webkit.org/changeset/184867&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1097367</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-05-26 11:57:36 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1100574</commentid>
    <comment_count>4</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2015-06-08 22:07:19 -0700</bug_when>
    <thetext>Re-opening to attach the StringPrototype parts, too. (Duh.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1100577</commentid>
    <comment_count>5</comment_count>
      <attachid>254547</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2015-06-08 22:15:00 -0700</bug_when>
    <thetext>Created attachment 254547
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1100705</commentid>
    <comment_count>6</comment_count>
      <attachid>254547</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-06-09 11:02:17 -0700</bug_when>
    <thetext>Comment on attachment 254547
Patch

Clearing flags on attachment: 254547

Committed r185367: &lt;http://trac.webkit.org/changeset/185367&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1100706</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-06-09 11:02:22 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>253650</attachid>
            <date>2015-05-23 13:55:32 -0700</date>
            <delta_ts>2015-06-08 22:15:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-145351.diff</filename>
            <type>text/plain</type>
            <size>10422</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
aW5kZXggOTA4ZjgyYS4uMzA1NDI0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOSBAQAorMjAxNS0wNS0yMyAg
QW5kcmVhcyBLbGluZyAgPGFrbGluZ0BhcHBsZS5jb20+CisKKyAgICAgICAgU3RyaW5nVmlldyBz
aG91bGQgaGF2ZSBmaW5kKFN0cmluZ1ZpZXcsIHN0YXJ0KS4KKyAgICAgICAgPGh0dHBzOi8vd2Vi
a2l0Lm9yZy9iLzE0NTM1MT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBNb3ZlIHRoZSBjbGFzcyBhZ25vc3RpYyBndXRzIG9mIFN0cmluZ0ltcGwncyBm
aW5kKCkgaW1wbGVtZW50YXRpb24gZnJvbSBTdHJpbmdJbXBsCisgICAgICAgIHRvIFN0cmluZ0Nv
bW1vbi5oIGFuZCB0ZW1wbGF0aXplIHRoZSBjb2RlIGludG8gYSBmaW5kQ29tbW9uKCkgaGVscGVy
LgorCisgICAgICAgIFN0cmluZ0ltcGw6OmZpbmQoKSBhbmQgU3RyaW5nVmlldzo6ZmluZCgpIG5v
dyBib3RoIGNhbGwgZmluZENvbW1vbigpLgorCisgICAgICAgICogd3RmL3RleHQvU3RyaW5nQ29t
bW9uLmg6CisgICAgICAgIChXVEY6OmZpbmRJbm5lcik6CisgICAgICAgIChXVEY6OmZpbmQpOgor
ICAgICAgICAoV1RGOjpmaW5kQ29tbW9uKToKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdJbXBs
LmNwcDoKKyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6ZmluZCk6CisgICAgICAgIChXVEY6OmZp
bmRJbm5lcik6IERlbGV0ZWQuCisgICAgICAgICogd3RmL3RleHQvU3RyaW5nSW1wbC5oOgorICAg
ICAgICAoV1RGOjpmaW5kKTogRGVsZXRlZC4KKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdWaWV3
LmNwcDoKKyAgICAgICAgKFdURjo6U3RyaW5nVmlldzo6ZmluZCk6CisgICAgICAgICogd3RmL3Rl
eHQvU3RyaW5nVmlldy5oOgorCisKIDIwMTUtMDUtMjAgIFphbiBEb2JlcnNlayAgPHpkb2JlcnNl
a0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIE1vdmUgTWFpblRocmVhZEd0aywgUnVuTG9v
cEd0aywgV29ya1F1ZXVlR3RrIHVuZGVyIFNvdXJjZS9XVEYvd3RmL2dsaWIvCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0NvbW1vbi5oIGIvU291cmNlL1dURi93dGYvdGV4
dC9TdHJpbmdDb21tb24uaAppbmRleCAzOWEwMzkzLi43M2UwZWJiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0NvbW1vbi5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQv
U3RyaW5nQ29tbW9uLmgKQEAgLTQ2MSw2ICs0NjEsOTAgQEAgc2l6ZV90IGZpbmRJZ25vcmluZ0FT
Q0lJQ2FzZShjb25zdCBTdHJpbmdDbGFzc0EmIHNvdXJjZSwgY29uc3QgU3RyaW5nQ2xhc3NCJiBz
dHIKICAgICByZXR1cm4gZmluZElnbm9yaW5nQVNDSUlDYXNlKHNvdXJjZS5jaGFyYWN0ZXJzMTYo
KSwgc3RyaW5nVG9GaW5kLmNoYXJhY3RlcnMxNigpLCBzdGFydE9mZnNldCwgc2VhcmNoTGVuZ3Ro
LCBtYXRjaExlbmd0aCk7CiB9CiAKK3RlbXBsYXRlIDx0eXBlbmFtZSBTZWFyY2hDaGFyYWN0ZXJU
eXBlLCB0eXBlbmFtZSBNYXRjaENoYXJhY3RlclR5cGU+CitBTFdBWVNfSU5MSU5FIHN0YXRpYyBz
aXplX3QgZmluZElubmVyKGNvbnN0IFNlYXJjaENoYXJhY3RlclR5cGUqIHNlYXJjaENoYXJhY3Rl
cnMsIGNvbnN0IE1hdGNoQ2hhcmFjdGVyVHlwZSogbWF0Y2hDaGFyYWN0ZXJzLCB1bnNpZ25lZCBp
bmRleCwgdW5zaWduZWQgc2VhcmNoTGVuZ3RoLCB1bnNpZ25lZCBtYXRjaExlbmd0aCkKK3sKKyAg
ICAvLyBPcHRpbWl6YXRpb246IGtlZXAgYSBydW5uaW5nIGhhc2ggb2YgdGhlIHN0cmluZ3MsCisg
ICAgLy8gb25seSBjYWxsIGVxdWFsKCkgaWYgdGhlIGhhc2hlcyBtYXRjaC4KKworICAgIC8vIGRl
bHRhIGlzIHRoZSBudW1iZXIgb2YgYWRkaXRpb25hbCB0aW1lcyB0byB0ZXN0OyBkZWx0YSA9PSAw
IG1lYW5zIHRlc3Qgb25seSBvbmNlLgorICAgIHVuc2lnbmVkIGRlbHRhID0gc2VhcmNoTGVuZ3Ro
IC0gbWF0Y2hMZW5ndGg7CisKKyAgICB1bnNpZ25lZCBzZWFyY2hIYXNoID0gMDsKKyAgICB1bnNp
Z25lZCBtYXRjaEhhc2ggPSAwOworCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1hdGNo
TGVuZ3RoOyArK2kpIHsKKyAgICAgICAgc2VhcmNoSGFzaCArPSBzZWFyY2hDaGFyYWN0ZXJzW2ld
OworICAgICAgICBtYXRjaEhhc2ggKz0gbWF0Y2hDaGFyYWN0ZXJzW2ldOworICAgIH0KKworICAg
IHVuc2lnbmVkIGkgPSAwOworICAgIC8vIGtlZXAgbG9vcGluZyB1bnRpbCB3ZSBtYXRjaAorICAg
IHdoaWxlIChzZWFyY2hIYXNoICE9IG1hdGNoSGFzaCB8fCAhZXF1YWwoc2VhcmNoQ2hhcmFjdGVy
cyArIGksIG1hdGNoQ2hhcmFjdGVycywgbWF0Y2hMZW5ndGgpKSB7CisgICAgICAgIGlmIChpID09
IGRlbHRhKQorICAgICAgICAgICAgcmV0dXJuIG5vdEZvdW5kOworICAgICAgICBzZWFyY2hIYXNo
ICs9IHNlYXJjaENoYXJhY3RlcnNbaSArIG1hdGNoTGVuZ3RoXTsKKyAgICAgICAgc2VhcmNoSGFz
aCAtPSBzZWFyY2hDaGFyYWN0ZXJzW2ldOworICAgICAgICArK2k7CisgICAgfQorICAgIHJldHVy
biBpbmRleCArIGk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+Citpbmxp
bmUgc2l6ZV90IGZpbmQoY29uc3QgQ2hhcmFjdGVyVHlwZSogY2hhcmFjdGVycywgdW5zaWduZWQg
bGVuZ3RoLCBDaGFyYWN0ZXJUeXBlIG1hdGNoQ2hhcmFjdGVyLCB1bnNpZ25lZCBpbmRleCA9IDAp
Cit7CisgICAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7CisgICAgICAgIGlmIChjaGFyYWN0ZXJz
W2luZGV4XSA9PSBtYXRjaENoYXJhY3RlcikKKyAgICAgICAgICAgIHJldHVybiBpbmRleDsKKyAg
ICAgICAgKytpbmRleDsKKyAgICB9CisgICAgcmV0dXJuIG5vdEZvdW5kOworfQorCitBTFdBWVNf
SU5MSU5FIHNpemVfdCBmaW5kKGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5n
dGgsIExDaGFyIG1hdGNoQ2hhcmFjdGVyLCB1bnNpZ25lZCBpbmRleCA9IDApCit7CisgICAgcmV0
dXJuIGZpbmQoY2hhcmFjdGVycywgbGVuZ3RoLCBzdGF0aWNfY2FzdDxVQ2hhcj4obWF0Y2hDaGFy
YWN0ZXIpLCBpbmRleCk7Cit9CisKK2lubGluZSBzaXplX3QgZmluZChjb25zdCBMQ2hhciogY2hh
cmFjdGVycywgdW5zaWduZWQgbGVuZ3RoLCBVQ2hhciBtYXRjaENoYXJhY3RlciwgdW5zaWduZWQg
aW5kZXggPSAwKQoreworICAgIGlmIChtYXRjaENoYXJhY3RlciAmIH4weEZGKQorICAgICAgICBy
ZXR1cm4gbm90Rm91bmQ7CisgICAgcmV0dXJuIGZpbmQoY2hhcmFjdGVycywgbGVuZ3RoLCBzdGF0
aWNfY2FzdDxMQ2hhcj4obWF0Y2hDaGFyYWN0ZXIpLCBpbmRleCk7Cit9CisKK3RlbXBsYXRlPHR5
cGVuYW1lIFN0cmluZ0NsYXNzPgorc2l6ZV90IGZpbmRDb21tb24oY29uc3QgU3RyaW5nQ2xhc3Mm
IGhheXN0YWNrLCBjb25zdCBTdHJpbmdDbGFzcyYgbmVlZGxlLCB1bnNpZ25lZCBzdGFydCkKK3sK
KyAgICB1bnNpZ25lZCBuZWVkbGVMZW5ndGggPSBuZWVkbGUubGVuZ3RoKCk7CisKKyAgICBpZiAo
bmVlZGxlTGVuZ3RoID09IDEpIHsKKyAgICAgICAgaWYgKGhheXN0YWNrLmlzOEJpdCgpKQorICAg
ICAgICAgICAgcmV0dXJuIFdURjo6ZmluZChoYXlzdGFjay5jaGFyYWN0ZXJzOCgpLCBoYXlzdGFj
ay5sZW5ndGgoKSwgbmVlZGxlWzBdLCBzdGFydCk7CisgICAgICAgIHJldHVybiBXVEY6OmZpbmQo
aGF5c3RhY2suY2hhcmFjdGVyczE2KCksIGhheXN0YWNrLmxlbmd0aCgpLCBuZWVkbGVbMF0sIHN0
YXJ0KTsKKyAgICB9CisKKyAgICBpZiAoIW5lZWRsZUxlbmd0aCkKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bWluKHN0YXJ0LCBoYXlzdGFjay5sZW5ndGgoKSk7CisKKyAgICBpZiAoc3RhcnQgPiBoYXlz
dGFjay5sZW5ndGgoKSkKKyAgICAgICAgcmV0dXJuIG5vdEZvdW5kOworICAgIHVuc2lnbmVkIHNl
YXJjaExlbmd0aCA9IGhheXN0YWNrLmxlbmd0aCgpIC0gc3RhcnQ7CisgICAgaWYgKG5lZWRsZUxl
bmd0aCA+IHNlYXJjaExlbmd0aCkKKyAgICAgICAgcmV0dXJuIG5vdEZvdW5kOworCisgICAgaWYg
KGhheXN0YWNrLmlzOEJpdCgpKSB7CisgICAgICAgIGlmIChuZWVkbGUuaXM4Qml0KCkpCisgICAg
ICAgICAgICByZXR1cm4gZmluZElubmVyKGhheXN0YWNrLmNoYXJhY3RlcnM4KCkgKyBzdGFydCwg
bmVlZGxlLmNoYXJhY3RlcnM4KCksIHN0YXJ0LCBzZWFyY2hMZW5ndGgsIG5lZWRsZUxlbmd0aCk7
CisgICAgICAgIHJldHVybiBmaW5kSW5uZXIoaGF5c3RhY2suY2hhcmFjdGVyczgoKSArIHN0YXJ0
LCBuZWVkbGUuY2hhcmFjdGVyczE2KCksIHN0YXJ0LCBzZWFyY2hMZW5ndGgsIG5lZWRsZUxlbmd0
aCk7CisgICAgfQorCisgICAgaWYgKG5lZWRsZS5pczhCaXQoKSkKKyAgICAgICAgcmV0dXJuIGZp
bmRJbm5lcihoYXlzdGFjay5jaGFyYWN0ZXJzMTYoKSArIHN0YXJ0LCBuZWVkbGUuY2hhcmFjdGVy
czgoKSwgc3RhcnQsIHNlYXJjaExlbmd0aCwgbmVlZGxlTGVuZ3RoKTsKKworICAgIHJldHVybiBm
aW5kSW5uZXIoaGF5c3RhY2suY2hhcmFjdGVyczE2KCkgKyBzdGFydCwgbmVlZGxlLmNoYXJhY3Rl
cnMxNigpLCBzdGFydCwgc2VhcmNoTGVuZ3RoLCBuZWVkbGVMZW5ndGgpOworfQorCiB9CiAKICNl
bmRpZiAvLyBTdHJpbmdDb21tb25faApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9T
dHJpbmdJbXBsLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5jcHAKaW5kZXgg
M2ZiOTQ3MS4uYjc3NGMzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJ
bXBsLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwCkBAIC0xMDkx
LDM1ICsxMDkxLDYgQEAgc2l6ZV90IFN0cmluZ0ltcGw6OmZpbmRJZ25vcmluZ0Nhc2UoY29uc3Qg
TENoYXIqIG1hdGNoU3RyaW5nLCB1bnNpZ25lZCBpbmRleCkKICAgICByZXR1cm4gaW5kZXggKyBp
OwogfQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgU2VhcmNoQ2hhcmFjdGVyVHlwZSwgdHlwZW5hbWUg
TWF0Y2hDaGFyYWN0ZXJUeXBlPgotQUxXQVlTX0lOTElORSBzdGF0aWMgc2l6ZV90IGZpbmRJbm5l
cihjb25zdCBTZWFyY2hDaGFyYWN0ZXJUeXBlKiBzZWFyY2hDaGFyYWN0ZXJzLCBjb25zdCBNYXRj
aENoYXJhY3RlclR5cGUqIG1hdGNoQ2hhcmFjdGVycywgdW5zaWduZWQgaW5kZXgsIHVuc2lnbmVk
IHNlYXJjaExlbmd0aCwgdW5zaWduZWQgbWF0Y2hMZW5ndGgpCi17Ci0gICAgLy8gT3B0aW1pemF0
aW9uOiBrZWVwIGEgcnVubmluZyBoYXNoIG9mIHRoZSBzdHJpbmdzLAotICAgIC8vIG9ubHkgY2Fs
bCBlcXVhbCgpIGlmIHRoZSBoYXNoZXMgbWF0Y2guCi0KLSAgICAvLyBkZWx0YSBpcyB0aGUgbnVt
YmVyIG9mIGFkZGl0aW9uYWwgdGltZXMgdG8gdGVzdDsgZGVsdGEgPT0gMCBtZWFucyB0ZXN0IG9u
bHkgb25jZS4KLSAgICB1bnNpZ25lZCBkZWx0YSA9IHNlYXJjaExlbmd0aCAtIG1hdGNoTGVuZ3Ro
OwotCi0gICAgdW5zaWduZWQgc2VhcmNoSGFzaCA9IDA7Ci0gICAgdW5zaWduZWQgbWF0Y2hIYXNo
ID0gMDsKLQotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtYXRjaExlbmd0aDsgKytpKSB7
Ci0gICAgICAgIHNlYXJjaEhhc2ggKz0gc2VhcmNoQ2hhcmFjdGVyc1tpXTsKLSAgICAgICAgbWF0
Y2hIYXNoICs9IG1hdGNoQ2hhcmFjdGVyc1tpXTsKLSAgICB9Ci0KLSAgICB1bnNpZ25lZCBpID0g
MDsKLSAgICAvLyBrZWVwIGxvb3BpbmcgdW50aWwgd2UgbWF0Y2gKLSAgICB3aGlsZSAoc2VhcmNo
SGFzaCAhPSBtYXRjaEhhc2ggfHwgIWVxdWFsKHNlYXJjaENoYXJhY3RlcnMgKyBpLCBtYXRjaENo
YXJhY3RlcnMsIG1hdGNoTGVuZ3RoKSkgewotICAgICAgICBpZiAoaSA9PSBkZWx0YSkKLSAgICAg
ICAgICAgIHJldHVybiBub3RGb3VuZDsKLSAgICAgICAgc2VhcmNoSGFzaCArPSBzZWFyY2hDaGFy
YWN0ZXJzW2kgKyBtYXRjaExlbmd0aF07Ci0gICAgICAgIHNlYXJjaEhhc2ggLT0gc2VhcmNoQ2hh
cmFjdGVyc1tpXTsKLSAgICAgICAgKytpOwotICAgIH0KLSAgICByZXR1cm4gaW5kZXggKyBpOyAg
ICAgICAgCi19Ci0KIHNpemVfdCBTdHJpbmdJbXBsOjpmaW5kKFN0cmluZ0ltcGwqIG1hdGNoU3Ry
aW5nKQogewogICAgIC8vIENoZWNrIGZvciBudWxsIHN0cmluZyB0byBtYXRjaCBhZ2FpbnN0CkBA
IC0xMTY1LDM1ICsxMTM2LDcgQEAgc2l6ZV90IFN0cmluZ0ltcGw6OmZpbmQoU3RyaW5nSW1wbCog
bWF0Y2hTdHJpbmcsIHVuc2lnbmVkIGluZGV4KQogICAgIGlmIChVTkxJS0VMWSghbWF0Y2hTdHJp
bmcpKQogICAgICAgICByZXR1cm4gbm90Rm91bmQ7CiAKLSAgICB1bnNpZ25lZCBtYXRjaExlbmd0
aCA9IG1hdGNoU3RyaW5nLT5sZW5ndGgoKTsKLQotICAgIC8vIE9wdGltaXphdGlvbiAxOiBmYXN0
IGNhc2UgZm9yIHN0cmluZ3Mgb2YgbGVuZ3RoIDEuCi0gICAgaWYgKG1hdGNoTGVuZ3RoID09IDEp
IHsKLSAgICAgICAgaWYgKGlzOEJpdCgpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6ZmluZChj
aGFyYWN0ZXJzOCgpLCBsZW5ndGgoKSwgKCptYXRjaFN0cmluZylbMF0sIGluZGV4KTsKLSAgICAg
ICAgcmV0dXJuIFdURjo6ZmluZChjaGFyYWN0ZXJzMTYoKSwgbGVuZ3RoKCksICgqbWF0Y2hTdHJp
bmcpWzBdLCBpbmRleCk7Ci0gICAgfQotCi0gICAgaWYgKFVOTElLRUxZKCFtYXRjaExlbmd0aCkp
Ci0gICAgICAgIHJldHVybiBzdGQ6Om1pbihpbmRleCwgbGVuZ3RoKCkpOwotCi0gICAgLy8gQ2hl
Y2sgaW5kZXggJiBtYXRjaExlbmd0aCBhcmUgaW4gcmFuZ2UuCi0gICAgaWYgKGluZGV4ID4gbGVu
Z3RoKCkpCi0gICAgICAgIHJldHVybiBub3RGb3VuZDsKLSAgICB1bnNpZ25lZCBzZWFyY2hMZW5n
dGggPSBsZW5ndGgoKSAtIGluZGV4OwotICAgIGlmIChtYXRjaExlbmd0aCA+IHNlYXJjaExlbmd0
aCkKLSAgICAgICAgcmV0dXJuIG5vdEZvdW5kOwotCi0gICAgaWYgKGlzOEJpdCgpKSB7Ci0gICAg
ICAgIGlmIChtYXRjaFN0cmluZy0+aXM4Qml0KCkpCi0gICAgICAgICAgICByZXR1cm4gZmluZElu
bmVyKGNoYXJhY3RlcnM4KCkgKyBpbmRleCwgbWF0Y2hTdHJpbmctPmNoYXJhY3RlcnM4KCksIGlu
ZGV4LCBzZWFyY2hMZW5ndGgsIG1hdGNoTGVuZ3RoKTsKLSAgICAgICAgcmV0dXJuIGZpbmRJbm5l
cihjaGFyYWN0ZXJzOCgpICsgaW5kZXgsIG1hdGNoU3RyaW5nLT5jaGFyYWN0ZXJzMTYoKSwgaW5k
ZXgsIHNlYXJjaExlbmd0aCwgbWF0Y2hMZW5ndGgpOwotICAgIH0KLQotICAgIGlmIChtYXRjaFN0
cmluZy0+aXM4Qml0KCkpCi0gICAgICAgIHJldHVybiBmaW5kSW5uZXIoY2hhcmFjdGVyczE2KCkg
KyBpbmRleCwgbWF0Y2hTdHJpbmctPmNoYXJhY3RlcnM4KCksIGluZGV4LCBzZWFyY2hMZW5ndGgs
IG1hdGNoTGVuZ3RoKTsKLQotICAgIHJldHVybiBmaW5kSW5uZXIoY2hhcmFjdGVyczE2KCkgKyBp
bmRleCwgbWF0Y2hTdHJpbmctPmNoYXJhY3RlcnMxNigpLCBpbmRleCwgc2VhcmNoTGVuZ3RoLCBt
YXRjaExlbmd0aCk7CisgICAgcmV0dXJuIGZpbmRDb21tb24oKnRoaXMsICptYXRjaFN0cmluZywg
aW5kZXgpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgU2VhcmNoQ2hhcmFjdGVyVHlwZSwgdHlw
ZW5hbWUgTWF0Y2hDaGFyYWN0ZXJUeXBlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4
dC9TdHJpbmdJbXBsLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaAppbmRleCBm
MWE2NjdiLi5lZTYyMzI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0lt
cGwuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaApAQCAtMzMsNiArMzMs
NyBAQAogI2luY2x1ZGUgPHd0Zi9TdHJpbmdIYXNoZXIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9y
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ29udmVyc2lvbk1vZGUuaD4KKyNpbmNsdWRlIDx3dGYv
dGV4dC9TdHJpbmdDb21tb24uaD4KIAogI2lmIFVTRShDRikKIHR5cGVkZWYgY29uc3Qgc3RydWN0
IF9fQ0ZTdHJpbmcgKiBDRlN0cmluZ1JlZjsKQEAgLTk4MiwyOSArOTgzLDYgQEAgYm9vbCBlcXVh
bElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZ0ltcGwqIGEsIGNvbnN0IGNoYXIgKCZiKVtj
aGFyYWN0ZXJzQ291bnQKICAgICByZXR1cm4gYSA/IGVxdWFsSWdub3JpbmdBU0NJSUNhc2UoKmEs
IGIsIGNoYXJhY3RlcnNDb3VudCAtIDEpIDogZmFsc2U7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1l
IENoYXJhY3RlclR5cGU+Ci1pbmxpbmUgc2l6ZV90IGZpbmQoY29uc3QgQ2hhcmFjdGVyVHlwZSog
Y2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoLCBDaGFyYWN0ZXJUeXBlIG1hdGNoQ2hhcmFjdGVy
LCB1bnNpZ25lZCBpbmRleCA9IDApCi17Ci0gICAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7Ci0g
ICAgICAgIGlmIChjaGFyYWN0ZXJzW2luZGV4XSA9PSBtYXRjaENoYXJhY3RlcikKLSAgICAgICAg
ICAgIHJldHVybiBpbmRleDsKLSAgICAgICAgKytpbmRleDsKLSAgICB9Ci0gICAgcmV0dXJuIG5v
dEZvdW5kOwotfQotCi1BTFdBWVNfSU5MSU5FIHNpemVfdCBmaW5kKGNvbnN0IFVDaGFyKiBjaGFy
YWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgsIExDaGFyIG1hdGNoQ2hhcmFjdGVyLCB1bnNpZ25lZCBp
bmRleCA9IDApCi17Ci0gICAgcmV0dXJuIGZpbmQoY2hhcmFjdGVycywgbGVuZ3RoLCBzdGF0aWNf
Y2FzdDxVQ2hhcj4obWF0Y2hDaGFyYWN0ZXIpLCBpbmRleCk7Ci19Ci0KLWlubGluZSBzaXplX3Qg
ZmluZChjb25zdCBMQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoLCBVQ2hhciBtYXRj
aENoYXJhY3RlciwgdW5zaWduZWQgaW5kZXggPSAwKQotewotICAgIGlmIChtYXRjaENoYXJhY3Rl
ciAmIH4weEZGKQotICAgICAgICByZXR1cm4gbm90Rm91bmQ7Ci0gICAgcmV0dXJuIGZpbmQoY2hh
cmFjdGVycywgbGVuZ3RoLCBzdGF0aWNfY2FzdDxMQ2hhcj4obWF0Y2hDaGFyYWN0ZXIpLCBpbmRl
eCk7Ci19Ci0KIGlubGluZSBzaXplX3QgZmluZChjb25zdCBMQ2hhciogY2hhcmFjdGVycywgdW5z
aWduZWQgbGVuZ3RoLCBDaGFyYWN0ZXJNYXRjaEZ1bmN0aW9uUHRyIG1hdGNoRnVuY3Rpb24sIHVu
c2lnbmVkIGluZGV4ID0gMCkKIHsKICAgICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5jcHAgYi9Tb3VyY2UvV1RGL3d0
Zi90ZXh0L1N0cmluZ1ZpZXcuY3BwCmluZGV4IDQxYjczYTYuLjgxYWQ1ZjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5jcHAKKysrIGIvU291cmNlL1dURi93dGYv
dGV4dC9TdHJpbmdWaWV3LmNwcApAQCAtOTYsNiArOTYsMTEgQEAgQ1N0cmluZyBTdHJpbmdWaWV3
Ojp1dGY4KENvbnZlcnNpb25Nb2RlIG1vZGUpIGNvbnN0CiAgICAgcmV0dXJuIFN0cmluZ0ltcGw6
OnV0ZjhGb3JDaGFyYWN0ZXJzKGNoYXJhY3RlcnMxNigpLCBsZW5ndGgoKSwgbW9kZSk7CiB9CiAK
K3NpemVfdCBTdHJpbmdWaWV3OjpmaW5kKFN0cmluZ1ZpZXcgbWF0Y2hTdHJpbmcsIHVuc2lnbmVk
IHN0YXJ0KSBjb25zdAoreworICAgIHJldHVybiBmaW5kQ29tbW9uKCp0aGlzLCBtYXRjaFN0cmlu
Zywgc3RhcnQpOworfQorCiAjaWYgQ0hFQ0tfU1RSSU5HVklFV19MSUZFVElNRQogCiAvLyBNYW5h
Z2UgcmVmZXJlbmNlIGNvdW50IG1hbnVhbGx5IHNvIFVuZGVybHlpbmdTdHJpbmcgZG9lcyBub3Qg
bmVlZCB0byBiZSBkZWZpbmVkIGluIHRoZSBoZWFkZXIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi90ZXh0L1N0cmluZ1ZpZXcuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5o
CmluZGV4IDM0M2RlMTQuLjM1NjBkZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQv
U3RyaW5nVmlldy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5oCkBAIC0x
MDksNiArMTA5LDkgQEAgcHVibGljOgogICAgIFN0cmluZ1ZpZXcgc3Vic3RyaW5nKHVuc2lnbmVk
IHN0YXJ0LCB1bnNpZ25lZCBsZW5ndGggPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6
bWF4KCkpIGNvbnN0OwogCiAgICAgc2l6ZV90IGZpbmQoVUNoYXIsIHVuc2lnbmVkIHN0YXJ0ID0g
MCkgY29uc3Q7CisKKyAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc2l6ZV90IGZpbmQoU3RyaW5n
VmlldywgdW5zaWduZWQgc3RhcnQpIGNvbnN0OworCiAgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJ
IHNpemVfdCBmaW5kSWdub3JpbmdBU0NJSUNhc2UoY29uc3QgU3RyaW5nVmlldyYpIGNvbnN0Owog
ICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzaXplX3QgZmluZElnbm9yaW5nQVNDSUlDYXNlKGNv
bnN0IFN0cmluZ1ZpZXcmLCB1bnNpZ25lZCBzdGFydE9mZnNldCkgY29uc3Q7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>254547</attachid>
            <date>2015-06-08 22:15:00 -0700</date>
            <delta_ts>2015-06-09 11:02:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-145351-2.diff</filename>
            <type>text/plain</type>
            <size>1625</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGU4MDQ3NjMuLjYzYzhhMjEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDIxIEBACiAyMDE1LTA2LTA4ICBBbmRyZWFzIEtsaW5n
ICA8YWtsaW5nQGFwcGxlLmNvbT4KIAorICAgICAgICBbSlNDXSBTdHJpbmcucHJvdG90eXBlLmlu
ZGV4T2YoKSBzaG91bGQgdXNlIFN0cmluZ1ZpZXcuCisgICAgICAgIDxodHRwczovL3dlYmtpdC5v
cmcvYi8xNDUzNTE+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVXNlIFN0cmluZ1ZpZXc6OmZpbmQoKSB0byBpbXBsZW1lbnQgU3RyaW5nLnByb3RvdHlw
ZS5pbmRleE9mKCkuCisgICAgICAgIFRoaXMgYXZvaWRzIHJlaWZ5aW5nIHRoZSBuZWVkbGUgYW5k
IGhheXN0YWNrIEpTU3RyaW5ncyBpbiBjYXNlIHRoZXkKKyAgICAgICAgYXJlIHN1YnN0cmluZ3Mu
CisKKyAgICAgICAgUmVkdWNlcyBtYWxsb2MgbWVtb3J5IGJ5IH4xOTAga0Igb24gY25ldC5jb20u
CisKKyAgICAgICAgKiBydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6
OnN0cmluZ1Byb3RvRnVuY0luZGV4T2YpOgorCisyMDE1LTA2LTA4ICBBbmRyZWFzIEtsaW5nICA8
YWtsaW5nQGFwcGxlLmNvbT4KKwogICAgICAgICBbSlNDXSBDb2RlQmxvY2s6Om1fY29uc3RhbnRS
ZWdpc3RlcnMgc2hvdWxkIGJlIHNpemVkLXRvLWZpdC4KICAgICAgICAgPGh0dHBzOi8vd2Via2l0
Lm9yZy9iLzE0NTc4ND4KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RyaW5nUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0
cmluZ1Byb3RvdHlwZS5jcHAKaW5kZXggOTNlMTRiMS4uOWUyZmFhMiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCkBAIC04OTYsNyAr
ODk2LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNJbmRl
eE9mKEV4ZWNTdGF0ZSogZXhlYykKICAgICBpZiAodGhpc0pTU3RyaW5nLT5sZW5ndGgoKSA8IG90
aGVySlNTdHJpbmctPmxlbmd0aCgpICsgcG9zKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzTnVtYmVyKC0xKSk7CiAKLSAgICBzaXplX3QgcmVzdWx0ID0gdGhpc0pTU3RyaW5nLT52
YWx1ZShleGVjKS5maW5kKG90aGVySlNTdHJpbmctPnZhbHVlKGV4ZWMpLCBwb3MpOworICAgIHNp
emVfdCByZXN1bHQgPSB0aGlzSlNTdHJpbmctPnZpZXcoZXhlYykuZmluZChvdGhlckpTU3RyaW5n
LT52aWV3KGV4ZWMpLCBwb3MpOwogICAgIGlmIChyZXN1bHQgPT0gbm90Rm91bmQpCiAgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoLTEpKTsKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzTnVtYmVyKHJlc3VsdCkpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>