<?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>145427</bug_id>
          
          <creation_ts>2015-05-27 21:13:33 -0700</creation_ts>
          <short_desc>jsSubstring() should support creating substrings from substrings.</short_desc>
          <delta_ts>2015-06-23 18:18:48 -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>darin</cc>
    
    <cc>ggaren</cc>
    
    <cc>kling</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1097820</commentid>
    <comment_count>0</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2015-05-27 21:13:33 -0700</bug_when>
    <thetext>It would be neat if jsSubstring() would be smarter when asked to create a substring of a JSString that is itself a substring.
It should share the base string and just modify the offset instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1097828</commentid>
    <comment_count>1</comment_count>
      <attachid>253831</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2015-05-27 21:30:27 -0700</bug_when>
    <thetext>Created attachment 253831
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1097905</commentid>
    <comment_count>2</comment_count>
      <attachid>253831</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-05-28 10:18:05 -0700</bug_when>
    <thetext>Comment on attachment 253831
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=253831&amp;action=review

Yo dawg.

&gt; Source/JavaScriptCore/runtime/JSString.h:532
&gt; +    if (s-&gt;isRope() &amp;&amp; !static_cast&lt;JSRopeString*&gt;(s)-&gt;isSubstring())
&gt; +        static_cast&lt;JSRopeString*&gt;(s)-&gt;resolveRope(exec);

Can we move this branch into the callee?

It feels unsafe that the callee assumes it will not be passed a non-substring rope, when nothing in its type signature guarantees it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1097936</commentid>
    <comment_count>3</comment_count>
      <attachid>253831</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-05-28 13:04:19 -0700</bug_when>
    <thetext>Comment on attachment 253831
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=253831&amp;action=review

&gt; Source/JavaScriptCore/runtime/JSString.h:304
&gt; +            JSRopeString* baseRope = static_cast&lt;JSRopeString*&gt;(base);

I suggest we use a reference rather than pointer here.

&gt;&gt; Source/JavaScriptCore/runtime/JSString.h:532
&gt;&gt; +        static_cast&lt;JSRopeString*&gt;(s)-&gt;resolveRope(exec);
&gt; 
&gt; Can we move this branch into the callee?
&gt; 
&gt; It feels unsafe that the callee assumes it will not be passed a non-substring rope, when nothing in its type signature guarantees it.

I agree that would be better.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1100918</commentid>
    <comment_count>4</comment_count>
      <attachid>254629</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2015-06-09 21:46:22 -0700</bug_when>
    <thetext>Created attachment 254629
Patch

Take 2, rope resolution moved to callee as requested by reviewers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1101110</commentid>
    <comment_count>5</comment_count>
      <attachid>254629</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-06-10 14:24:53 -0700</bug_when>
    <thetext>Comment on attachment 254629
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=254629&amp;action=review

r=me

&gt; Source/JavaScriptCore/runtime/JSString.h:314
&gt; +        // For now, let&apos;s not allow substrings with a rope base.
&gt; +        // Resolve non-substring rope bases so we don&apos;t have to deal with it.

Might be nice to elaborate on what we&apos;re trying to avoid.

&gt; Source/JavaScriptCore/runtime/JSString.h:315
&gt; +        if (base.isRope() &amp;&amp; !base.isSubstring())

Is it possible for our base to be a substring? I think it is not, since all substrings will do the base forwarding above upon creation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1104286</commentid>
    <comment_count>6</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2015-06-23 18:18:48 -0700</bug_when>
    <thetext>Landed in r185486</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>253831</attachid>
            <date>2015-05-27 21:30:27 -0700</date>
            <delta_ts>2015-06-09 21:46:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-145427.diff</filename>
            <type>text/plain</type>
            <size>2880</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDY3MGI5MjguLmIxNDEyZmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDE1LTA1LTI3ICBBbmRyZWFzIEtsaW5n
