<?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>138752</bug_id>
          
          <creation_ts>2014-11-14 12:27:34 -0800</creation_ts>
          <short_desc>[TexMap] Sprinkle range-based for-loops where still possible</short_desc>
          <delta_ts>2014-12-17 03:44:05 -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>New Bugs</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Zan Dobersek">zan</reporter>
          <assigned_to name="Zan Dobersek">zan</assigned_to>
          <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>luiz</cc>
    
    <cc>mrobinson</cc>
    
    <cc>noam</cc>
    
    <cc>svillar</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1048837</commentid>
    <comment_count>0</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2014-11-14 12:27:34 -0800</bug_when>
    <thetext>[TexMap] Sprinkle range-based for-loops where still possible</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1048839</commentid>
    <comment_count>1</comment_count>
      <attachid>241614</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2014-11-14 12:32:30 -0800</bug_when>
    <thetext>Created attachment 241614
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1049227</commentid>
    <comment_count>2</comment_count>
      <attachid>241614</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-11-17 10:07:14 -0800</bug_when>
    <thetext>Comment on attachment 241614
Patch

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

&gt; Source/WebCore/platform/graphics/texmap/TextureMapperGL.cpp:97
&gt; +            for (auto it = glContextDataMap().begin(), end = glContextDataMap().end(); it != end; ++it) {

nit: We could maybe use std::find_if() and a lambda function. e.g.
auto it = std::find_if(glContextDataMap().begin(), glContextDataMap().end(), [this] (const auto&amp; item) { return item.value() == this; });
ASSERT(it != glContextDataMap().end());
glContextDataMap().remove(it);

&gt; Source/WebCore/platform/graphics/texmap/TextureMapperTiledBackingStore.cpp:134
&gt; +        if (m_tiles.size() &lt;= TileEraseThreshold)

Slight difference in behavior here. It is now possible you remove one tile even though m_tiles.size() &lt;= TileEraseThreshold. We likely want this check before removing the title.

&gt; Source/WebCore/platform/graphics/texmap/TextureMapperTiledBackingStore.cpp:157
&gt;              return texture;

nit: .release()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1056305</commentid>
    <comment_count>3</comment_count>
      <attachid>241614</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2014-12-17 03:35:43 -0800</bug_when>
    <thetext>Comment on attachment 241614
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/texmap/TextureMapperGL.cpp:97
&gt;&gt; +            for (auto it = glContextDataMap().begin(), end = glContextDataMap().end(); it != end; ++it) {
&gt; 
&gt; nit: We could maybe use std::find_if() and a lambda function. e.g.
&gt; auto it = std::find_if(glContextDataMap().begin(), glContextDataMap().end(), [this] (const auto&amp; item) { return item.value() == this; });
&gt; ASSERT(it != glContextDataMap().end());
&gt; glContextDataMap().remove(it);

That would be ideal, but it&apos;s not possible at the moment because of missing std::iterator_traits specialization for HashTable iterator adapters.
Generic lambdas are also only available in C++14.

&gt;&gt; Source/WebCore/platform/graphics/texmap/TextureMapperTiledBackingStore.cpp:134
&gt;&gt; +        if (m_tiles.size() &lt;= TileEraseThreshold)
&gt; 
&gt; Slight difference in behavior here. It is now possible you remove one tile even though m_tiles.size() &lt;= TileEraseThreshold. We likely want this check before removing the title.

Yeah, thanks for spotting this.

&gt;&gt; Source/WebCore/platform/graphics/texmap/TextureMapperTiledBackingStore.cpp:157
&gt;&gt;              return texture;
&gt; 
&gt; nit: .release()

Not necessary, tile.texture() actually returns PassRefPtr&lt;&gt;. The previous code was not optimal.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1056306</commentid>
    <comment_count>4</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2014-12-17 03:44:05 -0800</bug_when>
    <thetext>Committed r177442: &lt;http://trac.webkit.org/changeset/177442&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>241614</attachid>
            <date>2014-11-14 12:32:30 -0800</date>
            <delta_ts>2014-11-17 10:07:14 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-138752-20141114123333.patch</filename>
            <type>text/plain</type>
            <size>9850</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc2MTIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGUzNDc5MjVlY2M4ODg5
ZGFlNzhjNTgwNDcyZTAzOTIyMDQzNGY3My4uMzgzMGI1Mzc5ZWViNjI3YzM2MDI3YWZlYTU3Njli
MjM0YTZkZWIyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDE0LTExLTE0ICBaYW4g
RG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBbVGV4TWFwXSBTcHJp
bmtsZSByYW5nZS1iYXNlZCBmb3ItbG9vcHMgd2hlcmUgc3RpbGwgcG9zc2libGUKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzODc1MgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFwcGx5IHJhbmdlLWJhc2Vk
IGZvci1sb29wcyB3aGVyZSBwb3NzaWJsZSBpbiB0aGUgVGV4dHVyZU1hcHBlciwKKyAgICAgICAg
VGV4dHVyZU1hcHBlckdMIGFuZCBUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmUgY2xhc3Nl
cy4KKworICAgICAgICBBbHNvIHByZXR0aWZ5IHRoZSBsb29wIGluIFNoYXJlZEdMRGF0YSBkZXN0
cnVjdG9yIGFuZCByZXR1cm4KKyAgICAgICAgbnVsbHB0ciBpbnN0ZWFkIG9mIGV4cGxpY2l0bHkg
Y29uc3RydWN0aW5nIHRoZSBlbXB0eSBQYXNzUmVmUHRyCisgICAgICAgIG9iamVjdCBpbiBUZXh0
dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmU6OnRleHR1cmUoKS4KKworICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkJpdG1hcFRleHR1cmVQb29sOjphY3F1aXJlVGV4dHVyZSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpU
ZXh0dXJlTWFwcGVyR0xEYXRhOjpTaGFyZWRHTERhdGE6On5TaGFyZWRHTERhdGEpOgorICAgICAg
ICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckdMRGF0YTo6flRleHR1cmVNYXBwZXJHTERhdGEpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyVGlsZWRCYWNr
aW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlclRpbGVkQmFja2lu
Z1N0b3JlOjpwYWludFRvVGV4dHVyZU1hcHBlcik6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJl
TWFwcGVyVGlsZWRCYWNraW5nU3RvcmU6OmRyYXdCb3JkZXIpOgorICAgICAgICAoV2ViQ29yZTo6
VGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlOjpkcmF3UmVwYWludENvdW50ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlOjpjcmVhdGVPckRl
c3Ryb3lUaWxlc0lmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJUaWxl
ZEJhY2tpbmdTdG9yZTo6dXBkYXRlQ29udGVudHMpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVy
ZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlOjp0ZXh0dXJlKToKKwogMjAxNC0xMS0xNCAgQ2FybG9z
IEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW1NPVVBdIFVz
ZSBHTWFpbkxvb3BTb3VyY2UgZm9yIHJlcXVlc3QgdGltZW91dCBpbiBSZXNvdXJjZUhhbmRsZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1
cmVNYXBwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1Rl
eHR1cmVNYXBwZXIuY3BwCmluZGV4IDdlMTIxYTIwZDk2M2VjODViZGM0ZTMxOTkyNzI3OTlkNDQy
MWI1NzcuLmViN2YyMGQ1NmFmZjQwODY4MzI3MWNkMmEyODUwNWFlNmZlNGMwOTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVy
ZU1hcHBlci5jcHAKQEAgLTk4LDE1ICs5OCwxMyBAQCB2b2lkIEJpdG1hcFRleHR1cmVQb29sOjpy
ZWxlYXNlVW51c2VkVGV4dHVyZXNUaW1lckZpcmVkKFRpbWVyKikKIFBhc3NSZWZQdHI8Qml0bWFw
VGV4dHVyZT4gQml0bWFwVGV4dHVyZVBvb2w6OmFjcXVpcmVUZXh0dXJlKGNvbnN0IEludFNpemUm
IHNpemUsIFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIpCiB7CiAgICAgQml0bWFwVGV4dHVy
ZVBvb2xFbnRyeSogc2VsZWN0ZWRFbnRyeSA9IDA7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBtX3RleHR1cmVzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIEJpdG1hcFRleHR1cmVQb29sRW50
cnkqIGVudHJ5ID0gJm1fdGV4dHVyZXNbaV07Ci0KKyAgICBmb3IgKGF1dG8mIGVudHJ5IDogbV90
ZXh0dXJlcykgewogICAgICAgICAvLyBJZiB0aGUgc3VyZmFjZSBoYXMgb25seSBvbmUgcmVmZXJl
bmNlICh0aGUgb25lIGluIG1fdGV4dHVyZXMpLCB3ZSBjYW4gc2FmZWx5IHJldXNlIGl0LgotICAg
ICAgICBpZiAoZW50cnktPm1fdGV4dHVyZS0+cmVmQ291bnQoKSA+IDEpCisgICAgICAgIGlmIChl
bnRyeS5tX3RleHR1cmUtPnJlZkNvdW50KCkgPiAxKQogICAgICAgICAgICAgY29udGludWU7CiAK
LSAgICAgICAgaWYgKGVudHJ5LT5tX3RleHR1cmUtPmNhblJldXNlV2l0aChzaXplKSkgewotICAg
ICAgICAgICAgc2VsZWN0ZWRFbnRyeSA9IGVudHJ5OworICAgICAgICBpZiAoZW50cnkubV90ZXh0
dXJlLT5jYW5SZXVzZVdpdGgoc2l6ZSkpIHsKKyAgICAgICAgICAgIHNlbGVjdGVkRW50cnkgPSAm
ZW50cnk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXJHTC5jcHAKaW5kZXggN2UzNTc4OWRiMGRmMTYxZmVkZTZkODRlMjYyYzRjMmI1YTMxMzI1NS4u
MTE1NGY0ZWUxZDhjMzIzNjMyMDFiODJlZWFiMjQ4NjE2ZTk0MmE4YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXJHTC5jcHAKQEAgLTk0LDE1ICs5NCwxNCBAQCBwdWJsaWM6CiAKICAgICAgICAgflNoYXJlZEdM
RGF0YSgpCiAgICAgICAgIHsKLSAgICAgICAgICAgIEdMQ29udGV4dERhdGFNYXA6OmNvbnN0X2l0
ZXJhdG9yIGVuZCA9IGdsQ29udGV4dERhdGFNYXAoKS5lbmQoKTsKLSAgICAgICAgICAgIEdMQ29u
dGV4dERhdGFNYXA6Oml0ZXJhdG9yIGl0OwotICAgICAgICAgICAgZm9yIChpdCA9IGdsQ29udGV4
dERhdGFNYXAoKS5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgICAgICAgICBp
ZiAoaXQtPnZhbHVlID09IHRoaXMpCi0gICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgZm9yIChhdXRvIGl0ID0gZ2xDb250ZXh0RGF0YU1hcCgpLmJlZ2luKCksIGVuZCA9IGds
Q29udGV4dERhdGFNYXAoKS5lbmQoKTsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAgICAgICAgICAg
ICAgaWYgKGl0LT52YWx1ZSA9PSB0aGlzKSB7CisgICAgICAgICAgICAgICAgICAgIGdsQ29udGV4
dERhdGFNYXAoKS5yZW1vdmUoaXQpOworICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBBU1NFUlQoaXQgIT0g
ZW5kKTsKLSAgICAgICAgICAgIGdsQ29udGV4dERhdGFNYXAoKS5yZW1vdmUoaXQpOworICAgICAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIH0KICAgICB9OwogCkBAIC0xNTks
OSArMTU4LDggQEAgUGxhdGZvcm0zRE9iamVjdCBUZXh0dXJlTWFwcGVyR0xEYXRhOjpnZXRTdGF0
aWNWQk8oR0MzRGVudW0gdGFyZ2V0LCBHQzNEc2l6ZWlwdHIKIAogVGV4dHVyZU1hcHBlckdMRGF0
YTo6flRleHR1cmVNYXBwZXJHTERhdGEoKQogewotICAgIEhhc2hNYXA8Y29uc3Qgdm9pZCosIFBs
YXRmb3JtM0RPYmplY3Q+OjppdGVyYXRvciBlbmQgPSB2Ym9zLmVuZCgpOwotICAgIGZvciAoSGFz
aE1hcDxjb25zdCB2b2lkKiwgUGxhdGZvcm0zRE9iamVjdD46Oml0ZXJhdG9yIGl0ID0gdmJvcy5i
ZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCi0gICAgICAgIGNvbnRleHQtPmRlbGV0ZUJ1ZmZlcihp
dC0+dmFsdWUpOworICAgIGZvciAoYXV0byYgZW50cnkgOiB2Ym9zKQorICAgICAgICBjb250ZXh0
LT5kZWxldGVCdWZmZXIoZW50cnkudmFsdWUpOwogfQogCiB2b2lkIFRleHR1cmVNYXBwZXJHTDo6
Q2xpcFN0YWNrOjpyZXNldChjb25zdCBJbnRSZWN0JiByZWN0LCBUZXh0dXJlTWFwcGVyR0w6OkNs
aXBTdGFjazo6WUF4aXNNb2RlIG1vZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyVGls
ZWRCYWNraW5nU3RvcmUuY3BwCmluZGV4IDYwY2FjMjcwNjFhYWMzNzMyNzI2NTc1MWNiYjE0MTUw
MmQ2MjQ2OTAuLjQ1M2VmMWRjYTllNjZkNGQ2NmU2OGUxYjNlZGJjMjc1YTdjMzczNDggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVyVGlsZWRCYWNraW5nU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmUuY3BwCkBAIC01MSwy
MiArNTEsMjIgQEAgdm9pZCBUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmU6OnBhaW50VG9U
ZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqIHRleHR1cmUKIHsKICAgICB1cGRhdGVDb250ZW50
c0Zyb21JbWFnZUlmTmVlZGVkKHRleHR1cmVNYXBwZXIpOwogICAgIFRyYW5zZm9ybWF0aW9uTWF0
cml4IGFkanVzdGVkVHJhbnNmb3JtID0gdHJhbnNmb3JtICogYWRqdXN0ZWRUcmFuc2Zvcm1Gb3JS
ZWN0KHRhcmdldFJlY3QpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV90aWxlcy5zaXpl
KCk7ICsraSkKLSAgICAgICAgbV90aWxlc1tpXS5wYWludCh0ZXh0dXJlTWFwcGVyLCBhZGp1c3Rl
ZFRyYW5zZm9ybSwgb3BhY2l0eSwgY2FsY3VsYXRlRXhwb3NlZFRpbGVFZGdlcyhyZWN0KCksIG1f
dGlsZXNbaV0ucmVjdCgpKSk7CisgICAgZm9yIChhdXRvJiB0aWxlIDogbV90aWxlcykKKyAgICAg
ICAgdGlsZS5wYWludCh0ZXh0dXJlTWFwcGVyLCBhZGp1c3RlZFRyYW5zZm9ybSwgb3BhY2l0eSwg
Y2FsY3VsYXRlRXhwb3NlZFRpbGVFZGdlcyhyZWN0KCksIHRpbGUucmVjdCgpKSk7CiB9CiAKIHZv
aWQgVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlOjpkcmF3Qm9yZGVyKFRleHR1cmVNYXBw
ZXIqIHRleHR1cmVNYXBwZXIsIGNvbnN0IENvbG9yJiBib3JkZXJDb2xvciwgZmxvYXQgYm9yZGVy
V2lkdGgsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25N
YXRyaXgmIHRyYW5zZm9ybSkKIHsKICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBhZGp1c3RlZFRy
YW5zZm9ybSA9IHRyYW5zZm9ybSAqIGFkanVzdGVkVHJhbnNmb3JtRm9yUmVjdCh0YXJnZXRSZWN0
KTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fdGlsZXMuc2l6ZSgpOyArK2kpCi0gICAg
ICAgIHRleHR1cmVNYXBwZXItPmRyYXdCb3JkZXIoYm9yZGVyQ29sb3IsIGJvcmRlcldpZHRoLCBt
X3RpbGVzW2ldLnJlY3QoKSwgYWRqdXN0ZWRUcmFuc2Zvcm0pOworICAgIGZvciAoYXV0byYgdGls
ZSA6IG1fdGlsZXMpCisgICAgICAgIHRleHR1cmVNYXBwZXItPmRyYXdCb3JkZXIoYm9yZGVyQ29s
b3IsIGJvcmRlcldpZHRoLCB0aWxlLnJlY3QoKSwgYWRqdXN0ZWRUcmFuc2Zvcm0pOwogfQogCiB2
b2lkIFRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZTo6ZHJhd1JlcGFpbnRDb3VudGVyKFRl
eHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIsIGludCByZXBhaW50Q291bnQsIGNvbnN0IENvbG9y
JiBib3JkZXJDb2xvciwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtKQogewogICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGFk
anVzdGVkVHJhbnNmb3JtID0gdHJhbnNmb3JtICogYWRqdXN0ZWRUcmFuc2Zvcm1Gb3JSZWN0KHRh
cmdldFJlY3QpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV90aWxlcy5zaXplKCk7ICsr
aSkKLSAgICAgICAgdGV4dHVyZU1hcHBlci0+ZHJhd051bWJlcihyZXBhaW50Q291bnQsIGJvcmRl
ckNvbG9yLCBtX3RpbGVzW2ldLnJlY3QoKS5sb2NhdGlvbigpLCBhZGp1c3RlZFRyYW5zZm9ybSk7
CisgICAgZm9yIChhdXRvJiB0aWxlIDogbV90aWxlcykKKyAgICAgICAgdGV4dHVyZU1hcHBlci0+
ZHJhd051bWJlcihyZXBhaW50Q291bnQsIGJvcmRlckNvbG9yLCB0aWxlLnJlY3QoKS5sb2NhdGlv
bigpLCBhZGp1c3RlZFRyYW5zZm9ybSk7CiB9CiAKIHZvaWQgVGV4dHVyZU1hcHBlclRpbGVkQmFj
a2luZ1N0b3JlOjpjcmVhdGVPckRlc3Ryb3lUaWxlc0lmTmVlZGVkKGNvbnN0IEZsb2F0U2l6ZSYg
c2l6ZSwgY29uc3QgSW50U2l6ZSYgdGlsZVNpemUsIGJvb2wgaGFzQWxwaGEpCkBAIC0xMTIsNTAg
KzExMiw1MiBAQCB2b2lkIFRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZTo6Y3JlYXRlT3JE
ZXN0cm95VGlsZXNJZk5lZWRlZChjb25zdCBGbG9hdFNpegogICAgIH0KIAogICAgIC8vIFJlY3lj
bGUgcmVtb3ZhYmxlIHRpbGVzIHRvIGJlIHVzZWQgZm9yIG5ld2x5IHJlcXVlc3RlZCB0aWxlcy4K
LSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHRpbGVSZWN0c1RvQWRkLnNpemUoKTsgKytpKSB7
CisgICAgZm9yIChhdXRvJiByZWN0IDogdGlsZVJlY3RzVG9BZGQpIHsKICAgICAgICAgaWYgKCF0
aWxlSW5kaWNlc1RvUmVtb3ZlLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgLy8gV2UgcmVjeWNs
ZSBhbiBleGlzdGluZyB0aWxlIGZvciB1c2FnZSB3aXRoIGEgbmV3IHRpbGUgcmVjdC4KICAgICAg
ICAgICAgIFRleHR1cmVNYXBwZXJUaWxlJiB0aWxlID0gbV90aWxlc1t0aWxlSW5kaWNlc1RvUmVt
b3ZlLmxhc3QoKV07CiAgICAgICAgICAgICB0aWxlSW5kaWNlc1RvUmVtb3ZlLnJlbW92ZUxhc3Qo
KTsKLSAgICAgICAgICAgIHRpbGUuc2V0UmVjdCh0aWxlUmVjdHNUb0FkZFtpXSk7CisgICAgICAg
ICAgICB0aWxlLnNldFJlY3QocmVjdCk7CiAKICAgICAgICAgICAgIGlmICh0aWxlLnRleHR1cmUo
KSkKICAgICAgICAgICAgICAgICB0aWxlLnRleHR1cmUoKS0+cmVzZXQoZW5jbG9zaW5nSW50UmVj
dCh0aWxlLnJlY3QoKSkuc2l6ZSgpLCBoYXNBbHBoYSA/IEJpdG1hcFRleHR1cmU6OlN1cHBvcnRz
QWxwaGEgOiAwKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAKLSAgICAgICAg
bV90aWxlcy5hcHBlbmQoVGV4dHVyZU1hcHBlclRpbGUodGlsZVJlY3RzVG9BZGRbaV0pKTsKKyAg
ICAgICAgbV90aWxlcy5hcHBlbmQoVGV4dHVyZU1hcHBlclRpbGUocmVjdCkpOwogICAgIH0KIAog
ICAgIC8vIFJlbW92ZSB1bm5lY2Vzc2FyeSB0aWxlcywgaWYgdGhleSB3ZXJlbid0IHJlY3ljbGVk
LgogICAgIC8vIFdlIHVzZSBhIHRocmVzaG9sZCB0byBtYWtlIHN1cmUgd2UgZG9uJ3QgY3JlYXRl
L2Rlc3Ryb3kgdGlsZXMgdG9vIGVhZ2VybHkuCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB0
aWxlSW5kaWNlc1RvUmVtb3ZlLnNpemUoKSAmJiBtX3RpbGVzLnNpemUoKSA+IFRpbGVFcmFzZVRo
cmVzaG9sZDsgKytpKQotICAgICAgICBtX3RpbGVzLnJlbW92ZSh0aWxlSW5kaWNlc1RvUmVtb3Zl
W2ldKTsKKyAgICBmb3IgKGF1dG8mIGluZGV4IDogdGlsZUluZGljZXNUb1JlbW92ZSkgeworICAg
ICAgICBtX3RpbGVzLnJlbW92ZShpbmRleCk7CisgICAgICAgIGlmIChtX3RpbGVzLnNpemUoKSA8
PSBUaWxlRXJhc2VUaHJlc2hvbGQpCisgICAgICAgICAgICBicmVhazsKKyAgICB9CiB9CiAKIHZv
aWQgVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlOjp1cGRhdGVDb250ZW50cyhUZXh0dXJl
TWFwcGVyKiB0ZXh0dXJlTWFwcGVyLCBJbWFnZSogaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgdG90
YWxTaXplLCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QsIEJpdG1hcFRleHR1cmU6OlVwZGF0ZUNv
bnRlbnRzRmxhZyB1cGRhdGVDb250ZW50c0ZsYWcpCiB7CiAgICAgY3JlYXRlT3JEZXN0cm95VGls
ZXNJZk5lZWRlZCh0b3RhbFNpemUsIHRleHR1cmVNYXBwZXItPm1heFRleHR1cmVTaXplKCksICFp
bWFnZS0+Y3VycmVudEZyYW1lS25vd25Ub0JlT3BhcXVlKCkpOwotICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgbV90aWxlcy5zaXplKCk7ICsraSkKLSAgICAgICAgbV90aWxlc1tpXS51cGRhdGVD
b250ZW50cyh0ZXh0dXJlTWFwcGVyLCBpbWFnZSwgZGlydHlSZWN0LCB1cGRhdGVDb250ZW50c0Zs
YWcpOworICAgIGZvciAoYXV0byYgdGlsZSA6IG1fdGlsZXMpCisgICAgICAgIHRpbGUudXBkYXRl
Q29udGVudHModGV4dHVyZU1hcHBlciwgaW1hZ2UsIGRpcnR5UmVjdCwgdXBkYXRlQ29udGVudHNG
bGFnKTsKIH0KIAogdm9pZCBUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmU6OnVwZGF0ZUNv
bnRlbnRzKFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIsIEdyYXBoaWNzTGF5ZXIqIHNvdXJj
ZUxheWVyLCBjb25zdCBGbG9hdFNpemUmIHRvdGFsU2l6ZSwgY29uc3QgSW50UmVjdCYgZGlydHlS
ZWN0LCBCaXRtYXBUZXh0dXJlOjpVcGRhdGVDb250ZW50c0ZsYWcgdXBkYXRlQ29udGVudHNGbGFn
KQogewogICAgIGNyZWF0ZU9yRGVzdHJveVRpbGVzSWZOZWVkZWQodG90YWxTaXplLCB0ZXh0dXJl
TWFwcGVyLT5tYXhUZXh0dXJlU2l6ZSgpLCB0cnVlKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IG1fdGlsZXMuc2l6ZSgpOyArK2kpCi0gICAgICAgIG1fdGlsZXNbaV0udXBkYXRlQ29udGVu
dHModGV4dHVyZU1hcHBlciwgc291cmNlTGF5ZXIsIGRpcnR5UmVjdCwgdXBkYXRlQ29udGVudHNG
bGFnKTsKKyAgICBmb3IgKGF1dG8mIHRpbGUgOiBtX3RpbGVzKQorICAgICAgICB0aWxlLnVwZGF0
ZUNvbnRlbnRzKHRleHR1cmVNYXBwZXIsIHNvdXJjZUxheWVyLCBkaXJ0eVJlY3QsIHVwZGF0ZUNv
bnRlbnRzRmxhZyk7CiB9CiAKIFBhc3NSZWZQdHI8Qml0bWFwVGV4dHVyZT4gVGV4dHVyZU1hcHBl
clRpbGVkQmFja2luZ1N0b3JlOjp0ZXh0dXJlKCkgY29uc3QKIHsKLSAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IG1fdGlsZXMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgUmVmUHRyPEJpdG1hcFRl
eHR1cmU+IHRleHR1cmUgPSBtX3RpbGVzW2ldLnRleHR1cmUoKTsKLSAgICAgICAgaWYgKHRleHR1
cmUpCisgICAgZm9yIChjb25zdCBhdXRvJiB0aWxlIDogbV90aWxlcykgeworICAgICAgICBpZiAo
YXV0byB0ZXh0dXJlID0gdGlsZS50ZXh0dXJlKCkpCiAgICAgICAgICAgICByZXR1cm4gdGV4dHVy
ZTsKICAgICB9CiAKLSAgICByZXR1cm4gUGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPigpOworICAg
IHJldHVybiBudWxscHRyOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>
<flag name="review"
          id="266472"
          type_id="1"
          status="+"
          setter="cdumez"
    />
          </attachment>
      

    </bug>

</bugzilla>