<?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>141051</bug_id>
          
          <creation_ts>2015-01-29 14:41:15 -0800</creation_ts>
          <short_desc>Store MemoryCache&apos;s live decoded resources in a ListHashSet</short_desc>
          <delta_ts>2022-02-28 03:44:00 -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>Page Loading</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>141292</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>benjamin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>japhet</cc>
    
    <cc>kling</cc>
    
    <cc>koivisto</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1065350</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-01-29 14:41:15 -0800</bug_when>
    <thetext>Store MemoryCache&apos;s live decoded resources in a ListHashSet instead of a linked list. The frequent operations are:
1. Add items to one end
2. Remove items from the other end or anywhere in the container by value

Using a ListHashSet instead of a manual linked list results in *much* simpler code and is fast for all operations (faster than linked list even for removing an given element from the linked list given its value). The current implementation requires us to keep a lot of pointers up-to-date, which is error prone.

This is a first step towards simplifying the MemoryCache implementation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1065354</commentid>
    <comment_count>1</comment_count>
      <attachid>245653</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-01-29 14:48:45 -0800</bug_when>
    <thetext>Created attachment 245653
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1065524</commentid>
    <comment_count>2</comment_count>
      <attachid>245653</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2015-01-30 02:03:00 -0800</bug_when>
    <thetext>Comment on attachment 245653
Patch

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

&gt; Source/WebCore/loader/cache/MemoryCache.h:142
&gt; +    bool inLiveDecodedResourcesList(CachedResource* resource) const { return m_liveDecodedResources.contains(resource); }

It would be nicer to take a reference.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1065574</commentid>
    <comment_count>3</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-01-30 09:40:48 -0800</bug_when>
    <thetext>Committed r179402: &lt;http://trac.webkit.org/changeset/179402&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>245653</attachid>
            <date>2015-01-29 14:48:45 -0800</date>
            <delta_ts>2022-02-28 03:44:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-141051-20150129144850.patch</filename>
            <type>text/plain</type>
            <size>11711</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc5MzQ3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDg3ZjMwMWVkNTU1N2Fl