ICA8YWtsaW5nQGFwcGxlLmNvbT4KKworICAgICAgICBqc1N1YnN0cmluZygpIHNob3VsZCBzdXBw
b3J0IGNyZWF0aW5nIHN1YnN0cmluZ3MgZnJvbSBzdWJzdHJpbmdzLgorICAgICAgICA8aHR0cHM6
Ly93ZWJraXQub3JnL2IvMTQ1NDI3PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFR3ZWFrIGpzU3Vic3RyaW5nKCkgdG8gc3VwcG9ydCBiYXNlIHN0cmlu
Z3MgdGhhdCBhcmUgdGhlbXNlbHZlcyBzdWJzdHJpbmdzLgorICAgICAgICBUaGV5IHdpbGwgbm93
IHNoYXJlIHRoZSBzYW1lIGdyYW5kcGFyZW50IGJhc2UuIFRoaXMgYXZvaWRzIGNyZWF0aW5nIGEg
bmV3IFN0cmluZ0ltcGwuCisKKyAgICAgICAgKiBydW50aW1lL0pTU3RyaW5nLmg6CisgICAgICAg
IChKU0M6OmpzU3Vic3RyaW5nKToKKyAgICAgICAgKEpTQzo6SlNSb3BlU3RyaW5nOjpmaW5pc2hD
cmVhdGlvbik6CisKIDIwMTUtMDUtMjcgIEJlbmphbWluIFBvdWxhaW4gIDxicG91bGFpbkBhcHBs
ZS5jb20+CiAKICAgICAgICAgW0pTQ10gQWRkIHVuZGVmaW5lZC0+ZG91YmxlIGNvbnZlcnNpb24g
dG8gRG91YmxlUmVwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1N0cmluZy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAppbmRl
eCAxZmJlNzQ2Li5jYTNiOTU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1N0cmluZy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3Ry
aW5nLmgKQEAgLTI5NCwxNCArMjk0LDIxIEBAIHByaXZhdGU6CiAgICAgdm9pZCBmaW5pc2hDcmVh
dGlvbihWTSYgdm0sIEpTU3RyaW5nKiBiYXNlLCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGxl
bmd0aCkKICAgICB7CiAgICAgICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKLSAgICAgICAg
QVNTRVJUKCFiYXNlLT5pc1JvcGUoKSk7CiAgICAgICAgIEFTU0VSVCghc3VtT3ZlcmZsb3dzPGlu
dDMyX3Q+KG9mZnNldCwgbGVuZ3RoKSk7CiAgICAgICAgIEFTU0VSVChvZmZzZXQgKyBsZW5ndGgg
PD0gYmFzZS0+bGVuZ3RoKCkpOwogICAgICAgICBtX2xlbmd0aCA9IGxlbmd0aDsKICAgICAgICAg
c2V0SXM4Qml0KGJhc2UtPmlzOEJpdCgpKTsKICAgICAgICAgc2V0SXNTdWJzdHJpbmcodHJ1ZSk7
Ci0gICAgICAgIHN1YnN0cmluZ0Jhc2UoKS5zZXQodm0sIHRoaXMsIGJhc2UpOwotICAgICAgICBz
dWJzdHJpbmdPZmZzZXQoKSA9IG9mZnNldDsKKworICAgICAgICBpZiAoYmFzZS0+aXNSb3BlKCkp
IHsKKyAgICAgICAgICAgIEpTUm9wZVN0cmluZyogYmFzZVJvcGUgPSBzdGF0aWNfY2FzdDxKU1Jv
cGVTdHJpbmcqPihiYXNlKTsKKyAgICAgICAgICAgIEFTU0VSVChiYXNlUm9wZS0+aXNTdWJzdHJp
bmcoKSk7CisgICAgICAgICAgICBzdWJzdHJpbmdCYXNlKCkuc2V0KHZtLCB0aGlzLCBiYXNlUm9w
ZS0+c3Vic3RyaW5nQmFzZSgpLmdldCgpKTsKKyAgICAgICAgICAgIHN1YnN0cmluZ09mZnNldCgp
ID0gb2Zmc2V0ICsgYmFzZVJvcGUtPnN1YnN0cmluZ09mZnNldCgpOworICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgc3Vic3RyaW5nQmFzZSgpLnNldCh2bSwgdGhpcywgYmFzZSk7CisgICAg
ICAgICAgICBzdWJzdHJpbmdPZmZzZXQoKSA9IG9mZnNldDsKKyAgICAgICAgfQogICAgIH0KIAog
ICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mIHZtKQpAQCAtMzU4LDYgKzM2NSw3IEBAIHB1Ymxp
YzoKIHByaXZhdGU6CiAgICAgZnJpZW5kIEpTVmFsdWUganNTdHJpbmdGcm9tUmVnaXN0ZXJBcnJh
eShFeGVjU3RhdGUqLCBSZWdpc3RlciosIHVuc2lnbmVkKTsKICAgICBmcmllbmQgSlNWYWx1ZSBq
c1N0cmluZ0Zyb21Bcmd1bWVudHMoRXhlY1N0YXRlKiwgSlNWYWx1ZSk7CisgICAgZnJpZW5kIEpT
U3RyaW5nKiBqc1N1YnN0cmluZyhFeGVjU3RhdGUqLCBKU1N0cmluZyosIHVuc2lnbmVkIG9mZnNl
dCwgdW5zaWduZWQgbGVuZ3RoKTsKIAogICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgcmVzb2x2
ZVJvcGUoRXhlY1N0YXRlKikgY29uc3Q7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCByZXNv
bHZlUm9wZVRvQXRvbWljU3RyaW5nKEV4ZWNTdGF0ZSopIGNvbnN0OwpAQCAtNTIwLDcgKzUyOCw4
IEBAIGlubGluZSBKU1N0cmluZyoganNTdWJzdHJpbmcoRXhlY1N0YXRlKiBleGVjLCBKU1N0cmlu
ZyogcywgdW5zaWduZWQgb2Zmc2V0LCB1bnNpCiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAg
ICBpZiAoIWxlbmd0aCkKICAgICAgICAgcmV0dXJuIHZtLnNtYWxsU3RyaW5ncy5lbXB0eVN0cmlu
ZygpOwotICAgIHMtPnZhbHVlKGV4ZWMpOyAvLyBGb3IgZWZmZWN0LiBXZSBuZWVkIHRvIGVuc3Vy
ZSB0aGF0IGFueSBzdHJpbmcgdGhhdCBpcyB1c2VkIGFzIGEgc3Vic3RyaW5nIGJhc2UgaXMgbm90
IGEgcm9wZS4KKyAgICBpZiAocy0+aXNSb3BlKCkgJiYgIXN0YXRpY19jYXN0PEpTUm9wZVN0cmlu
Zyo+KHMpLT5pc1N1YnN0cmluZygpKQorICAgICAgICBzdGF0aWNfY2FzdDxKU1JvcGVTdHJpbmcq
PihzKS0+cmVzb2x2ZVJvcGUoZXhlYyk7CiAgICAgcmV0dXJuIEpTUm9wZVN0cmluZzo6Y3JlYXRl
KHZtLCBzLCBvZmZzZXQsIGxlbmd0aCk7CiB9CiAK
</data>
<flag name="review"
          id="278779"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>254629</attachid>
            <date>2015-06-09 21:46:22 -0700</date>
            <delta_ts>2015-06-10 14:24:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-145427-2.diff</filename>
            <type>text/plain</type>
            <size>4596</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDEzOGQ1MzAuLjEyYjMwMDQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDE1LTA2LTA5ICBBbmRyZWFzIEtsaW5n
