<?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>45472</bug_id>
          
          <creation_ts>2010-09-09 10:51:54 -0700</creation_ts>
          <short_desc>Memory leak in red/black tree</short_desc>
          <delta_ts>2010-09-09 13:08:14 -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>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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>
          
          <blocked>44729</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Kenneth Russell">kbr</reporter>
          <assigned_to name="Kenneth Russell">kbr</assigned_to>
          <cc>fishd</cc>
    
    <cc>jamesr</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>276573</commentid>
    <comment_count>0</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-09-09 10:51:54 -0700</bug_when>
    <thetext>While testing the GPU accelerated path rendering code, a memory leak was discovered and tracked down to the fact that the red/black tree was allocating its nodes using operator new directly rather than the arena class.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>276594</commentid>
    <comment_count>1</comment_count>
      <attachid>67063</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-09-09 11:05:49 -0700</bug_when>
    <thetext>Created attachment 67063
Patch

From the ChangeLog:

Fixed memory leak in red/black tree where it was using operator new directly to allocate its internal nodes rather than the arena with which it was configured. Added allocateObject variant to arena supporting single-argument constructors. Added test to red/black tree unit tests to cover this functionality, and refactored TrackedAllocator into helper file to share between arena and red/black tree tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>276599</commentid>
    <comment_count>2</comment_count>
      <attachid>67063</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2010-09-09 11:11:56 -0700</bug_when>
    <thetext>Comment on attachment 67063
Patch

Suggestion: ad a private override for operator new on PODRedBlackTree::Node to avoid this sort of bug in the future.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>276610</commentid>
    <comment_count>3</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-09-09 11:18:01 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 67063 [details])
&gt; Suggestion: ad a private override for operator new on PODRedBlackTree::Node to avoid this sort of bug in the future.

This is a good suggestion. I tried it, but unfortunately overriding &quot;void* operator new(size_t size)&quot; on this type prevents placement new from working for the type, which is used by the arena.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>276617</commentid>
    <comment_count>4</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-09-09 11:21:17 -0700</bug_when>
    <thetext>Committed r67099: &lt;http://trac.webkit.org/changeset/67099&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>67063</attachid>
            <date>2010-09-09 11:05:49 -0700</date>
            <delta_ts>2010-09-09 11:11:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>tree-arena-fix.patch</filename>
            <type>text/plain</type>
            <size>12069</size>
            <attacher name="Kenneth Russell">kbr</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2NzA5NSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjYgQEAKKzIwMTAtMDktMDkgIEtlbm5ldGggUnVzc2VsbCAgPGtickBnb29nbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1l
