<?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>185557</bug_id>
          
          <creation_ts>2018-05-11 12:30:34 -0700</creation_ts>
          <short_desc>[INTL] improve efficiency of Intl.NumberFormat formatToParts</short_desc>
          <delta_ts>2019-02-05 14:10:31 -0800</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>Safari Technology Preview</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="Andy VanWagoner">andy</reporter>
          <assigned_to name="Andy VanWagoner">andy</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>feliziani.emanuele</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1423219</commentid>
    <comment_count>0</comment_count>
    <who name="Andy VanWagoner">andy</who>
    <bug_when>2018-05-11 12:30:34 -0700</bug_when>
    <thetext>unum_formatDoubleForFields gives fields that are nested, and in no particular order. The initial implementation transforming those into the list of number format parts is O(N^2), but can theoretically be done in O(N log N).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1501035</commentid>
    <comment_count>1</comment_count>
    <who name="Emanuele Feliziani">feliziani.emanuele</who>
    <bug_when>2019-01-31 23:49:20 -0800</bug_when>
    <thetext>Is this bug the reason why this is enabled in Safari Technology Preview, but not in the current iOS 12.2 beta?

It would be great if formatToParts got released in 12.2 when it hits the public.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1501105</commentid>
    <comment_count>2</comment_count>
    <who name="Andy VanWagoner">andy</who>
    <bug_when>2019-02-01 08:17:26 -0800</bug_when>
    <thetext>(In reply to Emanuele Feliziani from comment #1)
&gt; Is this bug the reason why this is enabled in Safari Technology Preview, but
&gt; not in the current iOS 12.2 beta?
&gt; 
&gt; It would be great if formatToParts got released in 12.2 when it hits the
&gt; public.

My best guess is that this is not the blocker for inclusion in Safari. iirc, Apple wants to minimize the differences in Safari versions across OS versions, which have different ICU libraries available. Until all of the supported OS versions can enable the feature, it probably won&apos;t make the cut.

If I&apos;m wrong, I&apos;d be happy to be corrected by an Apple representative. If this is a blocker, I can find some time to fix it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1501313</commentid>
    <comment_count>3</comment_count>
      <attachid>360910</attachid>
    <who name="Andy VanWagoner">andy</who>
    <bug_when>2019-02-01 15:14:40 -0800</bug_when>
    <thetext>Created attachment 360910
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1501314</commentid>
    <comment_count>4</comment_count>
    <who name="Andy VanWagoner">andy</who>
    <bug_when>2019-02-01 15:16:15 -0800</bug_when>
    <thetext>I&apos;m hoping this is both faster, and also an easier algorithm to understand &amp; maintain.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1502043</commentid>
    <comment_count>5</comment_count>
      <attachid>360910</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-02-04 15:08:51 -0800</bug_when>
    <thetext>Comment on attachment 360910
Patch

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

r=me with suggested improvements.

&gt; Source/JavaScriptCore/runtime/IntlNumberFormat.cpp:513
&gt; +    auto literalField = std::make_pair(-1, resultLength);

Instead of using a literal -1 like this, can you give it a name e.g.
    static const int32_t defaultFieldType = -1;
    auto literalField = std::make_pair(defaultFieldType, resultLength);

&gt; Source/JavaScriptCore/runtime/IntlNumberFormat.cpp:514
&gt; +    Vector&lt;std::pair&lt;int32_t, int32_t&gt;&gt; fields(resultLength, literalField);

Why not use a struct instead of a pair here?

&gt; Source/JavaScriptCore/runtime/IntlNumberFormat.cpp:544
&gt; +        auto partType = fieldType &lt; 0 ? literalString : jsString(&amp;exec, partTypeString(UNumberFormatFields(fieldType), value));

nit: use fieldType == defaultFieldType instead of fieldType &lt; 0.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1502444</commentid>
    <comment_count>6</comment_count>
      <attachid>361205</attachid>
    <who name="Andy VanWagoner">andy</who>
    <bug_when>2019-02-05 11:16:18 -0800</bug_when>
    <thetext>Created attachment 361205
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1502451</commentid>
    <comment_count>7</comment_count>
      <attachid>361205</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-02-05 11:56:32 -0800</bug_when>
    <thetext>Comment on attachment 361205
Patch

Removing r? flag since this patch has already been reviewed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1502504</commentid>
    <comment_count>8</comment_count>
      <attachid>361205</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-02-05 14:09:38 -0800</bug_when>
    <thetext>Comment on attachment 361205
Patch

Clearing flags on attachment: 361205

Committed r240992: &lt;https://trac.webkit.org/changeset/240992&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1502505</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-02-05 14:09:40 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1502506</commentid>
    <comment_count>10</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-02-05 14:10:31 -0800</bug_when>
    <thetext>&lt;rdar://problem/47830639&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>360910</attachid>
            <date>2019-02-01 15:14:40 -0800</date>
            <delta_ts>2019-02-05 11:16:17 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-185557-20190201161439.patch</filename>
            <type>text/plain</type>
            <size>5335</size>
            <attacher name="Andy VanWagoner">andy</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQwODU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
N2ZmMzZiZTA0ZjRjYjVhMDIzYWI4NWY2ZTYyNDM1NDZhMjVhM2UyLi4zMDA5NTFlMWNjMDU5Nzll
NDE1ZmNlZTExNjkzZjYwMjVmNjE3NmUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOSBAQAorMjAxOS0wMi0wMSAgQW5keSBWYW5XYWdvbmVyICA8YW5keUB2YW53YWdvbmVy
LmZhbWlseT4KKworICAgICAgICBbSU5UTF0gaW1wcm92ZSBlZmZpY2llbmN5IG9mIEludGwuTnVt
YmVyRm9ybWF0IGZvcm1hdFRvUGFydHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE4NTU1NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFNpbmNlIGZpZWxkIG5lc3RpbmcgZGVwdGggaXMgbWluaW1hbCwgdGhp
cyBhbGdvcml0aG0gc2hvdWxkIGJlIGVmZmVjdGl2ZWx5IE8obiksCisgICAgICAgIHdoZXJlIG4g
aXMgdGhlIG51bWJlciBvZiBjaGFyYWN0ZXJzIGluIHRoZSBmb3JtYXR0ZWQgc3RyaW5nLgorICAg
ICAgICBJdCBtYXkgYmUgbGVzcyBtZW1vcnkgZWZmaWNpZW50IHRoYW4gdGhlIHByZXZpb3VzIGlt
cGwsIHNpbmNlIHRoZSBpbnRlcm1lZGlhdGUgVmVjdG9yCisgICAgICAgIGlzIHRoZSBsZW5ndGgg
b2YgdGhlIHN0cmluZywgaW5zdGVhZCBvZiB0aGUgY291bnQgb2YgdGhlIGZpZWxkcy4KKworICAg
ICAgICAqIHJ1bnRpbWUvSW50bE51bWJlckZvcm1hdC5jcHA6CisgICAgICAgIChKU0M6OkludGxO
dW1iZXJGb3JtYXQ6OmZvcm1hdFRvUGFydHMpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bE51bWJl
ckZvcm1hdC5oOgorCiAyMDE5LTAyLTAxICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5j
b20+CiAKICAgICAgICAgW0pTQ10gUmVtb3ZlIGNlbGxKU1ZhbHVlT09CU3BhY2UKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdC5jcHAKaW5kZXgg
NGQ0MTg0NWQ5ZDJmNWY5M2M5MDM1N2U2Y2FjODJjYTQwOTBiMmM3Ni4uMmZmOTc1ZDA5MDQ2MDc5
MWMyYmYxZDUzZjFiOTEyOWFmMzIwMjNkMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdC5jcHAKQEAgLTUxMCwxNiArNTEwLDE4IEBAIEpT
VmFsdWUgSW50bE51bWJlckZvcm1hdDo6Zm9ybWF0VG9QYXJ0cyhFeGVjU3RhdGUmIGV4ZWMsIGRv
dWJsZSB2YWx1ZSkKICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCiAgICAgICAgIHJldHVybiB0
aHJvd1R5cGVFcnJvcigmZXhlYywgc2NvcGUsICJmYWlsZWQgdG8gZm9ybWF0IGEgbnVtYmVyLiJf
cyk7CiAKLSAgICBWZWN0b3I8SW50bE51bWJlckZvcm1hdEZpZWxkPiBmaWVsZHM7CisgICAgYXV0
byBsaXRlcmFsRmllbGQgPSBzdGQ6Om1ha2VfcGFpcigtMSwgcmVzdWx0TGVuZ3RoKTsKKyAgICBW
ZWN0b3I8c3RkOjpwYWlyPGludDMyX3QsIGludDMyX3Q+PiBmaWVsZHMocmVzdWx0TGVuZ3RoLCBs
aXRlcmFsRmllbGQpOwogICAgIGludDMyX3QgYmVnaW5JbmRleCA9IDA7CiAgICAgaW50MzJfdCBl
bmRJbmRleCA9IDA7CiAgICAgYXV0byBmaWVsZFR5cGUgPSB1ZmllbGRwb3NpdGVyX25leHQoZmll
bGRJdHIuZ2V0KCksICZiZWdpbkluZGV4LCAmZW5kSW5kZXgpOwogICAgIHdoaWxlIChmaWVsZFR5
cGUgPj0gMCkgewotICAgICAgICBJbnRsTnVtYmVyRm9ybWF0RmllbGQgZmllbGQ7Ci0gICAgICAg
IGZpZWxkLnR5cGUgPSBVTnVtYmVyRm9ybWF0RmllbGRzKGZpZWxkVHlwZSk7Ci0gICAgICAgIGZp
ZWxkLmJlZ2luSW5kZXggPSBiZWdpbkluZGV4OwotICAgICAgICBmaWVsZC5lbmRJbmRleCA9IGVu
ZEluZGV4OwotICAgICAgICBmaWVsZHMuYXBwZW5kKGZpZWxkKTsKKyAgICAgICAgYXV0byBzaXpl
ID0gZW5kSW5kZXggLSBiZWdpbkluZGV4OworICAgICAgICBmb3IgKGF1dG8gaSA9IGJlZ2luSW5k
ZXg7IGkgPCBlbmRJbmRleDsgKytpKSB7CisgICAgICAgICAgICAvLyBPbmx5IG92ZXJyaWRlIHBy
ZXZpb3VzIHZhbHVlIGlmIG5ldyB2YWx1ZSBpcyBtb3JlIHNwZWNpZmljLgorICAgICAgICAgICAg
aWYgKGZpZWxkc1tpXS5zZWNvbmQgPj0gc2l6ZSkKKyAgICAgICAgICAgICAgICBmaWVsZHNbaV0g
PSBzdGQ6Om1ha2VfcGFpcihmaWVsZFR5cGUsIHNpemUpOworICAgICAgICB9CiAgICAgICAgIGZp
ZWxkVHlwZSA9IHVmaWVsZHBvc2l0ZXJfbmV4dChmaWVsZEl0ci5nZXQoKSwgJmJlZ2luSW5kZXgs
ICZlbmRJbmRleCk7CiAgICAgfQogCkBAIC01MzMsMjkgKzUzNSwyMSBAQCBKU1ZhbHVlIEludGxO
dW1iZXJGb3JtYXQ6OmZvcm1hdFRvUGFydHMoRXhlY1N0YXRlJiBleGVjLCBkb3VibGUgdmFsdWUp
CiAgICAgYXV0byB0eXBlUHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0s
ICJ0eXBlIik7CiAgICAgYXV0byBsaXRlcmFsU3RyaW5nID0ganNTdHJpbmcoJmV4ZWMsICJsaXRl
cmFsIl9zKTsKIAotICAgIC8vIEZJWE1FOiA8aHR0cDovL3dlYmtpdC5vcmcvYi8xODU1NTc+IFRo
aXMgaXMgTyhOXjIpIGFuZCBjb3VsZCBiZSBkb25lIGluIE8oTiBsb2cgTikuCiAgICAgaW50MzJf
dCBjdXJyZW50SW5kZXggPSAwOwogICAgIHdoaWxlIChjdXJyZW50SW5kZXggPCByZXN1bHRMZW5n
dGgpIHsKLSAgICAgICAgSW50bE51bWJlckZvcm1hdEZpZWxkIGZpZWxkOwotICAgICAgICBpbnQz
Ml90IG5leHRTdGFydEluZGV4ID0gcmVzdWx0TGVuZ3RoOwotICAgICAgICBmb3IgKGNvbnN0IGF1
dG8gJmNhbmRpZGF0ZSA6IGZpZWxkcykgewotICAgICAgICAgICAgaWYgKGNhbmRpZGF0ZS5iZWdp
bkluZGV4IDw9IGN1cnJlbnRJbmRleCAmJiBjdXJyZW50SW5kZXggPCBjYW5kaWRhdGUuZW5kSW5k
ZXggJiYgKCFmaWVsZC5zaXplKCkgfHwgY2FuZGlkYXRlLnNpemUoKSA8IGZpZWxkLnNpemUoKSkp
Ci0gICAgICAgICAgICAgICAgZmllbGQgPSBjYW5kaWRhdGU7Ci0gICAgICAgICAgICBpZiAoY3Vy
cmVudEluZGV4IDwgY2FuZGlkYXRlLmJlZ2luSW5kZXggJiYgY2FuZGlkYXRlLmJlZ2luSW5kZXgg
PCBuZXh0U3RhcnRJbmRleCkKLSAgICAgICAgICAgICAgICBuZXh0U3RhcnRJbmRleCA9IGNhbmRp
ZGF0ZS5iZWdpbkluZGV4OwotICAgICAgICB9Ci0gICAgICAgIGF1dG8gbmV4dEluZGV4ID0gZmll
bGQuc2l6ZSgpID8gc3RkOjptaW4oZmllbGQuZW5kSW5kZXgsIG5leHRTdGFydEluZGV4KSA6IG5l
eHRTdGFydEluZGV4OwotICAgICAgICBhdXRvIHR5cGUgPSBmaWVsZC5zaXplKCkgPyBqc1N0cmlu
ZygmZXhlYywgcGFydFR5cGVTdHJpbmcoZmllbGQudHlwZSwgdmFsdWUpKSA6IGxpdGVyYWxTdHJp
bmc7Ci0gICAgICAgIGF1dG8gdmFsdWUgPSBqc1N1YnN0cmluZygmdm0sIHJlc3VsdFN0cmluZywg
Y3VycmVudEluZGV4LCBuZXh0SW5kZXggLSBjdXJyZW50SW5kZXgpOworICAgICAgICBhdXRvIHN0
YXJ0SW5kZXggPSBjdXJyZW50SW5kZXg7CisgICAgICAgIGF1dG8gZmllbGRUeXBlID0gZmllbGRz
W2N1cnJlbnRJbmRleF0uZmlyc3Q7CisgICAgICAgIHdoaWxlIChjdXJyZW50SW5kZXggPCByZXN1
bHRMZW5ndGggJiYgZmllbGRzW2N1cnJlbnRJbmRleF0uZmlyc3QgPT0gZmllbGRUeXBlKQorICAg
ICAgICAgICAgKytjdXJyZW50SW5kZXg7CisgICAgICAgIGF1dG8gcGFydFR5cGUgPSBmaWVsZFR5
cGUgPCAwID8gbGl0ZXJhbFN0cmluZyA6IGpzU3RyaW5nKCZleGVjLCBwYXJ0VHlwZVN0cmluZyhV
TnVtYmVyRm9ybWF0RmllbGRzKGZpZWxkVHlwZSksIHZhbHVlKSk7CisgICAgICAgIGF1dG8gcGFy
dFZhbHVlID0ganNTdWJzdHJpbmcoJnZtLCByZXN1bHRTdHJpbmcsIHN0YXJ0SW5kZXgsIGN1cnJl
bnRJbmRleCAtIHN0YXJ0SW5kZXgpOwogICAgICAgICBKU09iamVjdCogcGFydCA9IGNvbnN0cnVj
dEVtcHR5T2JqZWN0KCZleGVjKTsKLSAgICAgICAgcGFydC0+cHV0RGlyZWN0KHZtLCB0eXBlUHJv
cGVydHlOYW1lLCB0eXBlKTsKLSAgICAgICAgcGFydC0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0
eU5hbWVzLT52YWx1ZSwgdmFsdWUpOworICAgICAgICBwYXJ0LT5wdXREaXJlY3Qodm0sIHR5cGVQ
cm9wZXJ0eU5hbWUsIHBhcnRUeXBlKTsKKyAgICAgICAgcGFydC0+cHV0RGlyZWN0KHZtLCB2bS5w
cm9wZXJ0eU5hbWVzLT52YWx1ZSwgcGFydFZhbHVlKTsKICAgICAgICAgcGFydHMtPnB1dERpcmVj
dEluZGV4KCZleGVjLCBpbmRleCsrLCBwYXJ0KTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgeyB9KTsKLSAgICAgICAgY3VycmVudEluZGV4ID0gbmV4dEluZGV4OwogICAgIH0K
IAotCiAgICAgcmV0dXJuIHBhcnRzOwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmgKaW5kZXggMWQ5YzQ4NDM3MjUyMjhiZDIy
YjM5MjlhMzFmM2U4Y2Y5NWFhOTQ3YS4uYTI0ZjViNDQ2MWZkOTU5OWE2NWJlM2RmYzA0M2JlZDU2
ZGY5YjkxYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51
bWJlckZvcm1hdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1i
ZXJGb3JtYXQuaApAQCAtOTQsMTYgKzk0LDYgQEAgcHJpdmF0ZToKICAgICAgICAgdm9pZCBvcGVy
YXRvcigpKFVGaWVsZFBvc2l0aW9uSXRlcmF0b3IqKSBjb25zdDsKICAgICB9OwogCi0gICAgc3Ry
dWN0IEludGxOdW1iZXJGb3JtYXRGaWVsZCB7Ci0gICAgICAgIFVOdW1iZXJGb3JtYXRGaWVsZHMg
dHlwZTsKLSAgICAgICAgaW50MzJfdCBiZWdpbkluZGV4IHsgMCB9OwotICAgICAgICBpbnQzMl90
IGVuZEluZGV4IHsgMCB9OwotICAgICAgICBpbnQzMl90IHNpemUoKSBjb25zdAotICAgICAgICB7
Ci0gICAgICAgICAgICByZXR1cm4gZW5kSW5kZXggLSBiZWdpbkluZGV4OwotICAgICAgICB9Owot
ICAgIH07Ci0KICAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIHBhcnRUeXBlU3RyaW5nKFVOdW1iZXJG
b3JtYXRGaWVsZHMsIGRvdWJsZSk7CiAjZW5kaWYKIH07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>361205</attachid>
            <date>2019-02-05 11:16:18 -0800</date>
            <delta_ts>2019-02-05 14:09:38 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-185557-20190205121618.patch</filename>
            <type>text/plain</type>
            <size>5523</size>
            <attacher name="Andy VanWagoner">andy</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQwOTc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
N2ZjNGVmYzBlMmIxMjQ1NTQzMmY0Zjg4MTg3NjM1Y2YyMmU0YjgxLi5jYjUzYjcxNDY3ZGMyZWM4
MmRiOWJlNWMxMmQ1ZWJkN2UxZDUwMjg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOSBAQAorMjAxOS0wMi0wNSAgQW5keSBWYW5XYWdvbmVyICA8YW5keUB2YW53YWdvbmVy
LmZhbWlseT4KKworICAgICAgICBbSU5UTF0gaW1wcm92ZSBlZmZpY2llbmN5IG9mIEludGwuTnVt
YmVyRm9ybWF0IGZvcm1hdFRvUGFydHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE4NTU1NworCisgICAgICAgIFJldmlld2VkIGJ5IE1hcmsgTGFtLgor
CisgICAgICAgIFNpbmNlIGZpZWxkIG5lc3RpbmcgZGVwdGggaXMgbWluaW1hbCwgdGhpcyBhbGdv
cml0aG0gc2hvdWxkIGJlIGVmZmVjdGl2ZWx5IE8obiksCisgICAgICAgIHdoZXJlIG4gaXMgdGhl
IG51bWJlciBvZiBjaGFyYWN0ZXJzIGluIHRoZSBmb3JtYXR0ZWQgc3RyaW5nLgorICAgICAgICBJ
dCBtYXkgYmUgbGVzcyBtZW1vcnkgZWZmaWNpZW50IHRoYW4gdGhlIHByZXZpb3VzIGltcGwsIHNp
bmNlIHRoZSBpbnRlcm1lZGlhdGUgVmVjdG9yCisgICAgICAgIGlzIHRoZSBsZW5ndGggb2YgdGhl
IHN0cmluZywgaW5zdGVhZCBvZiB0aGUgY291bnQgb2YgdGhlIGZpZWxkcy4KKworICAgICAgICAq
IHJ1bnRpbWUvSW50bE51bWJlckZvcm1hdC5jcHA6CisgICAgICAgIChKU0M6OkludGxOdW1iZXJG
b3JtYXQ6OmZvcm1hdFRvUGFydHMpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bE51bWJlckZvcm1h
dC5oOgorCiAyMDE5LTAyLTA0ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAK
ICAgICAgICAgVW5yZXZpZXdlZCwgYWRkIG1pc3NpbmcgZXhjZXB0aW9uIGNoZWNrcyBhZnRlciBy
MjQwNjM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVt
YmVyRm9ybWF0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJG
b3JtYXQuY3BwCmluZGV4IDRkNDE4NDVkOWQyZjVmOTNjOTAzNTdlNmNhYzgyY2E0MDkwYjJjNzYu
LmUwMTU4YTNmOTYzNTNlOTkxODFkNGZkNGNiNzQ3YjM2MTg3MTBiMzggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwCkBAIC01MTAs
MTYgKzUxMCwxOSBAQCBKU1ZhbHVlIEludGxOdW1iZXJGb3JtYXQ6OmZvcm1hdFRvUGFydHMoRXhl
Y1N0YXRlJiBleGVjLCBkb3VibGUgdmFsdWUpCiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQog
ICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoJmV4ZWMsIHNjb3BlLCAiZmFpbGVkIHRvIGZv
cm1hdCBhIG51bWJlci4iX3MpOwogCi0gICAgVmVjdG9yPEludGxOdW1iZXJGb3JtYXRGaWVsZD4g
ZmllbGRzOworICAgIGludDMyX3QgbGl0ZXJhbEZpZWxkVHlwZSA9IC0xOworICAgIGF1dG8gbGl0
ZXJhbEZpZWxkID0gSW50bE51bWJlckZvcm1hdEZpZWxkKGxpdGVyYWxGaWVsZFR5cGUsIHJlc3Vs
dExlbmd0aCk7CisgICAgVmVjdG9yPEludGxOdW1iZXJGb3JtYXRGaWVsZD4gZmllbGRzKHJlc3Vs
dExlbmd0aCwgbGl0ZXJhbEZpZWxkKTsKICAgICBpbnQzMl90IGJlZ2luSW5kZXggPSAwOwogICAg
IGludDMyX3QgZW5kSW5kZXggPSAwOwogICAgIGF1dG8gZmllbGRUeXBlID0gdWZpZWxkcG9zaXRl
cl9uZXh0KGZpZWxkSXRyLmdldCgpLCAmYmVnaW5JbmRleCwgJmVuZEluZGV4KTsKICAgICB3aGls
ZSAoZmllbGRUeXBlID49IDApIHsKLSAgICAgICAgSW50bE51bWJlckZvcm1hdEZpZWxkIGZpZWxk
OwotICAgICAgICBmaWVsZC50eXBlID0gVU51bWJlckZvcm1hdEZpZWxkcyhmaWVsZFR5cGUpOwot
ICAgICAgICBmaWVsZC5iZWdpbkluZGV4ID0gYmVnaW5JbmRleDsKLSAgICAgICAgZmllbGQuZW5k
SW5kZXggPSBlbmRJbmRleDsKLSAgICAgICAgZmllbGRzLmFwcGVuZChmaWVsZCk7CisgICAgICAg
IGF1dG8gc2l6ZSA9IGVuZEluZGV4IC0gYmVnaW5JbmRleDsKKyAgICAgICAgZm9yIChhdXRvIGkg
PSBiZWdpbkluZGV4OyBpIDwgZW5kSW5kZXg7ICsraSkgeworICAgICAgICAgICAgLy8gT25seSBv
dmVycmlkZSBwcmV2aW91cyB2YWx1ZSBpZiBuZXcgdmFsdWUgaXMgbW9yZSBzcGVjaWZpYy4KKyAg
ICAgICAgICAgIGlmIChmaWVsZHNbaV0uc2l6ZSA+PSBzaXplKQorICAgICAgICAgICAgICAgIGZp
ZWxkc1tpXSA9IEludGxOdW1iZXJGb3JtYXRGaWVsZChmaWVsZFR5cGUsIHNpemUpOworICAgICAg
ICB9CiAgICAgICAgIGZpZWxkVHlwZSA9IHVmaWVsZHBvc2l0ZXJfbmV4dChmaWVsZEl0ci5nZXQo
KSwgJmJlZ2luSW5kZXgsICZlbmRJbmRleCk7CiAgICAgfQogCkBAIC01MzMsMjkgKzUzNiwyMSBA
QCBKU1ZhbHVlIEludGxOdW1iZXJGb3JtYXQ6OmZvcm1hdFRvUGFydHMoRXhlY1N0YXRlJiBleGVj
LCBkb3VibGUgdmFsdWUpCiAgICAgYXV0byB0eXBlUHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6
ZnJvbVN0cmluZygmdm0sICJ0eXBlIik7CiAgICAgYXV0byBsaXRlcmFsU3RyaW5nID0ganNTdHJp
bmcoJmV4ZWMsICJsaXRlcmFsIl9zKTsKIAotICAgIC8vIEZJWE1FOiA8aHR0cDovL3dlYmtpdC5v
cmcvYi8xODU1NTc+IFRoaXMgaXMgTyhOXjIpIGFuZCBjb3VsZCBiZSBkb25lIGluIE8oTiBsb2cg
TikuCiAgICAgaW50MzJfdCBjdXJyZW50SW5kZXggPSAwOwogICAgIHdoaWxlIChjdXJyZW50SW5k
ZXggPCByZXN1bHRMZW5ndGgpIHsKLSAgICAgICAgSW50bE51bWJlckZvcm1hdEZpZWxkIGZpZWxk
OwotICAgICAgICBpbnQzMl90IG5leHRTdGFydEluZGV4ID0gcmVzdWx0TGVuZ3RoOwotICAgICAg
ICBmb3IgKGNvbnN0IGF1dG8gJmNhbmRpZGF0ZSA6IGZpZWxkcykgewotICAgICAgICAgICAgaWYg
KGNhbmRpZGF0ZS5iZWdpbkluZGV4IDw9IGN1cnJlbnRJbmRleCAmJiBjdXJyZW50SW5kZXggPCBj
YW5kaWRhdGUuZW5kSW5kZXggJiYgKCFmaWVsZC5zaXplKCkgfHwgY2FuZGlkYXRlLnNpemUoKSA8
IGZpZWxkLnNpemUoKSkpCi0gICAgICAgICAgICAgICAgZmllbGQgPSBjYW5kaWRhdGU7Ci0gICAg
ICAgICAgICBpZiAoY3VycmVudEluZGV4IDwgY2FuZGlkYXRlLmJlZ2luSW5kZXggJiYgY2FuZGlk
YXRlLmJlZ2luSW5kZXggPCBuZXh0U3RhcnRJbmRleCkKLSAgICAgICAgICAgICAgICBuZXh0U3Rh
cnRJbmRleCA9IGNhbmRpZGF0ZS5iZWdpbkluZGV4OwotICAgICAgICB9Ci0gICAgICAgIGF1dG8g
bmV4dEluZGV4ID0gZmllbGQuc2l6ZSgpID8gc3RkOjptaW4oZmllbGQuZW5kSW5kZXgsIG5leHRT
dGFydEluZGV4KSA6IG5leHRTdGFydEluZGV4OwotICAgICAgICBhdXRvIHR5cGUgPSBmaWVsZC5z
aXplKCkgPyBqc1N0cmluZygmZXhlYywgcGFydFR5cGVTdHJpbmcoZmllbGQudHlwZSwgdmFsdWUp
KSA6IGxpdGVyYWxTdHJpbmc7Ci0gICAgICAgIGF1dG8gdmFsdWUgPSBqc1N1YnN0cmluZygmdm0s
IHJlc3VsdFN0cmluZywgY3VycmVudEluZGV4LCBuZXh0SW5kZXggLSBjdXJyZW50SW5kZXgpOwor
ICAgICAgICBhdXRvIHN0YXJ0SW5kZXggPSBjdXJyZW50SW5kZXg7CisgICAgICAgIGF1dG8gZmll
bGRUeXBlID0gZmllbGRzW2N1cnJlbnRJbmRleF0udHlwZTsKKyAgICAgICAgd2hpbGUgKGN1cnJl
bnRJbmRleCA8IHJlc3VsdExlbmd0aCAmJiBmaWVsZHNbY3VycmVudEluZGV4XS50eXBlID09IGZp
ZWxkVHlwZSkKKyAgICAgICAgICAgICsrY3VycmVudEluZGV4OworICAgICAgICBhdXRvIHBhcnRU
eXBlID0gZmllbGRUeXBlID09IGxpdGVyYWxGaWVsZFR5cGUgPyBsaXRlcmFsU3RyaW5nIDoganNT
dHJpbmcoJmV4ZWMsIHBhcnRUeXBlU3RyaW5nKFVOdW1iZXJGb3JtYXRGaWVsZHMoZmllbGRUeXBl
KSwgdmFsdWUpKTsKKyAgICAgICAgYXV0byBwYXJ0VmFsdWUgPSBqc1N1YnN0cmluZygmdm0sIHJl
c3VsdFN0cmluZywgc3RhcnRJbmRleCwgY3VycmVudEluZGV4IC0gc3RhcnRJbmRleCk7CiAgICAg
ICAgIEpTT2JqZWN0KiBwYXJ0ID0gY29uc3RydWN0RW1wdHlPYmplY3QoJmV4ZWMpOwotICAgICAg
ICBwYXJ0LT5wdXREaXJlY3Qodm0sIHR5cGVQcm9wZXJ0eU5hbWUsIHR5cGUpOwotICAgICAgICBw
YXJ0LT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnZhbHVlLCB2YWx1ZSk7CisgICAg
ICAgIHBhcnQtPnB1dERpcmVjdCh2bSwgdHlwZVByb3BlcnR5TmFtZSwgcGFydFR5cGUpOworICAg
ICAgICBwYXJ0LT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnZhbHVlLCBwYXJ0VmFs
dWUpOwogICAgICAgICBwYXJ0cy0+cHV0RGlyZWN0SW5kZXgoJmV4ZWMsIGluZGV4KyssIHBhcnQp
OwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwotICAgICAgICBjdXJy
ZW50SW5kZXggPSBuZXh0SW5kZXg7CiAgICAgfQogCi0KICAgICByZXR1cm4gcGFydHM7CiB9CiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1i
ZXJGb3JtYXQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3Jt
YXQuaAppbmRleCAxZDljNDg0MzcyNTIyOGJkMjJiMzkyOWEzMWYzZThjZjk1YWE5NDdhLi45ZDRm
NDdkNmYzMTk5ZjNkMWE1ZjMxNjFjMGIyZTAzYWI4YzgzYWU2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdC5oCkBAIC05NSwxMyArOTUsMTIg
QEAgcHJpdmF0ZToKICAgICB9OwogCiAgICAgc3RydWN0IEludGxOdW1iZXJGb3JtYXRGaWVsZCB7
Ci0gICAgICAgIFVOdW1iZXJGb3JtYXRGaWVsZHMgdHlwZTsKLSAgICAgICAgaW50MzJfdCBiZWdp
bkluZGV4IHsgMCB9OwotICAgICAgICBpbnQzMl90IGVuZEluZGV4IHsgMCB9OwotICAgICAgICBp
bnQzMl90IHNpemUoKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZW5kSW5k
ZXggLSBiZWdpbkluZGV4OwotICAgICAgICB9OworICAgICAgICBpbnQzMl90IHR5cGU7CisgICAg
ICAgIGludDMyX3Qgc2l6ZTsKKyAgICAgICAgSW50bE51bWJlckZvcm1hdEZpZWxkKGludDMyX3Qg
dHlwZSwgaW50MzJfdCBzaXplKQorICAgICAgICAgICAgOiB0eXBlKHR5cGUpCisgICAgICAgICAg
ICAsIHNpemUoc2l6ZSkKKyAgICAgICAgeyB9CiAgICAgfTsKIAogICAgIHN0YXRpYyBBU0NJSUxp
dGVyYWwgcGFydFR5cGVTdHJpbmcoVU51bWJlckZvcm1hdEZpZWxkcywgZG91YmxlKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>