<?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>85119</bug_id>
          
          <creation_ts>2012-04-27 19:22:10 -0700</creation_ts>
          <short_desc>Only allow non-null pointers in the WeakSet</short_desc>
          <delta_ts>2012-04-27 20:42:34 -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>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="Geoffrey Garen">ggaren</reporter>
          <assigned_to name="Geoffrey Garen">ggaren</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>612087</commentid>
    <comment_count>0</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-04-27 19:22:10 -0700</bug_when>
    <thetext>Only allow non-null pointers in the WeakSet</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>612097</commentid>
    <comment_count>1</comment_count>
      <attachid>139326</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-04-27 19:35:21 -0700</bug_when>
    <thetext>Created attachment 139326
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>612101</commentid>
    <comment_count>2</comment_count>
      <attachid>139326</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-04-27 19:47:15 -0700</bug_when>
    <thetext>Comment on attachment 139326
Patch

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

&gt; Source/JavaScriptCore/heap/PassWeak.h:127
&gt;  template&lt;typename T&gt; inline PassWeak&lt;T&gt;::PassWeak(JSGlobalData&amp; globalData, typename PassWeak&lt;T&gt;::GetType getType, WeakHandleOwner* weakOwner, void* context)
&gt; -    : m_impl(globalData.heap.weakSet()-&gt;allocate(getType, weakOwner, context))
&gt; +    : m_impl(0)
&gt;  {
&gt; +    if (!getType)
&gt; +        return;
&gt; +    m_impl = globalData.heap.weakSet()-&gt;allocate(getType, weakOwner, context);
&gt;  }

As with your prior WebCore patch, I think there are two other ways you could do this:

1) A helper function that returns 0 if getType is 0.
2) A trinary expression getType ? xxx : 0.

The “initialize to 0 and then use an early exit” doesn’t seem quite as good as those.

&gt; Source/JavaScriptCore/heap/WeakBlock.cpp:109
&gt;          const JSValue&amp; jsValue = weakImpl-&gt;jsValue();
&gt; -        if (!jsValue || !jsValue.isCell())
&gt; -            continue;
&gt; -
&gt;          JSCell* jsCell = jsValue.asCell();
&gt;          if (Heap::isMarked(jsCell))
&gt;              continue;

Why bother with all these local variables? I like this:

    if (Heap::isMarked(weakImpl-&gt;jsValue().asCell()))

&gt; Source/JavaScriptCore/heap/WeakBlock.cpp:136
&gt;          const JSValue&amp; jsValue = weakImpl-&gt;jsValue();
&gt; -        if (!jsValue || !jsValue.isCell())
&gt; -            continue;
&gt; -
&gt;          JSCell* jsCell = jsValue.asCell();
&gt;          if (Heap::isMarked(jsCell))
&gt;              continue;

Why bother with all these local variables? I like this:

    if (Heap::isMarked(weakImpl-&gt;jsValue().asCell()))</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>612124</commentid>
    <comment_count>3</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-04-27 20:41:38 -0700</bug_when>
    <thetext>&gt; As with your prior WebCore patch, I think there are two other ways you could do this:
&gt; 
&gt; 1) A helper function that returns 0 if getType is 0.
&gt; 2) A trinary expression getType ? xxx : 0.

OK, I did 2.

&gt; Why bother with all these local variables? I like this:

I kept jsValue in one function, since it&apos;s reused later, but removed all the other locals.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>612125</commentid>
    <comment_count>4</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-04-27 20:42:34 -0700</bug_when>
    <thetext>Committed r115534: &lt;http://trac.webkit.org/changeset/115534&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>139326</attachid>
            <date>2012-04-27 19:35:21 -0700</date>
            <delta_ts>2012-04-27 19:47:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-85119-20120427193520.patch</filename>
            <type>text/plain</type>
            <size>8822</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTE1NTI2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ0IEBA