bW9yeSBsZWFrIGluIHJlZC9ibGFjayB0cmVlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD00NTQ3MgorCisgICAgICAgIEZpeGVkIG1lbW9yeSBsZWFrIGlu
IHJlZC9ibGFjayB0cmVlIHdoZXJlIGl0IHdhcyB1c2luZyBvcGVyYXRvcgorICAgICAgICBuZXcg
ZGlyZWN0bHkgdG8gYWxsb2NhdGUgaXRzIGludGVybmFsIG5vZGVzIHJhdGhlciB0aGFuIHRoZSBh
cmVuYQorICAgICAgICB3aXRoIHdoaWNoIGl0IHdhcyBjb25maWd1cmVkLiBBZGRlZCBhbGxvY2F0
ZU9iamVjdCB2YXJpYW50IHRvCisgICAgICAgIGFyZW5hIHN1cHBvcnRpbmcgc2luZ2xlLWFyZ3Vt
ZW50IGNvbnN0cnVjdG9ycy4gQWRkZWQgdGVzdCB0bworICAgICAgICByZWQvYmxhY2sgdHJlZSB1
bml0IHRlc3RzIHRvIGNvdmVyIHRoaXMgZnVuY3Rpb25hbGl0eSwgYW5kCisgICAgICAgIHJlZmFj
dG9yZWQgVHJhY2tlZEFsbG9jYXRvciBpbnRvIGhlbHBlciBmaWxlIHRvIHNoYXJlIGJldHdlZW4K
KyAgICAgICAgYXJlbmEgYW5kIHJlZC9ibGFjayB0cmVlIHRlc3RzLgorCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZ3B1L1BPREFyZW5hLmg6CisgICAgICAgIChXZWJDb3JlOjpQT0RBcmVu
YTo6YWxsb2NhdGVPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6UE9EQXJlbmE6OmFsbG9jYXRl
QmFzZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1BPREludGVydmFsVHJlZS5o
OgorICAgICAgICAoV2ViQ29yZTo6UE9ESW50ZXJ2YWxUcmVlOjpQT0RJbnRlcnZhbFRyZWUpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9QT0RSZWRCbGFja1RyZWUuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlBPRFJlZEJsYWNrVHJlZTo6YWRkKToKKwogMjAxMC0wOS0wOSAgQ2hyaXMg
RmxlaXphY2ggIDxjZmxlaXphY2hAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERh
dmlkIEtpbHplci4KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1BPREFyZW5h
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvUE9EQXJlbmEu
aAkocmV2aXNpb24gNjcwOTUpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9QT0RB
cmVuYS5oCSh3b3JraW5nIGNvcHkpCkBAIC04NiwyNCArODYsMjIgQEAgcHVibGljOgogICAgIC8v
IEFsbG9jYXRlcyBhbiBvYmplY3QgZnJvbSB0aGUgYXJlbmEuCiAgICAgdGVtcGxhdGU8Y2xhc3Mg
VD4gVCogYWxsb2NhdGVPYmplY3QoKQogICAgIHsKLSAgICAgICAgdm9pZCogcHRyID0gMDsKLSAg
ICAgICAgc2l6ZV90IHJvdW5kZWRTaXplID0gcm91bmRVcChzaXplb2YoVCksIG1pbkFsaWdubWVu
dDxUPigpKTsKLSAgICAgICAgaWYgKG1fY3VycmVudCkKLSAgICAgICAgICAgIHB0ciA9IG1fY3Vy
cmVudC0+YWxsb2NhdGUocm91bmRlZFNpemUpOwotCi0gICAgICAgIGlmICghcHRyKSB7Ci0gICAg
ICAgICAgICBpZiAocm91bmRlZFNpemUgPiBtX2N1cnJlbnRDaHVua1NpemUpCi0gICAgICAgICAg
ICAgICAgbV9jdXJyZW50Q2h1bmtTaXplID0gcm91bmRlZFNpemU7Ci0gICAgICAgICAgICBtX2No
dW5rcy5hcHBlbmQoYWRvcHRQdHIobmV3IENodW5rKG1fYWxsb2NhdG9yLmdldCgpLCBtX2N1cnJl
bnRDaHVua1NpemUpKSk7Ci0gICAgICAgICAgICBtX2N1cnJlbnQgPSBtX2NodW5rcy5sYXN0KCku
Z2V0KCk7Ci0gICAgICAgICAgICBwdHIgPSBtX2N1cnJlbnQtPmFsbG9jYXRlKHJvdW5kZWRTaXpl
KTsKLSAgICAgICAgfQotCisgICAgICAgIHZvaWQqIHB0ciA9IGFsbG9jYXRlQmFzZTxUPigpOwog
ICAgICAgICBpZiAocHRyKSB7CiAgICAgICAgICAgICAvLyBVc2UgcGxhY2VtZW50IG9wZXJhdG9y
IG5ldyB0byBhbGxvY2F0ZSBhIFQgYXQgdGhpcyBsb2NhdGlvbi4KICAgICAgICAgICAgIG5ldyhw
dHIpIFQoKTsKICAgICAgICAgfQorICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VCo+KHB0cik7
CisgICAgfQogCisgICAgLy8gQWxsb2NhdGVzIGFuIG9iamVjdCBmcm9tIHRoZSBhcmVuYSwgY2Fs
bGluZyBhIHNpbmdsZS1hcmd1bWVudCBjb25zdHJ1Y3Rvci4KKyAgICB0ZW1wbGF0ZTxjbGFzcyBU
LCBjbGFzcyBBcmd1bWVudDFUeXBlPiBUKiBhbGxvY2F0ZU9iamVjdChjb25zdCBBcmd1bWVudDFU
eXBlJiBhcmd1bWVudDEpCisgICAgeworICAgICAgICB2b2lkKiBwdHIgPSBhbGxvY2F0ZUJhc2U8
VD4oKTsKKyAgICAgICAgaWYgKHB0cikgeworICAgICAgICAgICAgLy8gVXNlIHBsYWNlbWVudCBv
cGVyYXRvciBuZXcgdG8gYWxsb2NhdGUgYSBUIGF0IHRoaXMgbG9jYXRpb24uCisgICAgICAgICAg
ICBuZXcocHRyKSBUKGFyZ3VtZW50MSk7CisgICAgICAgIH0KICAgICAgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PFQqPihwdHIpOwogICAgIH0KIApAQCAtMTM1LDYgKzEzMywyMyBAQCBwcml2YXRlOgog
ICAgICAgICByZXR1cm4gV1RGX0FMSUdOX09GKFQpOwogICAgIH0KIAorICAgIHRlbXBsYXRlPGNs
YXNzIFQ+IHZvaWQqIGFsbG9jYXRlQmFzZSgpCisgICAgeworICAgICAgICB2b2lkKiBwdHIgPSAw
OworICAgICAgICBzaXplX3Qgcm91bmRlZFNpemUgPSByb3VuZFVwKHNpemVvZihUKSwgbWluQWxp
Z25tZW50PFQ+KCkpOworICAgICAgICBpZiAobV9jdXJyZW50KQorICAgICAgICAgICAgcHRyID0g
bV9jdXJyZW50LT5hbGxvY2F0ZShyb3VuZGVkU2l6ZSk7CisKKyAgICAgICAgaWYgKCFwdHIpIHsK
KyAgICAgICAgICAgIGlmIChyb3VuZGVkU2l6ZSA+IG1fY3VycmVudENodW5rU2l6ZSkKKyAgICAg
ICAgICAgICAgICBtX2N1cnJlbnRDaHVua1NpemUgPSByb3VuZGVkU2l6ZTsKKyAgICAgICAgICAg
IG1fY2h1bmtzLmFwcGVuZChhZG9wdFB0cihuZXcgQ2h1bmsobV9hbGxvY2F0b3IuZ2V0KCksIG1f
Y3VycmVudENodW5rU2l6ZSkpKTsKKyAgICAgICAgICAgIG1fY3VycmVudCA9IG1fY2h1bmtzLmxh
c3QoKS5nZXQoKTsKKyAgICAgICAgICAgIHB0ciA9IG1fY3VycmVudC0+YWxsb2NhdGUocm91bmRl
ZFNpemUpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBwdHI7CisgICAgfQorCiAgICAgLy8g
Um91bmRzIHVwIHRoZSBnaXZlbiBhbGxvY2F0aW9uIHNpemUgdG8gdGhlIHNwZWNpZmllZCBhbGln
bm1lbnQuCiAgICAgc2l6ZV90IHJvdW5kVXAoc2l6ZV90IHNpemUsIHNpemVfdCBhbGlnbm1lbnQp
CiAgICAgewpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvUE9ESW50ZXJ2YWxU
cmVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvUE9ESW50
ZXJ2YWxUcmVlLmgJKHJldmlzaW9uIDY3MDk1KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ncHUvUE9ESW50ZXJ2YWxUcmVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTUyLDcgKzUyLDcgQEAg
cHVibGljOgogICAgICAgICBpbml0KCk7CiAgICAgfQogCi0gICAgZXhwbGljaXQgUE9ESW50ZXJ2
YWxUcmVlKFBPREFyZW5hKiBhcmVuYSkKKyAgICBleHBsaWNpdCBQT0RJbnRlcnZhbFRyZWUoUGFz
c1JlZlB0cjxQT0RBcmVuYT4gYXJlbmEpCiAgICAgICAgIDogUE9EUmVkQmxhY2tUcmVlPEludGVy
dmFsVHlwZT4oYXJlbmEpCiAgICAgewogICAgICAgICBpbml0KCk7CkluZGV4OiBXZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dwdS9QT0RSZWRCbGFja1RyZWUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9QT0RSZWRCbGFja1RyZWUuaAkocmV2aXNpb24gNjcw
OTUpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9QT0RSZWRCbGFja1RyZWUuaAko
d29ya2luZyBjb3B5KQpAQCAtMTIyLDcgKzEyMiw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgYWRk
KGNvbnN0IFQmIGRhdGEpCiAgICAgewotICAgICAgICBOb2RlKiBub2RlID0gbmV3IE5vZGUoZGF0
YSk7CisgICAgICAgIE5vZGUqIG5vZGUgPSBtX2FyZW5hLT5hbGxvY2F0ZU9iamVjdDxOb2RlLCBU
PihkYXRhKTsKICAgICAgICAgaW5zZXJ0Tm9kZShub2RlKTsKICAgICB9CiAKSW5kZXg6IFdlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL0NoYW5n
ZUxvZwkocmV2aXNpb24gNjcwOTUpCisrKyBXZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTAtMDktMDkgIEtlbm5ldGggUnVzc2VsbCAg
PGtickBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIE1lbW9yeSBsZWFrIGluIHJlZC9ibGFjayB0cmVlCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NTQ3MgorCisgICAgICAgIEZpeGVkIG1l
bW9yeSBsZWFrIGluIHJlZC9ibGFjayB0cmVlIHdoZXJlIGl0IHdhcyB1c2luZyBvcGVyYXRvcgor
ICAgICAgICBuZXcgZGlyZWN0bHkgdG8gYWxsb2NhdGUgaXRzIGludGVybmFsIG5vZGVzIHJhdGhl
ciB0aGFuIHRoZSBhcmVuYQorICAgICAgICB3aXRoIHdoaWNoIGl0IHdhcyBjb25maWd1cmVkLiBB
ZGRlZCBhbGxvY2F0ZU9iamVjdCB2YXJpYW50IHRvCisgICAgICAgIGFyZW5hIHN1cHBvcnRpbmcg
c2luZ2xlLWFyZ3VtZW50IGNvbnN0cnVjdG9ycy4gQWRkZWQgdGVzdCB0bworICAgICAgICByZWQv
YmxhY2sgdHJlZSB1bml0IHRlc3RzIHRvIGNvdmVyIHRoaXMgZnVuY3Rpb25hbGl0eSwgYW5kCisg
ICAgICAgIHJlZmFjdG9yZWQgVHJhY2tlZEFsbG9jYXRvciBpbnRvIGhlbHBlciBmaWxlIHRvIHNo
YXJlIGJldHdlZW4KKyAgICAgICAgYXJlbmEgYW5kIHJlZC9ibGFjayB0cmVlIHRlc3RzLgorCisg
ICAgICAgICogV2ViS2l0Lmd5cDoKKyAgICAgICAgKiB0ZXN0cy9BcmVuYVRlc3RIZWxwZXJzLmg6
IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6QXJlbmFUZXN0SGVscGVyczo6VHJhY2tlZEFsbG9j
YXRvcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkFyZW5hVGVzdEhlbHBlcnM6OlRyYWNr
ZWRBbGxvY2F0b3I6OmFsbG9jYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkFyZW5hVGVzdEhlbHBl
cnM6OlRyYWNrZWRBbGxvY2F0b3I6OmZyZWUpOgorICAgICAgICAoV2ViQ29yZTo6QXJlbmFUZXN0
SGVscGVyczo6VHJhY2tlZEFsbG9jYXRvcjo6aXNFbXB0eSk6CisgICAgICAgIChXZWJDb3JlOjpB
cmVuYVRlc3RIZWxwZXJzOjpUcmFja2VkQWxsb2NhdG9yOjpudW1SZWdpb25zKToKKyAgICAgICAg
KFdlYkNvcmU6OkFyZW5hVGVzdEhlbHBlcnM6OlRyYWNrZWRBbGxvY2F0b3I6OlRyYWNrZWRBbGxv
Y2F0b3IpOgorICAgICAgICAqIHRlc3RzL1BPREFyZW5hVGVzdC5jcHA6CisgICAgICAgICogdGVz
dHMvUE9EUmVkQmxhY2tUcmVlVGVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpURVNUKToKKwog
MjAxMC0wOS0wOSAgVG9ueSBDaGFuZyAgPHRvbnlAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IERpbWl0cmkgR2xhemtvdi4KSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9XZWJLaXQu
Z3lwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCShyZXZpc2lvbiA2
NzA5NSkKKysrIFdlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCSh3b3JraW5nIGNvcHkpCkBAIC03
MzMsNiArNzMzLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICdzcmMnLAogICAgICAgICAg
ICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICAnc291cmNlcyc6IFsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICd0ZXN0cy9BcmVuYVRlc3RIZWxwZXJzLmgnLAogICAgICAgICAgICAg
ICAgICAgICAgICAgJ3Rlc3RzL0RyYWdJbWFnZVRlc3QuY3BwJywKICAgICAgICAgICAgICAgICAg
ICAgICAgICd0ZXN0cy9JREJCaW5kaW5nVXRpbGl0aWVzVGVzdC5jcHAnLAogICAgICAgICAgICAg
ICAgICAgICAgICAgJ3Rlc3RzL0lEQktleVBhdGhUZXN0LmNwcCcsCkluZGV4OiBXZWJLaXQvY2hy
b21pdW0vdGVzdHMvQXJlbmFUZXN0SGVscGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJv
bWl1bS90ZXN0cy9BcmVuYVRlc3RIZWxwZXJzLmgJKHJldmlzaW9uIDApCisrKyBXZWJLaXQvY2hy
b21pdW0vdGVzdHMvQXJlbmFUZXN0SGVscGVycy5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDc4
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgor
ICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2lmbmRlZiBBcmVuYVRlc3RIZWxwZXJzX2gKKyNkZWZpbmUgQXJlbmFUZXN0
SGVscGVyc19oCisKKyNpbmNsdWRlICJQT0RBcmVuYS5oIgorI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0
Lmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CituYW1l
c3BhY2UgQXJlbmFUZXN0SGVscGVycyB7CisKKy8vIEFuIGFsbG9jYXRvciBmb3IgdGhlIFBPREFy
ZW5hIHdoaWNoIHRyYWNrcyB0aGUgcmVnaW9ucyB3aGljaCBoYXZlCisvLyBiZWVuIGFsbG9jYXRl
ZC4KK2NsYXNzIFRyYWNrZWRBbGxvY2F0b3IgOiBwdWJsaWMgUE9EQXJlbmE6OkZhc3RNYWxsb2NB
bGxvY2F0b3IgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFRyYWNrZWRBbGxvY2F0
b3I+IGNyZWF0ZSgpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFRyYWNrZWRB
bGxvY2F0b3IpOworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCogYWxsb2NhdGUoc2l6ZV90IHNp
emUpCisgICAgeworICAgICAgICB2b2lkKiByZXN1bHQgPSBQT0RBcmVuYTo6RmFzdE1hbGxvY0Fs
bG9jYXRvcjo6YWxsb2NhdGUoc2l6ZSk7CisgICAgICAgIG1fYWxsb2NhdGVkUmVnaW9ucy5hcHBl
bmQocmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICB2aXJ0dWFs
IHZvaWQgZnJlZSh2b2lkKiBwdHIpCisgICAgeworICAgICAgICBzaXplX3Qgc2xvdCA9IG1fYWxs
b2NhdGVkUmVnaW9ucy5maW5kKHB0cik7CisgICAgICAgIEFTU0VSVF9HRShzbG90LCAwKTsKKyAg
ICAgICAgbV9hbGxvY2F0ZWRSZWdpb25zLnJlbW92ZShzbG90KTsKKyAgICAgICAgUE9EQXJlbmE6
OkZhc3RNYWxsb2NBbGxvY2F0b3I6OmZyZWUocHRyKTsKKyAgICB9CisKKyAgICBib29sIGlzRW1w
dHkoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuICFudW1SZWdpb25zKCk7CisgICAgfQor
CisgICAgaW50IG51bVJlZ2lvbnMoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fYWxs
b2NhdGVkUmVnaW9ucy5zaXplKCk7CisgICAgfQorCitwcml2YXRlOgorICAgIFRyYWNrZWRBbGxv
Y2F0b3IoKSB7IH0KKyAgICBWZWN0b3I8dm9pZCo+IG1fYWxsb2NhdGVkUmVnaW9uczsKK307CisK
K30gLy8gbmFtZXNwYWNlIEFyZW5hVGVzdEhlbHBlcnMKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworI2VuZGlmIC8vIEFyZW5hVGVzdEhlbHBlcnNfaApJbmRleDogV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL1BPREFyZW5hVGVzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L1BPREFyZW5hVGVzdC5jcHAJKHJldmlzaW9uIDY3MDk1KQorKysgV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL1BPREFyZW5hVGVzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKIAog
I2luY2x1ZGUgIlBPREFyZW5hLmgiCiAKKyNpbmNsdWRlICJBcmVuYVRlc3RIZWxwZXJzLmgiCiAj
aW5jbHVkZSA8YWxnb3JpdGhtPgogI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CiAjaW5jbHVkZSA8
d3RmL0Zhc3RNYWxsb2MuaD4KQEAgLTM1LDQ2ICszNiw5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotbmFtZXNwYWNlIHsKLQotLy8gQW4gYWxsb2NhdG9yIGZvciB0aGUgUE9EQXJlbmEgd2hp
Y2ggdHJhY2tzIHRoZSByZWdpb25zIHdoaWNoIGhhdmUKLS8vIGJlZW4gYWxsb2NhdGVkLgotY2xh
c3MgVHJhY2tlZEFsbG9jYXRvciA6IHB1YmxpYyBQT0RBcmVuYTo6RmFzdE1hbGxvY0FsbG9jYXRv
ciB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8VHJhY2tlZEFsbG9jYXRvcj4gY3Jl
YXRlKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgVHJhY2tlZEFsbG9jYXRv
cik7Ci0gICAgfQotCi0gICAgdmlydHVhbCB2b2lkKiBhbGxvY2F0ZShzaXplX3Qgc2l6ZSkKLSAg
ICB7Ci0gICAgICAgIHZvaWQqIHJlc3VsdCA9IFBPREFyZW5hOjpGYXN0TWFsbG9jQWxsb2NhdG9y
OjphbGxvY2F0ZShzaXplKTsKLSAgICAgICAgbV9hbGxvY2F0ZWRSZWdpb25zLmFwcGVuZChyZXN1
bHQpOwotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0KLQotICAgIHZpcnR1YWwgdm9pZCBm
cmVlKHZvaWQqIHB0cikKLSAgICB7Ci0gICAgICAgIHNpemVfdCBzbG90ID0gbV9hbGxvY2F0ZWRS
ZWdpb25zLmZpbmQocHRyKTsKLSAgICAgICAgQVNTRVJUX0dFKHNsb3QsIDApOwotICAgICAgICBt
X2FsbG9jYXRlZFJlZ2lvbnMucmVtb3ZlKHNsb3QpOwotICAgICAgICBQT0RBcmVuYTo6RmFzdE1h
bGxvY0FsbG9jYXRvcjo6ZnJlZShwdHIpOwotICAgIH0KK3VzaW5nIEFyZW5hVGVzdEhlbHBlcnM6
OlRyYWNrZWRBbGxvY2F0b3I7CiAKLSAgICBib29sIGlzRW1wdHkoKSBjb25zdAotICAgIHsKLSAg
ICAgICAgcmV0dXJuICFudW1SZWdpb25zKCk7Ci0gICAgfQotCi0gICAgaW50IG51bVJlZ2lvbnMo
KSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fYWxsb2NhdGVkUmVnaW9ucy5zaXplKCk7
Ci0gICAgfQotCi1wcml2YXRlOgotICAgIFRyYWNrZWRBbGxvY2F0b3IoKSB7IH0KLSAgICBWZWN0
b3I8dm9pZCo+IG1fYWxsb2NhdGVkUmVnaW9uczsKLX07CituYW1lc3BhY2UgewogCiAvLyBBIGNv
dXBsZSBvZiBzaW1wbGUgc3RydWN0cyB0byBhbGxvY2F0ZS4KIHN0cnVjdCBUZXN0Q2xhc3MxIHsK
SW5kZXg6IFdlYktpdC9jaHJvbWl1bS90ZXN0cy9QT0RSZWRCbGFja1RyZWVUZXN0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vdGVzdHMvUE9EUmVkQmxhY2tUcmVlVGVzdC5jcHAJ
KHJldmlzaW9uIDY3MDk1KQorKysgV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1BPRFJlZEJsYWNrVHJl
ZVRlc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSwxNiArMjksMzIgQEAKIAogI2luY2x1ZGUg
IlBPRFJlZEJsYWNrVHJlZS5oIgogCisjaW5jbHVkZSAiQXJlbmFUZXN0SGVscGVycy5oIgogI2lu
Y2x1ZGUgIlRyZWVUZXN0SGVscGVycy5oIgogI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CiAjaW5j
bHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK3VzaW5nIEFyZW5h
VGVzdEhlbHBlcnM6OlRyYWNrZWRBbGxvY2F0b3I7CiB1c2luZyBUcmVlVGVzdEhlbHBlcnM6Omdl
bmVyYXRlU2VlZDsKIHVzaW5nIFRyZWVUZXN0SGVscGVyczo6aW5pdFJhbmRvbTsKIHVzaW5nIFRy
ZWVUZXN0SGVscGVyczo6bmV4dFJhbmRvbTsKIAorVEVTVChQT0RSZWRCbGFja1RyZWVUZXN0LCBU
ZXN0VHJlZUFsbG9jYXRlc0Zyb21BcmVuYSkKK3sKKyAgICBSZWZQdHI8VHJhY2tlZEFsbG9jYXRv
cj4gYWxsb2NhdG9yID0gVHJhY2tlZEFsbG9jYXRvcjo6Y3JlYXRlKCk7CisgICAgeworICAgICAg
ICBSZWZQdHI8UE9EQXJlbmE+IGFyZW5hID0gUE9EQXJlbmE6OmNyZWF0ZShhbGxvY2F0b3IpOwor
ICAgICAgICBQT0RSZWRCbGFja1RyZWU8aW50PiB0cmVlKGFyZW5hKTsKKyAgICAgICAgaW50IG51
bUFkZGl0aW9ucyA9IDIgKiBQT0RBcmVuYTo6RGVmYXVsdENodW5rU2l6ZSAvIHNpemVvZihpbnQp
OworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bUFkZGl0aW9uczsgKytpKQorICAgICAg
ICAgICAgdHJlZS5hZGQoaSk7CisgICAgICAgIEVYUEVDVF9HVChhbGxvY2F0b3ItPm51bVJlZ2lv
bnMoKSwgMSk7CisgICAgfQorICAgIEVYUEVDVF9FUShhbGxvY2F0b3ItPm51bVJlZ2lvbnMoKSwg
MCk7Cit9CisKIFRFU1QoUE9EUmVkQmxhY2tUcmVlVGVzdCwgVGVzdFNpbmdsZUVsZW1lbnRJbnNl
cnRpb24pCiB7CiAgICAgUE9EUmVkQmxhY2tUcmVlPGludD4gdHJlZTsK
</data>
<flag name="review"
          id="56256"
          type_id="1"
          status="+"
          setter="jamesr"
    />
    <flag name="commit-queue"
          id="56257"
          type_id="3"
          status="-"
          setter="kbr"
    />
          </attachment>
      

    </bug>

</bugzilla>