ICA8YWtsaW5nQGFwcGxlLmNvbT4KKworICAgICAgICBqc1N1YnN0cmluZygpIHNob3VsZCBzdXBw
b3J0IGNyZWF0aW5nIHN1YnN0cmluZ3MgZnJvbSBzdWJzdHJpbmdzLgorICAgICAgICA8aHR0cHM6
Ly93ZWJraXQub3JnL2IvMTQ1NDI3PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpCisKKyAgICAgICAgVHdlYWsganNTdWJzdHJpbmcoKSB0byBzdXBwb3J0IGJhc2Ugc3RyaW5n
cyB0aGF0IGFyZSB0aGVtc2VsdmVzIHN1YnN0cmluZ3MuCisgICAgICAgIFRoZXkgd2lsbCBub3cg
c2hhcmUgdGhlIHNhbWUgZ3JhbmRwYXJlbnQgYmFzZS4gVGhpcyBhdm9pZHMgY3JlYXRpbmcgYSBu
ZXcgU3RyaW5nSW1wbC4KKworICAgICAgICAqIHJ1bnRpbWUvSlNTdHJpbmcuaDoKKyAgICAgICAg
KEpTQzo6anNTdWJzdHJpbmcpOiBEb24ndCBmb3JjZSByb3BlIHJlc29sdXRpb24gaGVyZS4gSW5z
dGVhZCBkbyB0aGF0IGluIGZpbmlzaENyZWF0aW9uKCkKKyAgICAgICAgaWYgdGhlIGJhc2Ugc3Ry
aW5nIGlzIGEgbm9uLXN1YnN0cmluZyByb3BlLiBOb3RlIHRoYXQgcmVzb2x2ZVJvcGUoKSBpcyB0
aGUgdmVyeSBsYXN0IHRoaW5nCisgICAgICAgIGNhbGxlZCwgc2luY2UgaXQgbWF5IGFsbG9jYXRl
IGFuZCB0aGUgSlNSb3BlU3RyaW5nIG5lZWRzIHRvIGJlIHJlYWR5IGZvciBtYXJraW5nLgorCisg
ICAgICAgIChKU0M6OkpTU3RyaW5nOjppc1N1YnN0cmluZyk6IEFkZGVkIGEgaGVscGVyIHRvIGZp
bmQgb3V0IGlmIGEgSlNTdHJpbmcgaXMKKyAgICAgICAgYSBzdWJzdHJpbmcuIFRoaXMgaXMganVz
dCBmb3IgaW50ZXJuYWwgdXNlLCBzbyB5b3UgZG9uJ3QgaGF2ZSB0byBjYXN0IHRvCisgICAgICAg
IEpTUm9wZVN0cmluZyBmb3IgdGhlIHJlYWwgc3Vic3RyaW5nbmVzcyBmbGFnLgorCiAyMDE1LTA2
LTA5ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgQWxsb3cgb25l
IHN5bmMgR0MgcGVyIGdjVGltZXIgaW50ZXJ2YWwgb24gY3JpdGljYWwgbWVtb3J5IHByZXNzdXJl
IHdhcm5pbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3Ry
aW5nLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCmluZGV4IDE3
MGM2ODMuLjY1YTU5YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTU3RyaW5nLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcu
aApAQCAtMTg2LDYgKzE4Niw3IEBAIHByb3RlY3RlZDoKICAgICBmcmllbmQgY2xhc3MgSlNWYWx1
ZTsKIAogICAgIGJvb2wgaXNSb3BlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZS5pc051bGwoKTsg
fQorICAgIGJvb2wgaXNTdWJzdHJpbmcoKSBjb25zdDsKICAgICBib29sIGlzOEJpdCgpIGNvbnN0
IHsgcmV0dXJuIG1fZmxhZ3MgJiBJczhCaXQ7IH0KICAgICB2b2lkIHNldElzOEJpdChib29sIGZs
YWcpIGNvbnN0CiAgICAgewpAQCAtMjkxLDE3ICsyOTIsMjggQEAgcHJpdmF0ZToKICAgICAgICAg
ZmliZXIoMikuc2V0KHZtLCB0aGlzLCBzMyk7CiAgICAgfQogCi0gICAgdm9pZCBmaW5pc2hDcmVh
dGlvbihWTSYgdm0sIEpTU3RyaW5nKiBiYXNlLCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGxl
bmd0aCkKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEV4ZWNTdGF0ZSYgZXhlYywgSlNTdHJpbmcm
IGJhc2UsIHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQogICAgIHsKKyAgICAgICAg
Vk0mIHZtID0gZXhlYy52bSgpOwogICAgICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7Ci0g
ICAgICAgIEFTU0VSVCghYmFzZS0+aXNSb3BlKCkpOwogICAgICAgICBBU1NFUlQoIXN1bU92ZXJm
bG93czxpbnQzMl90PihvZmZzZXQsIGxlbmd0aCkpOwotICAgICAgICBBU1NFUlQob2Zmc2V0ICsg
bGVuZ3RoIDw9IGJhc2UtPmxlbmd0aCgpKTsKKyAgICAgICAgQVNTRVJUKG9mZnNldCArIGxlbmd0
aCA8PSBiYXNlLmxlbmd0aCgpKTsKICAgICAgICAgbV9sZW5ndGggPSBsZW5ndGg7Ci0gICAgICAg
IHNldElzOEJpdChiYXNlLT5pczhCaXQoKSk7CisgICAgICAgIHNldElzOEJpdChiYXNlLmlzOEJp
dCgpKTsKICAgICAgICAgc2V0SXNTdWJzdHJpbmcodHJ1ZSk7Ci0gICAgICAgIHN1YnN0cmluZ0Jh
c2UoKS5zZXQodm0sIHRoaXMsIGJhc2UpOwotICAgICAgICBzdWJzdHJpbmdPZmZzZXQoKSA9IG9m
ZnNldDsKKyAgICAgICAgaWYgKGJhc2UuaXNTdWJzdHJpbmcoKSkgeworICAgICAgICAgICAgSlNS
b3BlU3RyaW5nJiBiYXNlUm9wZSA9IHN0YXRpY19jYXN0PEpTUm9wZVN0cmluZyY+KGJhc2UpOwor
ICAgICAgICAgICAgc3Vic3RyaW5nQmFzZSgpLnNldCh2bSwgdGhpcywgYmFzZVJvcGUuc3Vic3Ry
aW5nQmFzZSgpLmdldCgpKTsKKyAgICAgICAgICAgIHN1YnN0cmluZ09mZnNldCgpID0gYmFzZVJv
cGUuc3Vic3RyaW5nT2Zmc2V0KCkgKyBvZmZzZXQ7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICBzdWJzdHJpbmdCYXNlKCkuc2V0KHZtLCB0aGlzLCAmYmFzZSk7CisgICAgICAgICAgICBz
dWJzdHJpbmdPZmZzZXQoKSA9IG9mZnNldDsKKyAgICAgICAgfQorCisgICAgICAgIC8vIEZvciBu
b3csIGxldCdzIG5vdCBhbGxvdyBzdWJzdHJpbmdzIHdpdGggYSByb3BlIGJhc2UuCisgICAgICAg
IC8vIFJlc29sdmUgbm9uLXN1YnN0cmluZyByb3BlIGJhc2VzIHNvIHdlIGRvbid0IGhhdmUgdG8g
ZGVhbCB3aXRoIGl0LgorICAgICAgICBpZiAoYmFzZS5pc1JvcGUoKSAmJiAhYmFzZS5pc1N1YnN0
cmluZygpKQorICAgICAgICAgICAgc3RhdGljX2Nhc3Q8SlNSb3BlU3RyaW5nJj4oYmFzZSkucmVz
b2x2ZVJvcGUoJmV4ZWMpOwogICAgIH0KIAogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mIHZt
KQpAQCAtMzQyLDEwICszNTQsMTAgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbmV3U3RyaW5n
OwogICAgIH0KIAotICAgIHN0YXRpYyBKU1N0cmluZyogY3JlYXRlKFZNJiB2bSwgSlNTdHJpbmcq
IGJhc2UsIHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQorICAgIHN0YXRpYyBKU1N0
cmluZyogY3JlYXRlKEV4ZWNTdGF0ZSYgZXhlYywgSlNTdHJpbmcmIGJhc2UsIHVuc2lnbmVkIG9m
ZnNldCwgdW5zaWduZWQgbGVuZ3RoKQogICAgIHsKLSAgICAgICAgSlNSb3BlU3RyaW5nKiBuZXdT
dHJpbmcgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU1JvcGVTdHJpbmc+KHZtLmhlYXAp
KSBKU1JvcGVTdHJpbmcodm0pOwotICAgICAgICBuZXdTdHJpbmctPmZpbmlzaENyZWF0aW9uKHZt
LCBiYXNlLCBvZmZzZXQsIGxlbmd0aCk7CisgICAgICAgIEpTUm9wZVN0cmluZyogbmV3U3RyaW5n
ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNSb3BlU3RyaW5nPihleGVjLnZtKCkuaGVh
cCkpIEpTUm9wZVN0cmluZyhleGVjLnZtKCkpOworICAgICAgICBuZXdTdHJpbmctPmZpbmlzaENy
ZWF0aW9uKGV4ZWMsIGJhc2UsIG9mZnNldCwgbGVuZ3RoKTsKICAgICAgICAgcmV0dXJuIG5ld1N0
cmluZzsKICAgICB9CiAKQEAgLTUxNSw4ICs1MjcsNyBAQCBpbmxpbmUgSlNTdHJpbmcqIGpzU3Vi
c3RyaW5nKEV4ZWNTdGF0ZSogZXhlYywgSlNTdHJpbmcqIHMsIHVuc2lnbmVkIG9mZnNldCwgdW5z
aQogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgaWYgKCFsZW5ndGgpCiAgICAgICAgIHJl
dHVybiB2bS5zbWFsbFN0cmluZ3MuZW1wdHlTdHJpbmcoKTsKLSAgICBzLT52YWx1ZShleGVjKTsg
Ly8gRm9yIGVmZmVjdC4gV2UgbmVlZCB0byBlbnN1cmUgdGhhdCBhbnkgc3RyaW5nIHRoYXQgaXMg
dXNlZCBhcyBhIHN1YnN0cmluZyBiYXNlIGlzIG5vdCBhIHJvcGUuCi0gICAgcmV0dXJuIEpTUm9w
ZVN0cmluZzo6Y3JlYXRlKHZtLCBzLCBvZmZzZXQsIGxlbmd0aCk7CisgICAgcmV0dXJuIEpTUm9w
ZVN0cmluZzo6Y3JlYXRlKCpleGVjLCAqcywgb2Zmc2V0LCBsZW5ndGgpOwogfQogCiBpbmxpbmUg
SlNTdHJpbmcqIGpzU3Vic3RyaW5nOChWTSogdm0sIGNvbnN0IFN0cmluZyYgcywgdW5zaWduZWQg
b2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpCkBAIC03MDMsNiArNzE0LDExIEBAIEFMV0FZU19JTkxJ
TkUgU3RyaW5nVmlldyBKU1N0cmluZzo6dmlldyhFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0CiAgICAg
cmV0dXJuIFN0cmluZ1ZpZXcobV92YWx1ZSk7CiB9CiAKK2lubGluZSBib29sIEpTU3RyaW5nOjpp
c1N1YnN0cmluZygpIGNvbnN0Cit7CisgICAgcmV0dXJuIGlzUm9wZSgpICYmIHN0YXRpY19jYXN0
PGNvbnN0IEpTUm9wZVN0cmluZyo+KHRoaXMpLT5pc1N1YnN0cmluZygpOworfQorCiB9IC8vIG5h
bWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIEpTU3RyaW5nX2gK
</data>
<flag name="review"
          id="279612"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>