CisyMDEyLTA0LTI3ICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CisKKyAgICAg
ICAgT25seSBhbGxvdyBub24tbnVsbCBwb2ludGVycyBpbiB0aGUgV2Vha1NldAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODUxMTkKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGlzIGEgc3RlcCB0b3dh
cmQgbW9yZSBlZmZpY2llbnQgZmluYWxpemF0aW9uLgorCisgICAgICAgIE5vIGNsaWVudHMgcHV0
IG5vbi1wb2ludGVycyAoSlNWYWx1ZXMpIGludG8gV2VhazxUPiBhbmQgUGFzc1dlYWs8VD4uCisK
KyAgICAgICAgU29tZSBjbGllbnRzIHB1dCBudWxsIHBvaW50ZXJzIGludG8gV2VhazxUPiBhbmQg
UGFzc1dlYWs8VD4sIGJ1dCB0aGlzIGlzCisgICAgICAgIG1vcmUgZWZmaWNpZW50IGFuZCBzdHJh
aWdodC1mb3J3YXJkIHRvIG1vZGVsIHdpdGggYSBudWxsIGluIHRoZSBXZWFrPFQ+CisgICAgICAg
IG9yIFBhc3NXZWFrPFQ+IGluc3RlYWQgb2YgYWxsb2NhdGluZyBhIFdlYWtJbXBsIGp1c3QgdG8g
aG9sZCBudWxsLgorCisgICAgICAgICogaGVhcC9QYXNzV2Vhay5oOgorICAgICAgICAoSlNDKTog
UmVtb3ZlZCB0aGUgVW5rbm93biAoSlNWYWx1ZSkgdHlwZSBvZiB3ZWFrIHBvaW50ZXIgYmVjYXVz
ZSBpdCdzCisgICAgICAgIHVudXNlZCBub3cuCisKKyAgICAgICAgKFBhc3NXZWFrKTogRG9uJ3Qg
cHJvdmlkZSBhIGRlZmF1bHQgaW5pdGlhbGl6ZXIgZm9yIG91ciBKU0NlbGwqIGFyZ3VtZW50Lgor
ICAgICAgICBUaGlzIGZlYXR1cmUgd2FzIG9ubHkgdXNlZCBpbiBvbmUgcGxhY2UsIGFuZCBpdCB3
YXMgYSBidWcuCisKKyAgICAgICAgKEpTQzo6OjpnZXQpOiBEb24ndCBjaGVjayBmb3IgYSBudWxs
IHN0b3JlZCBpbnNpZGUgb3VyIFdlYWtJbXBsOiB0aGF0J3MgCisgICAgICAgIG5vdCBhbGxvd2Vk
IGFueW1vcmUuCisKKyAgICAgICAgKEpTQzo6UGFzc1dlYWs6OlBhc3NXZWFrKTogSGFuZGxlIG51
bGwgYXMgYSBudWxsIFdlYWtJbXBsIGluc3RlYWQgb2YKKyAgICAgICAgYWxsb2NhdGluZyBhIFdl
YWtJbXBsIGFuZCBzdG9yaW5nIG51bGwgaW50byBpdC4KKworICAgICAgICAqIGhlYXAvV2Vhay5o
OgorICAgICAgICAoV2Vhayk6CisgICAgICAgIChKU0M6Ojo6V2Vhayk6IFNhbWUgY2hhbmdlcyBh
cyBpbiBQYXNzV2VhazxUPi4KKworICAgICAgICAqIGhlYXAvV2Vha0Jsb2NrLmNwcDoKKyAgICAg
ICAgKEpTQzo6V2Vha0Jsb2NrOjp2aXNpdExpdmVXZWFrSW1wbHMpOgorICAgICAgICAoSlNDOjpX
ZWFrQmxvY2s6OnZpc2l0RGVhZFdlYWtJbXBscyk6IE9ubHkgbm9uLW51bGwgY2VsbHMgYXJlIHZh
bGlkIGluCisgICAgICAgIHRoZSBXZWFrU2V0IG5vdywgc28gbm8gbmVlZCB0byBjaGVjayBmb3Ig
bm9uLWNlbGxzIGFuZCBudWxsIGNlbGwgcG9pbnRlcnMuCisKKyAgICAgICAgKiBoZWFwL1dlYWtJ
bXBsLmg6CisgICAgICAgIChKU0M6OldlYWtJbXBsOjpXZWFrSW1wbCk6IE9ubHkgbm9uLW51bGwg
Y2VsbHMgYXJlIHZhbGlkIGluIHRoZSBXZWFrU2V0CisgICAgICAgIG5vdywgc28gQVNTRVJUIHRo
YXQuCisKIDIwMTItMDQtMjcgIEdhdmluIEJhcnJhY2xvdWdoICA8YmFycmFjbG91Z2hAYXBwbGUu
Y29tPgogCiAgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83OTA5Mzk1PiBNYXRoIGluIEphdmFTY3Jp
cHQgaXMgaW5hY2N1cmF0ZSBvbiBpT1MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L1Bhc3NXZWFrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvUGFz
c1dlYWsuaAkocmV2aXNpb24gMTE1NDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
UGFzc1dlYWsuaAkod29ya2luZyBjb3B5KQpAQCAtNTAsMTUgKzUwLDYgQEAgcHVibGljOgogI2Vu
ZGlmCiB9OwogCi10ZW1wbGF0ZTx0eXBlbmFtZSBCYXNlPiBjbGFzcyBXZWFrSW1wbEFjY2Vzc29y
PEJhc2UsIFVua25vd24+IHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIEpTVmFsdWUgR2V0VHlwZTsK
LQotICAgIGNvbnN0IEpTVmFsdWUqIG9wZXJhdG9yLT4oKSBjb25zdDsKLSAgICBjb25zdCBKU1Zh
bHVlJiBvcGVyYXRvciooKSBjb25zdDsKLSAgICBHZXRUeXBlIGdldCgpIGNvbnN0OwotfTsKLQog
dGVtcGxhdGU8dHlwZW5hbWUgVD4gY2xhc3MgUGFzc1dlYWsgOiBwdWJsaWMgV2Vha0ltcGxBY2Nl
c3NvcjxQYXNzV2VhazxUPiwgVD4gewogcHVibGljOgogICAgIGZyaWVuZCBjbGFzcyBXZWFrSW1w
bEFjY2Vzc29yPFBhc3NXZWFrPFQ+LCBUPjsKQEAgLTY2LDcgKzU3LDcgQEAgcHVibGljOgogCiAg
ICAgUGFzc1dlYWsoKTsKICAgICBQYXNzV2VhayhzdGQ6Om51bGxwdHJfdCk7Ci0gICAgUGFzc1dl
YWsoSlNHbG9iYWxEYXRhJiwgR2V0VHlwZSA9IEdldFR5cGUoKSwgV2Vha0hhbmRsZU93bmVyKiA9
IDAsIHZvaWQqIGNvbnRleHQgPSAwKTsKKyAgICBQYXNzV2VhayhKU0dsb2JhbERhdGEmLCBHZXRU
eXBlLCBXZWFrSGFuZGxlT3duZXIqID0gMCwgdm9pZCogY29udGV4dCA9IDApOwogCiAgICAgLy8g
SXQgc29tZXdoYXQgYnJlYWtzIHRoZSB0eXBlIHN5c3RlbSB0byBhbGxvdyB0cmFuc2ZlciBvZiBv
d25lcnNoaXAgb3V0IG9mCiAgICAgLy8gYSBjb25zdCBQYXNzV2Vhay4gSG93ZXZlciwgaXQgbWFr
ZXMgaXQgbXVjaCBlYXNpZXIgdG8gd29yayB3aXRoIFBhc3NXZWFrCkBAIC0xMDUsNyArOTYsNyBA
QCB0ZW1wbGF0ZTx0eXBlbmFtZSBCYXNlLCB0eXBlbmFtZSBUPiBpbmxpCiAKIHRlbXBsYXRlPHR5
cGVuYW1lIEJhc2UsIHR5cGVuYW1lIFQ+IGlubGluZSB0eXBlbmFtZSBXZWFrSW1wbEFjY2Vzc29y
PEJhc2UsIFQ+OjpHZXRUeXBlIFdlYWtJbXBsQWNjZXNzb3I8QmFzZSwgVD46OmdldCgpIGNvbnN0
CiB7Ci0gICAgaWYgKCFzdGF0aWNfY2FzdDxjb25zdCBCYXNlKj4odGhpcyktPm1faW1wbCB8fCBz
dGF0aWNfY2FzdDxjb25zdCBCYXNlKj4odGhpcyktPm1faW1wbC0+c3RhdGUoKSAhPSBXZWFrSW1w
bDo6TGl2ZSB8fCAhc3RhdGljX2Nhc3Q8Y29uc3QgQmFzZSo+KHRoaXMpLT5tX2ltcGwtPmpzVmFs
dWUoKSkKKyAgICBpZiAoIXN0YXRpY19jYXN0PGNvbnN0IEJhc2UqPih0aGlzKS0+bV9pbXBsIHx8
IHN0YXRpY19jYXN0PGNvbnN0IEJhc2UqPih0aGlzKS0+bV9pbXBsLT5zdGF0ZSgpICE9IFdlYWtJ
bXBsOjpMaXZlKQogICAgICAgICByZXR1cm4gR2V0VHlwZSgpOwogICAgIHJldHVybiBqc0Nhc3Q8
VCo+KHN0YXRpY19jYXN0PGNvbnN0IEJhc2UqPih0aGlzKS0+bV9pbXBsLT5qc1ZhbHVlKCkuYXND
ZWxsKCkpOwogfQpAQCAtMTE3LDI1ICsxMDgsNiBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBCYXNlLCB0
eXBlbmFtZSBUPiBpbmxpCiB9CiAjZW5kaWYKIAotdGVtcGxhdGU8dHlwZW5hbWUgQmFzZT4gaW5s
aW5lIGNvbnN0IEpTVmFsdWUqIFdlYWtJbXBsQWNjZXNzb3I8QmFzZSwgVW5rbm93bj46Om9wZXJh
dG9yLT4oKSBjb25zdAotewotICAgIEFTU0VSVChzdGF0aWNfY2FzdDxjb25zdCBCYXNlKj4odGhp
cyktPm1faW1wbCAmJiBzdGF0aWNfY2FzdDxjb25zdCBCYXNlKj4odGhpcyktPm1faW1wbC0+c3Rh
dGUoKSA9PSBXZWFrSW1wbDo6TGl2ZSk7Ci0gICAgcmV0dXJuICZzdGF0aWNfY2FzdDxjb25zdCBC
YXNlKj4odGhpcyktPm1faW1wbC0+anNWYWx1ZSgpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBC
YXNlPiBpbmxpbmUgY29uc3QgSlNWYWx1ZSYgV2Vha0ltcGxBY2Nlc3NvcjxCYXNlLCBVbmtub3du
Pjo6b3BlcmF0b3IqKCkgY29uc3QKLXsKLSAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8Y29uc3QgQmFz
ZSo+KHRoaXMpLT5tX2ltcGwgJiYgc3RhdGljX2Nhc3Q8Y29uc3QgQmFzZSo+KHRoaXMpLT5tX2lt
cGwtPnN0YXRlKCkgPT0gV2Vha0ltcGw6OkxpdmUpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxj
b25zdCBCYXNlKj4odGhpcyktPm1faW1wbC0+anNWYWx1ZSgpOwotfQotCi10ZW1wbGF0ZTx0eXBl
bmFtZSBCYXNlPiBpbmxpbmUgdHlwZW5hbWUgV2Vha0ltcGxBY2Nlc3NvcjxCYXNlLCBVbmtub3du
Pjo6R2V0VHlwZSBXZWFrSW1wbEFjY2Vzc29yPEJhc2UsIFVua25vd24+OjpnZXQoKSBjb25zdAot
ewotICAgIGlmICghc3RhdGljX2Nhc3Q8Y29uc3QgQmFzZSo+KHRoaXMpLT5tX2ltcGwgfHwgc3Rh
dGljX2Nhc3Q8Y29uc3QgQmFzZSo+KHRoaXMpLT5tX2ltcGwtPnN0YXRlKCkgIT0gV2Vha0ltcGw6
OkxpdmUpCi0gICAgICAgIHJldHVybiBHZXRUeXBlKCk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0
PGNvbnN0IEJhc2UqPih0aGlzKS0+bV9pbXBsLT5qc1ZhbHVlKCk7Ci19Ci0KIHRlbXBsYXRlPHR5
cGVuYW1lIFQ+IGlubGluZSBQYXNzV2VhazxUPjo6UGFzc1dlYWsoKQogICAgIDogbV9pbXBsKDAp
CiB7CkBAIC0xNDcsOCArMTE5LDExIEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBQYXNz
V2VhazxUPjoKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIFBhc3NXZWFrPFQ+OjpQ
YXNzV2VhayhKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIHR5cGVuYW1lIFBhc3NXZWFrPFQ+OjpH
ZXRUeXBlIGdldFR5cGUsIFdlYWtIYW5kbGVPd25lciogd2Vha093bmVyLCB2b2lkKiBjb250ZXh0
KQotICAgIDogbV9pbXBsKGdsb2JhbERhdGEuaGVhcC53ZWFrU2V0KCktPmFsbG9jYXRlKGdldFR5
cGUsIHdlYWtPd25lciwgY29udGV4dCkpCisgICAgOiBtX2ltcGwoMCkKIHsKKyAgICBpZiAoIWdl
dFR5cGUpCisgICAgICAgIHJldHVybjsKKyAgICBtX2ltcGwgPSBnbG9iYWxEYXRhLmhlYXAud2Vh
a1NldCgpLT5hbGxvY2F0ZShnZXRUeXBlLCB3ZWFrT3duZXIsIGNvbnRleHQpOwogfQogCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgUGFzc1dlYWs8VD46OlBhc3NXZWFrKGNvbnN0IFBhc3NX
ZWFrJiBvKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvV2Vhay5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1dlYWsuaAkocmV2aXNpb24gMTE1NDk1
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvV2Vhay5oCSh3b3JraW5nIGNvcHkpCkBA
IC00MCw3ICs0MCw3IEBAIHB1YmxpYzoKIAogICAgIFdlYWsoKTsKICAgICBXZWFrKHN0ZDo6bnVs
bHB0cl90KTsKLSAgICBXZWFrKEpTR2xvYmFsRGF0YSYsIEdldFR5cGUgPSBHZXRUeXBlKCksIFdl
YWtIYW5kbGVPd25lciogPSAwLCB2b2lkKiBjb250ZXh0ID0gMCk7CisgICAgV2VhayhKU0dsb2Jh
bERhdGEmLCBHZXRUeXBlLCBXZWFrSGFuZGxlT3duZXIqID0gMCwgdm9pZCogY29udGV4dCA9IDAp
OwogCiAgICAgZW51bSBIYXNoVGFibGVEZWxldGVkVmFsdWVUYWcgeyBIYXNoVGFibGVEZWxldGVk
VmFsdWUgfTsKICAgICBib29sIGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgY29uc3Q7CkBAIC03
OSw4ICs3OSwxMSBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgV2VhazxUPjo6V2VhCiB9
CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBXZWFrPFQ+OjpXZWFrKEpTR2xvYmFsRGF0
YSYgZ2xvYmFsRGF0YSwgdHlwZW5hbWUgV2VhazxUPjo6R2V0VHlwZSBnZXRUeXBlLCBXZWFrSGFu
ZGxlT3duZXIqIHdlYWtPd25lciwgdm9pZCogY29udGV4dCkKLSAgICA6IG1faW1wbChnbG9iYWxE
YXRhLmhlYXAud2Vha1NldCgpLT5hbGxvY2F0ZShnZXRUeXBlLCB3ZWFrT3duZXIsIGNvbnRleHQp
KQorICAgIDogbV9pbXBsKDApCiB7CisgICAgaWYgKCFnZXRUeXBlKQorICAgICAgICByZXR1cm47
CisgICAgbV9pbXBsID0gZ2xvYmFsRGF0YS5oZWFwLndlYWtTZXQoKS0+YWxsb2NhdGUoZ2V0VHlw
ZSwgd2Vha093bmVyLCBjb250ZXh0KTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5l
IGJvb2wgV2VhazxUPjo6aXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25zdApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvV2Vha0Jsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9XZWFrQmxvY2suY3BwCShyZXZpc2lvbiAxMTU0OTUpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9XZWFrQmxvY2suY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMDQsOSArMTA0LDYgQEAgdm9pZCBXZWFrQmxvY2s6OnZpc2l0TGl2ZVdlYWtJbXBscyhI
ZWFwUgogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgY29uc3QgSlNWYWx1ZSYganNW
YWx1ZSA9IHdlYWtJbXBsLT5qc1ZhbHVlKCk7Ci0gICAgICAgIGlmICghanNWYWx1ZSB8fCAhanNW
YWx1ZS5pc0NlbGwoKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCiAgICAgICAgIEpTQ2VsbCog
anNDZWxsID0ganNWYWx1ZS5hc0NlbGwoKTsKICAgICAgICAgaWYgKEhlYXA6OmlzTWFya2VkKGpz
Q2VsbCkpCiAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTEzNCw5ICsxMzEsNiBAQCB2b2lkIFdl
YWtCbG9jazo6dmlzaXREZWFkV2Vha0ltcGxzKEhlYXBSCiAgICAgICAgICAgICBjb250aW51ZTsK
IAogICAgICAgICBjb25zdCBKU1ZhbHVlJiBqc1ZhbHVlID0gd2Vha0ltcGwtPmpzVmFsdWUoKTsK
LSAgICAgICAgaWYgKCFqc1ZhbHVlIHx8ICFqc1ZhbHVlLmlzQ2VsbCgpKQotICAgICAgICAgICAg
Y29udGludWU7Ci0KICAgICAgICAgSlNDZWxsKiBqc0NlbGwgPSBqc1ZhbHVlLmFzQ2VsbCgpOwog
ICAgICAgICBpZiAoSGVhcDo6aXNNYXJrZWQoanNDZWxsKSkKICAgICAgICAgICAgIGNvbnRpbnVl
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvV2Vha0ltcGwuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9XZWFrSW1wbC5oCShyZXZpc2lvbiAxMTU0
OTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9XZWFrSW1wbC5oCSh3b3JraW5nIGNv
cHkpCkBAIC03Niw2ICs3Niw3IEBAIGlubGluZSBXZWFrSW1wbDo6V2Vha0ltcGwoSlNWYWx1ZSBq
c1ZhbHUKICAgICAsIG1fY29udGV4dChjb250ZXh0KQogewogICAgIEFTU0VSVChzdGF0ZSgpID09
IExpdmUpOworICAgIEFTU0VSVChtX2pzVmFsdWUgJiYgbV9qc1ZhbHVlLmlzQ2VsbCgpKTsKIH0K
IAogaW5saW5lIFdlYWtJbXBsOjpTdGF0ZSBXZWFrSW1wbDo6c3RhdGUoKQpJbmRleDogU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwkocmV2aXNpb24gMTE1NTI2KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMDQtMjcgIEdlb2ZmcmV5IEdhcmVuICA8Z2dh
cmVuQGFwcGxlLmNvbT4KKworICAgICAgICBPbmx5IGFsbG93IG5vbi1udWxsIHBvaW50ZXJzIGlu
IHRoZSBXZWFrU2V0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD04NTExOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogYnJpZGdlL2pzYy9CcmlkZ2VKU0MuY3BwOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6
SW5zdGFuY2U6Okluc3RhbmNlKTogRG9uJ3QgYWxsb2NhdGUgYSBXZWFrSW1wbCBqdXN0IHRvCisg
ICAgICAgIHN0b3JlIG51bGwuIFRoaXMgd2FzIG5lZWRsZXNzLCBhbmQgaXMgbm93IGEgY29tcGls
ZSBlcnJvci4gSW5zdGVhZCwKKyAgICAgICAgcmVseSBvbiB0aGUgZGVmYXVsdCBjb25zdHJ1Y3Rv
ciwgd2hpY2ggd2lsbCBwcm9kdWNlIGEgY2hlYXAgbnVsbC4KKwogMjAxMi0wNC0yNyAgTmF0IER1
Y2EgIDxuZHVjYUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgRXhwb3NlIGhpZ2gtcmVzb2x1dGlv
biBvbiByZXF1ZXN0QW5pbWF0aW9uRnJhbWUgY2FsbGJhY2sKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9qc2MvQnJpZGdlSlNDLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
cmlkZ2UvanNjL0JyaWRnZUpTQy5jcHAJKHJldmlzaW9uIDExNTQ5NSkKKysrIFNvdXJjZS9XZWJD
b3JlL2JyaWRnZS9qc2MvQnJpZGdlSlNDLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQsNyArNTQs
NiBAQCBBcnJheTo6fkFycmF5KCkKIAogSW5zdGFuY2U6Okluc3RhbmNlKFBhc3NSZWZQdHI8Um9v
dE9iamVjdD4gcm9vdE9iamVjdCkKICAgICA6IG1fcm9vdE9iamVjdChyb290T2JqZWN0KQotICAg
ICwgbV9ydW50aW1lT2JqZWN0KCpXZWJDb3JlOjpKU0RPTVdpbmRvd0Jhc2U6OmNvbW1vbkpTR2xv
YmFsRGF0YSgpKQogewogICAgIEFTU0VSVChtX3Jvb3RPYmplY3QpOwogfQo=
</data>
<flag name="review"
          id="144929"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>