YjNiNThlYTQ1ZjQ0YmQ3OWRmZTBmMGVjMy4uYTJhYmE3NTliNzRhMjM0MDk4ODQzY2U0ZDM3Mzdm
NDBiY2MwMjAzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDM4IEBACiAyMDE1LTAxLTI5ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKKyAgICAgICAgU3RvcmUgTWVtb3J5Q2FjaGUn
cyBsaXZlIGRlY29kZWQgcmVzb3VyY2VzIGluIGEgTGlzdEhhc2hTZXQKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MTA1MQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFN0b3JlIE1lbW9yeUNhY2hlJ3MgbGl2
ZSBkZWNvZGVkIHJlc291cmNlcyBpbiBhIExpc3RIYXNoU2V0IGluc3RlYWQgb2YKKyAgICAgICAg
YSBsaW5rZWQgbGlzdC4gVGhlIGZyZXF1ZW50IG9wZXJhdGlvbnMgYXJlOgorICAgICAgICAxLiBB
ZGQgaXRlbXMgdG8gb25lIGVuZAorICAgICAgICAyLiBSZW1vdmUgaXRlbXMgZnJvbSB0aGUgb3Ro
ZXIgZW5kIG9yIGFueXdoZXJlIGluIHRoZSBjb250YWluZXIgYnkgdmFsdWUKKworICAgICAgICBV
c2luZyBhIExpc3RIYXNoU2V0IGluc3RlYWQgb2YgYSBtYW51YWwgbGlua2VkIGxpc3QgcmVzdWx0
cyBpbiAqbXVjaCoKKyAgICAgICAgc2ltcGxlciAvIHNob3J0ZXIgY29kZSBhbmQgaXMgZmFzdCBm
b3IgYWxsIG9wZXJhdGlvbnMgKGZhc3RlciB0aGFuCisgICAgICAgIGxpbmtlZCBsaXN0IGV2ZW4g
Zm9yIHJlbW92aW5nIGFuIGdpdmVuIGVsZW1lbnQgZnJvbSB0aGUgY29udGFpbmVyIGdpdmVuCisg
ICAgICAgIGl0cyB2YWx1ZSkuIFRoZSBwcmV2aW91cyBpbXBsZW1lbnRhdGlvbiByZXF1aXJlZCB1
cyB0byBrZWVwIGEgbG90IG9mCisgICAgICAgIHBvaW50ZXJzIHVwLXRvLWRhdGUsIHdoaWNoIHdh
cyBlcnJvciBwcm9uZS4KKworICAgICAgICBUaGlzIGlzIGEgZmlyc3Qgc3RlcCB0b3dhcmRzIHNp
bXBsaWZ5aW5nIHRoZSBNZW1vcnlDYWNoZSBpbXBsZW1lbnRhdGlvbi4KKworICAgICAgICAqIGxv
YWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRS
ZXNvdXJjZTo6Q2FjaGVkUmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3Vy
Y2U6OnNldERlY29kZWRTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjpk
aWRBY2Nlc3NEZWNvZGVkRGF0YSk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291
cmNlLmg6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6aW5MaXZlRGVjb2RlZFJl
c291cmNlc0xpc3QpOiBEZWxldGVkLgorICAgICAgICAqIGxvYWRlci9jYWNoZS9NZW1vcnlDYWNo
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlDYWNoZTo6cHJ1bmVMaXZlUmVzb3VyY2Vz
VG9TaXplKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeUNhY2hlOjpyZW1vdmVGcm9tTGl2ZURl
Y29kZWRSZXNvdXJjZXNMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeUNhY2hlOjppbnNl
cnRJbkxpdmVEZWNvZGVkUmVzb3VyY2VzTGlzdCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL01l
bW9yeUNhY2hlLmg6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlDYWNoZTo6aW5MaXZlRGVjb2Rl
ZFJlc291cmNlc0xpc3QpOgorCisyMDE1LTAxLTI5ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBs
ZS5jb20+CisKICAgICAgICAgQ2xlYW4gdXAgLyBtb2Rlcm5pemUgUGFnZUNhY2hlIGNsYXNzCiAg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDEwMDkKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKaW5kZXgg
MmViYjcwMDg2ZmYxYTNhNzI4MTk1MzVhZDZiZDkzOTJkMzc1MTRhNy4uMTFiYjU1MDU5M2JlZmE0
YzQ0NDFhZWE3MjlmYWFmZDdkMmZhOTc3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCkBAIC0xMjUsNyArMTI1LDYgQEAgQ2FjaGVkUmVzb3Vy
Y2U6OkNhY2hlZFJlc291cmNlKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgVHlwZSB0
eXBlLCBTZXNzaW8KICAgICAsIG1faGFuZGxlQ291bnQoMCkKICAgICAsIG1fcHJlbG9hZENvdW50
KDApCiAgICAgLCBtX3ByZWxvYWRSZXN1bHQoUHJlbG9hZE5vdFJlZmVyZW5jZWQpCi0gICAgLCBt
X2luTGl2ZURlY29kZWRSZXNvdXJjZXNMaXN0KGZhbHNlKQogICAgICwgbV9yZXF1ZXN0ZWRGcm9t
TmV0d29ya2luZ0xheWVyKGZhbHNlKQogICAgICwgbV9pbkNhY2hlKGZhbHNlKQogICAgICwgbV9s
b2FkaW5nKGZhbHNlKQpAQCAtMTM4LDggKzEzNyw2IEBAIENhY2hlZFJlc291cmNlOjpDYWNoZWRS
ZXNvdXJjZShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFR5cGUgdHlwZSwgU2Vzc2lv
CiAjZW5kaWYKICAgICAsIG1fbmV4dEluQWxsUmVzb3VyY2VzTGlzdCgwKQogICAgICwgbV9wcmV2
SW5BbGxSZXNvdXJjZXNMaXN0KDApCi0gICAgLCBtX25leHRJbkxpdmVSZXNvdXJjZXNMaXN0KDAp
Ci0gICAgLCBtX3ByZXZJbkxpdmVSZXNvdXJjZXNMaXN0KDApCiAgICAgLCBtX293bmluZ0NhY2hl
ZFJlc291cmNlTG9hZGVyKDApCiAgICAgLCBtX3Jlc291cmNlVG9SZXZhbGlkYXRlKDApCiAgICAg
LCBtX3Byb3h5UmVzb3VyY2UoMCkKQEAgLTUxNyw5ICs1MTQsMTAgQEAgdm9pZCBDYWNoZWRSZXNv
dXJjZTo6c2V0RGVjb2RlZFNpemUodW5zaWduZWQgc2l6ZSkKICAgICAgICAgLy8gdmlvbGF0aW9u
IG9mIHRoZSBpbnZhcmlhbnQgdGhhdCB0aGUgbGlzdCBpcyB0byBiZSBrZXB0IHNvcnRlZAogICAg
ICAgICAvLyBieSBhY2Nlc3MgdGltZS4gVGhlIHdlYWtlbmluZyBvZiB0aGUgaW52YXJpYW50IGRv
ZXMgbm90IHBvc2UKICAgICAgICAgLy8gYSBwcm9ibGVtLiBGb3IgbW9yZSBkZXRhaWxzIHBsZWFz
ZSBzZWU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMDIwOQotICAg
ICAgICBpZiAobV9kZWNvZGVkU2l6ZSAmJiAhbV9pbkxpdmVEZWNvZGVkUmVzb3VyY2VzTGlzdCAm
JiBoYXNDbGllbnRzKCkpCisgICAgICAgIGJvb2wgaW5MaXZlRGVjb2RlZFJlc291cmNlc0xpc3Qg
PSBtZW1vcnlDYWNoZSgpLmluTGl2ZURlY29kZWRSZXNvdXJjZXNMaXN0KHRoaXMpOworICAgICAg
ICBpZiAobV9kZWNvZGVkU2l6ZSAmJiAhaW5MaXZlRGVjb2RlZFJlc291cmNlc0xpc3QgJiYgaGFz
Q2xpZW50cygpKQogICAgICAgICAgICAgbWVtb3J5Q2FjaGUoKS5pbnNlcnRJbkxpdmVEZWNvZGVk
UmVzb3VyY2VzTGlzdCh0aGlzKTsKLSAgICAgICAgZWxzZSBpZiAoIW1fZGVjb2RlZFNpemUgJiYg
bV9pbkxpdmVEZWNvZGVkUmVzb3VyY2VzTGlzdCkKKyAgICAgICAgZWxzZSBpZiAoIW1fZGVjb2Rl
ZFNpemUgJiYgaW5MaXZlRGVjb2RlZFJlc291cmNlc0xpc3QpCiAgICAgICAgICAgICBtZW1vcnlD
YWNoZSgpLnJlbW92ZUZyb21MaXZlRGVjb2RlZFJlc291cmNlc0xpc3QodGhpcyk7CiAKICAgICAg
ICAgLy8gVXBkYXRlIHRoZSBjYWNoZSdzIHNpemUgdG90YWxzLgpAQCAtNTUyLDcgKzU1MCw3IEBA
IHZvaWQgQ2FjaGVkUmVzb3VyY2U6OmRpZEFjY2Vzc0RlY29kZWREYXRhKGRvdWJsZSB0aW1lU3Rh
bXApCiAgICAgbV9sYXN0RGVjb2RlZEFjY2Vzc1RpbWUgPSB0aW1lU3RhbXA7CiAgICAgCiAgICAg
aWYgKGluQ2FjaGUoKSkgewotICAgICAgICBpZiAobV9pbkxpdmVEZWNvZGVkUmVzb3VyY2VzTGlz
dCkgeworICAgICAgICBpZiAobWVtb3J5Q2FjaGUoKS5pbkxpdmVEZWNvZGVkUmVzb3VyY2VzTGlz
dCh0aGlzKSkgewogICAgICAgICAgICAgbWVtb3J5Q2FjaGUoKS5yZW1vdmVGcm9tTGl2ZURlY29k
ZWRSZXNvdXJjZXNMaXN0KHRoaXMpOwogICAgICAgICAgICAgbWVtb3J5Q2FjaGUoKS5pbnNlcnRJ
bkxpdmVEZWNvZGVkUmVzb3VyY2VzTGlzdCh0aGlzKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAppbmRleCA2NDhlNzQ1MTAzNjZjNGQ3
ODk3YjFkNTgxNWFkNTQ5ODJmMTQ3NTEyLi5lNzg0ZDFmNjFmOTZmNGVjOWFlNzA2MTk2ZTc2OTA0
MTA3MDRkMjFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
UmVzb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3Vy
Y2UuaApAQCAtMTg3LDggKzE4Nyw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEluQ2FjaGUoYm9v
bCBpbkNhY2hlKSB7IG1faW5DYWNoZSA9IGluQ2FjaGU7IH0KICAgICBib29sIGluQ2FjaGUoKSBj
b25zdCB7IHJldHVybiBtX2luQ2FjaGU7IH0KICAgICAKLSAgICBib29sIGluTGl2ZURlY29kZWRS
ZXNvdXJjZXNMaXN0KCkgeyByZXR1cm4gbV9pbkxpdmVEZWNvZGVkUmVzb3VyY2VzTGlzdDsgfQot
ICAgIAogICAgIHZvaWQgY2xlYXJMb2FkZXIoKTsKIAogICAgIFNoYXJlZEJ1ZmZlciogcmVzb3Vy
Y2VCdWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2RhdGEuZ2V0KCk7IH0KQEAgLTMwNiw3ICszMDQs
NiBAQCBwcml2YXRlOgogCiAgICAgdW5zaWduZWQgbV9wcmVsb2FkUmVzdWx0IDogMjsgLy8gUHJl
bG9hZFJlc3VsdAogCi0gICAgYm9vbCBtX2luTGl2ZURlY29kZWRSZXNvdXJjZXNMaXN0IDogMTsK
ICAgICBib29sIG1fcmVxdWVzdGVkRnJvbU5ldHdvcmtpbmdMYXllciA6IDE7CiAKICAgICBib29s
IG1faW5DYWNoZSA6IDE7CkBAIC0zMjQsOSArMzIxLDYgQEAgcHJpdmF0ZToKIAogICAgIENhY2hl
ZFJlc291cmNlKiBtX25leHRJbkFsbFJlc291cmNlc0xpc3Q7CiAgICAgQ2FjaGVkUmVzb3VyY2Uq
IG1fcHJldkluQWxsUmVzb3VyY2VzTGlzdDsKLSAgICAKLSAgICBDYWNoZWRSZXNvdXJjZSogbV9u
ZXh0SW5MaXZlUmVzb3VyY2VzTGlzdDsKLSAgICBDYWNoZWRSZXNvdXJjZSogbV9wcmV2SW5MaXZl
UmVzb3VyY2VzTGlzdDsKIAogICAgIENhY2hlZFJlc291cmNlTG9hZGVyKiBtX293bmluZ0NhY2hl
ZFJlc291cmNlTG9hZGVyOyAvLyBvbmx5IG5vbi1udWxsIGZvciByZXNvdXJjZXMgdGhhdCBhcmUg
bm90IGluIHRoZSBjYWNoZQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL01lbW9yeUNhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1v
cnlDYWNoZS5jcHAKaW5kZXggNWZhMDMyMzk3N2E4ODFiMzI5MmI1MGRkMWI3MzQxMGUyZGMyNDQ1
MS4uYTUwODA2YjA1ODZiOWNjNjAzNWQxYzc2YWUyYzIwZDY5YjRhZTM4MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuY3BwCkBAIC0zMDEsMTYgKzMwMSwxNCBA
QCB2b2lkIE1lbW9yeUNhY2hlOjpwcnVuZUxpdmVSZXNvdXJjZXNUb1NpemUodW5zaWduZWQgdGFy
Z2V0U2l6ZSwgYm9vbCBzaG91bGREZXN0cgogICAgICAgICBjdXJyZW50VGltZSA9IG1vbm90b25p
Y2FsbHlJbmNyZWFzaW5nVGltZSgpOwogICAgIAogICAgIC8vIERlc3Ryb3kgYW55IGRlY29kZWQg
ZGF0YSBpbiBsaXZlIG9iamVjdHMgdGhhdCB3ZSBjYW4uCi0gICAgLy8gU3RhcnQgZnJvbSB0aGUg
dGFpbCwgc2luY2UgdGhpcyBpcyB0aGUgbGVhc3QgcmVjZW50bHkgYWNjZXNzZWQgb2YgdGhlIG9i
amVjdHMuCisgICAgLy8gU3RhcnQgZnJvbSB0aGUgaGVhZCwgc2luY2UgdGhpcyBpcyB0aGUgbGVh
c3QgcmVjZW50bHkgYWNjZXNzZWQgb2YgdGhlIG9iamVjdHMuCiAKICAgICAvLyBUaGUgbGlzdCBt
aWdodCBub3QgYmUgc29ydGVkIGJ5IHRoZSBtX2xhc3REZWNvZGVkQWNjZXNzVGltZS4gVGhlIGlt
cGFjdAogICAgIC8vIG9mIHRoaXMgd2Vha2VyIGludmFyaWFudCBpcyBtaW5vciBhcyB0aGUgYmVs
b3cgaWYgc3RhdGVtZW50IHRvIGNoZWNrIHRoZQogICAgIC8vIGVsYXBzZWRUaW1lIHdpbGwgZXZh
bHVhdGUgdG8gZmFsc2UgYXMgdGhlIGN1cnJlbnRUaW1lIHdpbGwgYmUgYSBsb3QKICAgICAvLyBn
cmVhdGVyIHRoYW4gdGhlIGN1cnJlbnQtPm1fbGFzdERlY29kZWRBY2Nlc3NUaW1lLgogICAgIC8v
IEZvciBtb3JlIGRldGFpbHMgc2VlOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MzAyMDkKLSAgICBDYWNoZWRSZXNvdXJjZSogY3VycmVudCA9IG1fbGl2ZURlY29kZWRS
ZXNvdXJjZXMubV90YWlsOwotICAgIHdoaWxlIChjdXJyZW50KSB7Ci0gICAgICAgIENhY2hlZFJl
c291cmNlKiBwcmV2ID0gY3VycmVudC0+bV9wcmV2SW5MaXZlUmVzb3VyY2VzTGlzdDsKKyAgICBm
b3IgKGF1dG8qIGN1cnJlbnQgOiBtX2xpdmVEZWNvZGVkUmVzb3VyY2VzKSB7CiAgICAgICAgIEFT
U0VSVChjdXJyZW50LT5oYXNDbGllbnRzKCkpOwogICAgICAgICBpZiAoY3VycmVudC0+aXNMb2Fk
ZWQoKSAmJiBjdXJyZW50LT5kZWNvZGVkU2l6ZSgpKSB7CiAgICAgICAgICAgICAvLyBDaGVjayB0
byBzZWUgaWYgdGhlIHJlbWFpbmluZyByZXNvdXJjZXMgYXJlIHRvbyBuZXcgdG8gcHJ1bmUuCkBA
IC0zMTgsMTAgKzMxNiw4IEBAIHZvaWQgTWVtb3J5Q2FjaGU6OnBydW5lTGl2ZVJlc291cmNlc1Rv
U2l6ZSh1bnNpZ25lZCB0YXJnZXRTaXplLCBib29sIHNob3VsZERlc3RyCiAgICAgICAgICAgICBp
ZiAoIXNob3VsZERlc3Ryb3lEZWNvZGVkRGF0YUZvckFsbExpdmVSZXNvdXJjZXMgJiYgZWxhcHNl
ZFRpbWUgPCBjTWluRGVsYXlCZWZvcmVMaXZlRGVjb2RlZFBydW5lKQogICAgICAgICAgICAgICAg
IHJldHVybjsKIAotICAgICAgICAgICAgaWYgKGN1cnJlbnQtPmRlY29kZWREYXRhSXNQdXJnZWFi
bGUoKSkgewotICAgICAgICAgICAgICAgIGN1cnJlbnQgPSBwcmV2OworICAgICAgICAgICAgaWYg
KGN1cnJlbnQtPmRlY29kZWREYXRhSXNQdXJnZWFibGUoKSkKICAgICAgICAgICAgICAgICBjb250
aW51ZTsKLSAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgLy8gRGVzdHJveSBvdXIgZGVjb2Rl
ZCBkYXRhLiBUaGlzIHdpbGwgcmVtb3ZlIHVzIGZyb20gCiAgICAgICAgICAgICAvLyBtX2xpdmVE
ZWNvZGVkUmVzb3VyY2VzLCBhbmQgcG9zc2libHkgbW92ZSB1cyB0byBhIGRpZmZlcmVudCBMUlUg
CkBAIC0zMzEsNyArMzI3LDYgQEAgdm9pZCBNZW1vcnlDYWNoZTo6cHJ1bmVMaXZlUmVzb3VyY2Vz
VG9TaXplKHVuc2lnbmVkIHRhcmdldFNpemUsIGJvb2wgc2hvdWxkRGVzdHIKICAgICAgICAgICAg
IGlmICh0YXJnZXRTaXplICYmIG1fbGl2ZVNpemUgPD0gdGFyZ2V0U2l6ZSkKICAgICAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgY3VycmVudCA9IHByZXY7CiAgICAgfQog
fQogCkBAIC02MjAsNjkgKzYxNSwxNCBAQCB2b2lkIE1lbW9yeUNhY2hlOjpnZXRPcmlnaW5zV2l0
aENhY2hlKFNlY3VyaXR5T3JpZ2luU2V0JiBvcmlnaW5zKQogCiB2b2lkIE1lbW9yeUNhY2hlOjpy
ZW1vdmVGcm9tTGl2ZURlY29kZWRSZXNvdXJjZXNMaXN0KENhY2hlZFJlc291cmNlKiByZXNvdXJj
ZSkKIHsKLSAgICAvLyBJZiB3ZSd2ZSBuZXZlciBiZWVuIGFjY2Vzc2VkLCB0aGVuIHdlJ3JlIGJy
YW5kIG5ldyBhbmQgbm90IGluIGFueSBsaXN0LgotICAgIGlmICghcmVzb3VyY2UtPm1faW5MaXZl
RGVjb2RlZFJlc291cmNlc0xpc3QpCi0gICAgICAgIHJldHVybjsKLSAgICByZXNvdXJjZS0+bV9p
bkxpdmVEZWNvZGVkUmVzb3VyY2VzTGlzdCA9IGZhbHNlOwotCi0jaWYgIUFTU0VSVF9ESVNBQkxF
RAotICAgIC8vIFZlcmlmeSB0aGF0IHdlIGFyZSBpbiBmYWN0IGluIHRoaXMgbGlzdC4KLSAgICBi
b29sIGZvdW5kID0gZmFsc2U7Ci0gICAgZm9yIChDYWNoZWRSZXNvdXJjZSogY3VycmVudCA9IG1f
bGl2ZURlY29kZWRSZXNvdXJjZXMubV9oZWFkOyBjdXJyZW50OyBjdXJyZW50ID0gY3VycmVudC0+
bV9uZXh0SW5MaXZlUmVzb3VyY2VzTGlzdCkgewotICAgICAgICBpZiAoY3VycmVudCA9PSByZXNv
dXJjZSkgewotICAgICAgICAgICAgZm91bmQgPSB0cnVlOwotICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIH0KLSAgICB9Ci0gICAgQVNTRVJUKGZvdW5kKTsKLSNlbmRpZgotCi0gICAgQ2FjaGVk
UmVzb3VyY2UqIG5leHQgPSByZXNvdXJjZS0+bV9uZXh0SW5MaXZlUmVzb3VyY2VzTGlzdDsKLSAg
ICBDYWNoZWRSZXNvdXJjZSogcHJldiA9IHJlc291cmNlLT5tX3ByZXZJbkxpdmVSZXNvdXJjZXNM
aXN0OwotICAgIAotICAgIGlmIChuZXh0ID09IDAgJiYgcHJldiA9PSAwICYmIG1fbGl2ZURlY29k
ZWRSZXNvdXJjZXMubV9oZWFkICE9IHJlc291cmNlKQotICAgICAgICByZXR1cm47Ci0gICAgCi0g
ICAgcmVzb3VyY2UtPm1fbmV4dEluTGl2ZVJlc291cmNlc0xpc3QgPSAwOwotICAgIHJlc291cmNl
LT5tX3ByZXZJbkxpdmVSZXNvdXJjZXNMaXN0ID0gMDsKLSAgICAKLSAgICBpZiAobmV4dCkKLSAg
ICAgICAgbmV4dC0+bV9wcmV2SW5MaXZlUmVzb3VyY2VzTGlzdCA9IHByZXY7Ci0gICAgZWxzZSBp
ZiAobV9saXZlRGVjb2RlZFJlc291cmNlcy5tX3RhaWwgPT0gcmVzb3VyY2UpCi0gICAgICAgIG1f
bGl2ZURlY29kZWRSZXNvdXJjZXMubV90YWlsID0gcHJldjsKLQotICAgIGlmIChwcmV2KQotICAg
ICAgICBwcmV2LT5tX25leHRJbkxpdmVSZXNvdXJjZXNMaXN0ID0gbmV4dDsKLSAgICBlbHNlIGlm
IChtX2xpdmVEZWNvZGVkUmVzb3VyY2VzLm1faGVhZCA9PSByZXNvdXJjZSkKLSAgICAgICAgbV9s
aXZlRGVjb2RlZFJlc291cmNlcy5tX2hlYWQgPSBuZXh0OworICAgIG1fbGl2ZURlY29kZWRSZXNv
dXJjZXMucmVtb3ZlKHJlc291cmNlKTsKIH0KIAogdm9pZCBNZW1vcnlDYWNoZTo6aW5zZXJ0SW5M
aXZlRGVjb2RlZFJlc291cmNlc0xpc3QoQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlKQogewogICAg
IC8vIE1ha2Ugc3VyZSB3ZSBhcmVuJ3QgaW4gdGhlIGxpc3QgYWxyZWFkeS4KLSAgICBBU1NFUlQo
IXJlc291cmNlLT5tX25leHRJbkxpdmVSZXNvdXJjZXNMaXN0ICYmICFyZXNvdXJjZS0+bV9wcmV2
SW5MaXZlUmVzb3VyY2VzTGlzdCAmJiAhcmVzb3VyY2UtPm1faW5MaXZlRGVjb2RlZFJlc291cmNl
c0xpc3QpOwotICAgIHJlc291cmNlLT5tX2luTGl2ZURlY29kZWRSZXNvdXJjZXNMaXN0ID0gdHJ1
ZTsKLQotICAgIHJlc291cmNlLT5tX25leHRJbkxpdmVSZXNvdXJjZXNMaXN0ID0gbV9saXZlRGVj
b2RlZFJlc291cmNlcy5tX2hlYWQ7Ci0gICAgaWYgKG1fbGl2ZURlY29kZWRSZXNvdXJjZXMubV9o
ZWFkKQotICAgICAgICBtX2xpdmVEZWNvZGVkUmVzb3VyY2VzLm1faGVhZC0+bV9wcmV2SW5MaXZl
UmVzb3VyY2VzTGlzdCA9IHJlc291cmNlOwotICAgIG1fbGl2ZURlY29kZWRSZXNvdXJjZXMubV9o
ZWFkID0gcmVzb3VyY2U7Ci0gICAgCi0gICAgaWYgKCFyZXNvdXJjZS0+bV9uZXh0SW5MaXZlUmVz
b3VyY2VzTGlzdCkKLSAgICAgICAgbV9saXZlRGVjb2RlZFJlc291cmNlcy5tX3RhaWwgPSByZXNv
dXJjZTsKLSAgICAgICAgCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAotICAgIC8vIFZlcmlmeSB0aGF0
IHdlIGFyZSBpbiBub3cgaW4gdGhlIGxpc3QgbGlrZSB3ZSBzaG91bGQgYmUuCi0gICAgYm9vbCBm
b3VuZCA9IGZhbHNlOwotICAgIGZvciAoQ2FjaGVkUmVzb3VyY2UqIGN1cnJlbnQgPSBtX2xpdmVE
ZWNvZGVkUmVzb3VyY2VzLm1faGVhZDsgY3VycmVudDsgY3VycmVudCA9IGN1cnJlbnQtPm1fbmV4
dEluTGl2ZVJlc291cmNlc0xpc3QpIHsKLSAgICAgICAgaWYgKGN1cnJlbnQgPT0gcmVzb3VyY2Up
IHsKLSAgICAgICAgICAgIGZvdW5kID0gdHJ1ZTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICB9Ci0gICAgfQotICAgIEFTU0VSVChmb3VuZCk7Ci0jZW5kaWYKLQorICAgIEFTU0VSVCghbV9s
aXZlRGVjb2RlZFJlc291cmNlcy5jb250YWlucyhyZXNvdXJjZSkpOworICAgIG1fbGl2ZURlY29k
ZWRSZXNvdXJjZXMuYWRkKHJlc291cmNlKTsKIH0KIAogdm9pZCBNZW1vcnlDYWNoZTo6YWRkVG9M
aXZlUmVzb3VyY2VzU2l6ZShDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuaCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5oCmluZGV4IDY2MTU3YzgzYWE0YjkyYzkwNjdiM2Vj
OWEwNTRhOTQ5MzE4ZWQzMTIuLmVmOWU0NTgxODZiN2ExMGVlN2MyMjc4NGZjMTdhNTdmNzE4ODY4
NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5oCkBAIC0zMSw2
ICszMSw3IEBACiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1h
cC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL0xpc3RIYXNoU2V0
Lmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KQEAgLTEzOCw2ICsxMzksNyBAQCBw
dWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgU3RhdGlzdGljcyBnZXRTdGF0aXN0aWNzKCk7CiAg
ICAgCiAgICAgdm9pZCByZXNvdXJjZUFjY2Vzc2VkKENhY2hlZFJlc291cmNlKik7CisgICAgYm9v
bCBpbkxpdmVEZWNvZGVkUmVzb3VyY2VzTGlzdChDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UpIGNv
bnN0IHsgcmV0dXJuIG1fbGl2ZURlY29kZWRSZXNvdXJjZXMuY29udGFpbnMocmVzb3VyY2UpOyB9
CiAKICAgICB0eXBlZGVmIEhhc2hTZXQ8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4gU2VjdXJpdHlP
cmlnaW5TZXQ7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZW1vdmVSZXNvdXJjZXNXaXRoT3Jp
Z2luKFNlY3VyaXR5T3JpZ2luKik7CkBAIC0yMDMsNyArMjA1LDcgQEAgcHJpdmF0ZToKICAgICBW
ZWN0b3I8TFJVTGlzdCwgMzI+IG1fYWxsUmVzb3VyY2VzOwogICAgIAogICAgIC8vIExpc3QganVz
dCBmb3IgbGl2ZSByZXNvdXJjZXMgd2l0aCBkZWNvZGVkIGRhdGEuICBBY2Nlc3MgdG8gdGhpcyBs
aXN0IGlzIGJhc2VkIG9mZiBvZiBwYWludGluZyB0aGUgcmVzb3VyY2UuCi0gICAgTFJVTGlzdCBt
X2xpdmVEZWNvZGVkUmVzb3VyY2VzOworICAgIExpc3RIYXNoU2V0PENhY2hlZFJlc291cmNlKj4g
bV9saXZlRGVjb2RlZFJlc291cmNlczsKICAgICAKICAgICAvLyBBIFVSTC1iYXNlZCBtYXAgb2Yg
YWxsIHJlc291cmNlcyB0aGF0IGFyZSBpbiB0aGUgY2FjaGUgKGluY2x1ZGluZyB0aGUgZnJlc2hl
c3QgdmVyc2lvbiBvZiBvYmplY3RzIHRoYXQgYXJlIGN1cnJlbnRseSBiZWluZyAKICAgICAvLyBy
ZWZlcmVuY2VkIGJ5IGEgV2ViIHBhZ2UpLgo=
</data>
<flag name="review"
          id="270605"
          type_id="1"
          status="+"
          setter="koivisto"
    />
          </attachment>
      

    </bug>

</bugzilla>