<?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>47756</bug_id>
          
          <creation_ts>2010-10-15 17:02:07 -0700</creation_ts>
          <short_desc>Make a nullptr that works with OwnPtr and RefPtr</short_desc>
          <delta_ts>2011-01-03 13:14:34 -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>Web Template Framework</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>abarth</cc>
    
    <cc>andersca</cc>
    
    <cc>eric</cc>
    
    <cc>kenneth</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>295024</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-10-15 17:02:07 -0700</bug_when>
    <thetext>Make a nullptr that works with OwnPtr and RefPtr</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>295025</commentid>
    <comment_count>1</comment_count>
      <attachid>70924</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-10-15 17:03:55 -0700</bug_when>
    <thetext>Created attachment 70924
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>295027</commentid>
    <comment_count>2</comment_count>
      <attachid>70924</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2010-10-15 17:07:39 -0700</bug_when>
    <thetext>Comment on attachment 70924
Patch

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

&gt; JavaScriptCore/wtf/NullPtr.h:34
&gt; +class nullptr_t { };

Would it be better to #ifndef nullptr_t here, to avoid overriding something if it is provided by the compiler?

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>295029</commentid>
    <comment_count>3</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2010-10-15 17:11:15 -0700</bug_when>
    <thetext>View in context: https://bugs.webkit.org/attachment.cgi?id=70924&amp;action=review

&gt; JavaScriptCore/wtf/NullPtr.h:35
&gt; +extern nullptr_t nullptr;

To better match the C++0x standard, nullptr_t should be in the std namespace.

&gt; JavaScriptCore/wtf/OwnArrayPtr.h:77
&gt; +    OwnArrayPtr&amp; operator=(const nullptr_t&amp;) { clear(); return *this; }

It would be better if nullptr_t was always passed by value. (For example, the Itanium ABI just ignores empty classes when they&apos;re passed by value).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>295569</commentid>
    <comment_count>4</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-10-18 09:49:49 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Would it be better to #ifndef nullptr_t here, to avoid overriding something if it is provided by the compiler?

If nullptr_t was a macro, then yes. But it’s not.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>295571</commentid>
    <comment_count>5</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-10-18 09:50:11 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; To better match the C++0x standard, nullptr_t should be in the std namespace.

Fixed.

&gt; It would be better if nullptr_t was always passed by value. (For example, the Itanium ABI just ignores empty classes when they&apos;re passed by value).

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>295593</commentid>
    <comment_count>6</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-10-18 10:24:19 -0700</bug_when>
    <thetext>Committed r69970: &lt;http://trac.webkit.org/changeset/69970&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>295623</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-10-18 11:06:29 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/69970 might have broken Qt Windows 32-bit Release</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>328728</commentid>
    <comment_count>8</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2011-01-03 13:12:10 -0800</bug_when>
    <thetext>http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2431.pdf details a different enumation of nullptr:

const // this is a const object...
class {
public:
  template&lt;class T&gt; // convertible to any type
    operator T*() const // of null non-member
{ return 0; } // pointer...
  template&lt;class C, class T&gt; // or any type of null
    operator T C::*() const // member pointer...
{ return 0; }
private:
  void operator&amp;() const; // whose address can&apos;t be taken
} nullptr = {}; // and whose name is nullptr

Does your implementation work in all these situations?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>328729</commentid>
    <comment_count>9</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-01-03 13:13:52 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; Does your implementation work in all these situations?

No. I don’t think it’s possible to make one that would.

This implementation lets us use nullptr in a limited way in the long time between now and when all compilers used with WebKit have nullptr support.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>328730</commentid>
    <comment_count>10</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-01-03 13:14:34 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; (In reply to comment #8)
&gt; &gt; Does your implementation work in all these situations?
&gt; 
&gt; No. I don’t think it’s possible to make one that would.

Oops, I misunderstood your question.

I think we can definitely put the fancier nullptr_t and nullptr in.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>70924</attachid>
            <date>2010-10-15 17:03:55 -0700</date>
            <delta_ts>2010-10-15 17:07:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-47756-20101015170354.patch</filename>
            <type>text/plain</type>
            <size>11559</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDY5ODk2KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTAtMTAtMTUgIERhcmluIEFk
bGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIE1ha2UgYSBudWxscHRyIHRoYXQgd29ya3Mgd2l0aCBPd25QdHIgYW5k
IFJlZlB0cgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NDc3NTYKKworICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6IEFkZGVkIE51bGxQdHIuaC4KKworICAgICAgICAqIHd0Zi9OdWxsUHRyLmg6IEFkZGVkLgor
CisgICAgICAgICogd3RmL093bkFycmF5UHRyLmg6IEFkZCBhbiBvdmVybG9hZCBvZiA9IHRha2lu
ZyBudWxscHRyLgorICAgICAgICAqIHd0Zi9Pd25QdHIuaDogRGl0dG8uCisgICAgICAgICogd3Rm
L1Bhc3NPd25BcnJheVB0ci5oOiBEaXR0by4KKyAgICAgICAgKiB3dGYvUGFzc093blB0ci5oOiBE
aXR0by4KKyAgICAgICAgKiB3dGYvUGFzc1JlZlB0ci5oOiBEaXR0by4KKyAgICAgICAgKiB3dGYv
UmVmUHRyLmg6IERpdHRvLgorICAgICAgICAqIHd0Zi9SZXRhaW5QdHIuaDogRGl0dG8uCisKIDIw
MTAtMTAtMTUgIE5pa29sYXMgWmltbWVybWFubiAgPG56aW1tZXJtYW5uQHJpbS5jb20+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgRGlyayBTY2h1bHplLgpJbmRleDogSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZp
c2lvbiA2OTg5NCkKKysrIEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTI3Nyw2ICsyNzcsNyBAQAogCQk5MzJG
NUJFQTA4MjJBMUM3MDA3MzY5NzUgLyogSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrIGluIEZyYW1l
d29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTMyRjVCRDkwODIyQTFD
NzAwNzM2OTc1IC8qIEphdmFTY3JpcHRDb3JlLmZyYW1ld29yayAqLzsgfTsKIAkJOTMzMDQwMDQw
RTZBNzQ5NDAwNzg2RTZBIC8qIFNtYWxsU3RyaW5ncy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTMzMDNGRUEwRTZBNzJDMDAwNzg2RTZBIC8qIFNtYWxs
U3RyaW5ncy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTkzMzA0MDJDMEU2QTc2NDAwMDc4NkU2QSAvKiBTbWFsbFN0cmluZ3MuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTMzMDNGRTgwRTZBNzJCNTAw
Nzg2RTZBIC8qIFNtYWxsU3RyaW5ncy5jcHAgKi87IH07CisJCTkzM0Y1Q0RDMTI2OTIyOUIwMDQ5
MTkxRSAvKiBOdWxsUHRyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA5MzNGNUNEQjEyNjkyMjY5MDA0OTE5MUUgLyogTnVsbFB0ci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTkzNzAxMzQ4MENBOTdFMEUw
MEZBMTREMyAvKiBwY3JlX3VjcF9zZWFyY2hmdW5jcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzcwMTM0NzBDQTk3RTBFMDBGQTE0RDMgLyogcGNy
ZV91Y3Bfc2VhcmNoZnVuY3MuY3BwICovOyBzZXR0aW5ncyA9IHtDT01QSUxFUl9GTEFHUyA9ICIt
V25vLXNpZ24tY29tcGFyZSI7IH07IH07CiAJCTkzRTI2QkQ0MDhCMTUxNDEwMEY4NTIyNiAvKiBw
Y3JlX3hjbGFzcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5M0UyNkJEMzA4QjE1MTQxMDBGODUyMjYgLyogcGNyZV94Y2xhc3MuY3BwICovOyB9Owog
CQk5NTM0QUFGQjBFNUI3QTk2MDBCOEE0NUIgLyogSlNQcm9maWxlclByaXZhdGUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk1MkM2M0FDMEU0Nzc3RDYw
MEMxMzkzNiAvKiBKU1Byb2ZpbGVyUHJpdmF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CkBAIC04OTEsNiArODkyLDcgQEAKIAkJOTMzMDNGRUEwRTZB
NzJDMDAwNzg2RTZBIC8qIFNtYWxsU3RyaW5ncy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBTbWFsbFN0cmluZ3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTMz
QTM0OUEwMzhBRTdDNjAwODYzNUNFIC8qIElkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgfTsKIAkJOTMzQTM0OUQwMzhBRTgwRjAwODYzNUNF
IC8qIElkZW50aWZpZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBJZGVudGlmaWVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
dGFiV2lkdGggPSA4OyB9OworCQk5MzNGNUNEQjEyNjkyMjY5MDA0OTE5MUUgLyogTnVsbFB0ci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOdWxsUHRyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTkzNUFGNDY5MDlFOUQ5REIwMEFDRDFEOCAvKiBGb3J3YXJkLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZvcndhcmQuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJOTM1QUY0NkIwOUU5RDlEQjAwQUNEMUQ4IC8qIFVudXNlZFBhcmFt
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVudXNlZFBhcmFtLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzNzAxMzQ3MENBOTdFMEUwMEZBMTREMyAvKiBwY3Jl
X3VjcF9zZWFyY2hmdW5jcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBwY3JlX3VjcF9zZWFyY2hmdW5jcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC0xNTE3LDYgKzE1MTksNyBAQAogCQkJCTY1RTFBMkY0MTIyQjg4MEQwMEIyNjA5NyAvKiBOb25D
b3B5aW5nU29ydC5oICovLAogCQkJCTkzMDNGNTY5MDk5MTE5MDAwMEFENzFCOCAvKiBOb25jb3B5
YWJsZS5oICovLAogCQkJCUMwQTI3MjNGMEU1MDlGMUUwMEU5NkUxNSAvKiBOb3RGb3VuZC5oICov
LAorCQkJCTkzM0Y1Q0RCMTI2OTIyNjkwMDQ5MTkxRSAvKiBOdWxsUHRyLmggKi8sCiAJCQkJOTMw
M0Y1QTQwOTkxMUE1ODAwQUQ3MUI4IC8qIE93bkFycmF5UHRyLmggKi8sCiAJCQkJQkNGQkU2OTcx
MjI1NjFEMjAwMzA5RTlEIC8qIE93bkFycmF5UHRyQ29tbW9uLmggKi8sCiAJCQkJMEJERkZBRDEw
RkM2MTZFQzAwRDY5RUY0IC8qIE93bkZhc3RNYWxsb2NQdHIuaCAqLywKQEAgLTIzNDIsNiArMjM0
NSw3IEBACiAJCQkJOTcxNEFGNjAxMjJGMzIwNzAwOTJEOUY1IC8qIFVSTFN0cmluZy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJOTAyMTNFM0UxMjNBNDBDMjAwRDQyMkYzIC8qIE1lbW9yeVN0YXRpc3Rp
Y3MuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3MzBCNjEyMTI1MDA2OEYwMDlEMjVCMSAvKiBTdHJp
Y3RFdmFsQWN0aXZhdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTMzRjVDREMxMjY5MjI5QjAw
NDkxOTFFIC8qIE51bGxQdHIuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JE
ZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDogSmF2YVNjcmlwdENvcmUv
d3RmL051bGxQdHIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS93dGYvTnVsbFB0ci5o
CShyZXZpc2lvbiAwKQorKysgSmF2YVNjcmlwdENvcmUvd3RmL051bGxQdHIuaAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSwzNyBAQAorLyoKKworQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKworUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cittb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKK2FyZSBtZXQ6Cisx
LiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKworVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCitFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECitXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFCitESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKK0RJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7CitMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KK0FOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCiso
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUworU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyovCisKKyNpZm5kZWYgTnVsbFB0cl9oCisjZGVm
aW5lIE51bGxQdHJfaAorCisvLyBGb3Igb2xkZXIgY29tcGlsZXJzLCB0aGlzIGFkZHMgdGhlIG5l
dyBudWxscHRyX3QgdHlwZSBhbmQgbnVsbHB0ciBvYmplY3QuCisvLyBTaW5jZSB0aGVzZSBhcmUg
YnVpbHQgaW50byB0aGUgbGFuZ3VhZ2UgYW5kIGNvbXBpbGVyIGluIG5ld2VyIGNvbXBpbGVycywK
Ky8vIHRoZXkgYXJlIGRlZmluZWQgb3V0c2lkZSBhbnkgbmFtZXNwYWNlLgorCitjbGFzcyBudWxs
cHRyX3QgeyB9OworZXh0ZXJuIG51bGxwdHJfdCBudWxscHRyOworCisjZW5kaWYKClByb3BlcnR5
IGNoYW5nZXMgb246IEphdmFTY3JpcHRDb3JlL3d0Zi9OdWxsUHRyLmgKX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRl
ZDogc3ZuOmVvbC1zdHlsZQogICArIG5hdGl2ZQoKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3d0Zi9P
d25BcnJheVB0ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3d0Zi9Pd25BcnJheVB0
ci5oCShyZXZpc2lvbiA2OTg5NCkKKysrIEphdmFTY3JpcHRDb3JlL3d0Zi9Pd25BcnJheVB0ci5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yMyw2ICsyMyw3IEBACiAKICNpbmNsdWRlICJBc3NlcnRpb25z
LmgiCiAjaW5jbHVkZSAiTm9uY29weWFibGUuaCIKKyNpbmNsdWRlICJOdWxsUHRyLmgiCiAjaW5j
bHVkZSAiT3duQXJyYXlQdHJDb21tb24uaCIKICNpbmNsdWRlIDxhbGdvcml0aG0+CiAKQEAgLTcz
LDYgKzc0LDcgQEAgcHVibGljOgogI2VuZGlmCiAKICAgICBPd25BcnJheVB0ciYgb3BlcmF0b3I9
KGNvbnN0IFBhc3NPd25BcnJheVB0cjxUPiYpOworICAgIE93bkFycmF5UHRyJiBvcGVyYXRvcj0o
Y29uc3QgbnVsbHB0cl90JikgeyBjbGVhcigpOyByZXR1cm4gKnRoaXM7IH0KICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBVPiBPd25BcnJheVB0ciYgb3BlcmF0b3I9KGNvbnN0IFBhc3NPd25BcnJheVB0
cjxVPiYpOwogCiAgICAgdm9pZCBzd2FwKE93bkFycmF5UHRyJiBvKSB7IHN0ZDo6c3dhcChtX3B0
ciwgby5tX3B0cik7IH0KSW5kZXg6IEphdmFTY3JpcHRDb3JlL3d0Zi9Pd25QdHIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS93dGYvT3duUHRyLmgJKHJldmlzaW9uIDY5ODk0KQorKysg
SmF2YVNjcmlwdENvcmUvd3RmL093blB0ci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw2ICsyMyw3
IEBACiAKICNpbmNsdWRlICJBc3NlcnRpb25zLmgiCiAjaW5jbHVkZSAiTm9uY29weWFibGUuaCIK
KyNpbmNsdWRlICJOdWxsUHRyLmgiCiAjaW5jbHVkZSAiT3duUHRyQ29tbW9uLmgiCiAjaW5jbHVk
ZSAiVHlwZVRyYWl0cy5oIgogI2luY2x1ZGUgPGFsZ29yaXRobT4KQEAgLTcyLDYgKzczLDcgQEAg
bmFtZXNwYWNlIFdURiB7CiAgICAgICAgIG9wZXJhdG9yIFVuc3BlY2lmaWVkQm9vbFR5cGUoKSBj
b25zdCB7IHJldHVybiBtX3B0ciA/ICZPd25QdHI6Om1fcHRyIDogMDsgfQogCiAgICAgICAgIE93
blB0ciYgb3BlcmF0b3I9KGNvbnN0IFBhc3NPd25QdHI8VD4mKTsKKyAgICAgICAgT3duUHRyJiBv
cGVyYXRvcj0oY29uc3QgbnVsbHB0cl90JikgeyBjbGVhcigpOyByZXR1cm4gKnRoaXM7IH0KICAg
ICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gT3duUHRyJiBvcGVyYXRvcj0oY29uc3QgUGFzc093
blB0cjxVPiYpOwogCiAgICAgICAgIHZvaWQgc3dhcChPd25QdHImIG8pIHsgc3RkOjpzd2FwKG1f
cHRyLCBvLm1fcHRyKTsgfQpJbmRleDogSmF2YVNjcmlwdENvcmUvd3RmL1Bhc3NPd25BcnJheVB0
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3d0Zi9QYXNzT3duQXJyYXlQdHIuaAko
cmV2aXNpb24gNjk4OTQpCisrKyBKYXZhU2NyaXB0Q29yZS93dGYvUGFzc093bkFycmF5UHRyLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKICNkZWZpbmUgV1RGX1Bhc3NPd25BcnJh
eVB0cl9oCiAKICNpbmNsdWRlICJBc3NlcnRpb25zLmgiCisjaW5jbHVkZSAiTnVsbFB0ci5oIgog
I2luY2x1ZGUgIk93bkFycmF5UHRyQ29tbW9uLmgiCiAjaW5jbHVkZSAiVHlwZVRyYWl0cy5oIgog
CkBAIC03Miw2ICs3Myw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAgUGFzc093bkFycmF5UHRy
JiBvcGVyYXRvcj0oY29uc3QgUGFzc093bkFycmF5UHRyPFQ+Jik7CisgICAgUGFzc093bkFycmF5
UHRyJiBvcGVyYXRvcj0oY29uc3QgbnVsbHB0cl90JikgeyBjbGVhcigpOyByZXR1cm4gKnRoaXM7
IH0KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBQYXNzT3duQXJyYXlQdHImIG9wZXJhdG9yPShj
b25zdCBQYXNzT3duQXJyYXlQdHI8VT4mKTsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IGZy
aWVuZCBQYXNzT3duQXJyYXlQdHI8VT4gYWRvcHRBcnJheVB0cihVKik7CkluZGV4OiBKYXZhU2Ny
aXB0Q29yZS93dGYvUGFzc093blB0ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3d0
Zi9QYXNzT3duUHRyLmgJKHJldmlzaW9uIDY5ODk0KQorKysgSmF2YVNjcmlwdENvcmUvd3RmL1Bh
c3NPd25QdHIuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogI2RlZmluZSBXVEZf
UGFzc093blB0cl9oCiAKICNpbmNsdWRlICJBc3NlcnRpb25zLmgiCisjaW5jbHVkZSAiTnVsbFB0
ci5oIgogI2luY2x1ZGUgIk93blB0ckNvbW1vbi5oIgogI2luY2x1ZGUgIlR5cGVUcmFpdHMuaCIK
IApAQCAtNzEsNiArNzIsNyBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgb3BlcmF0b3IgVW5z
cGVjaWZpZWRCb29sVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHRyID8gJlBhc3NPd25QdHI6Om1f
cHRyIDogMDsgfQogCiAgICAgICAgIFBhc3NPd25QdHImIG9wZXJhdG9yPShjb25zdCBQYXNzT3du
UHRyPFQ+Jik7CisgICAgICAgIFBhc3NPd25QdHImIG9wZXJhdG9yPShjb25zdCBudWxscHRyX3Qm
KSB7IGNsZWFyKCk7IHJldHVybiAqdGhpczsgfQogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBV
PiBQYXNzT3duUHRyJiBvcGVyYXRvcj0oY29uc3QgUGFzc093blB0cjxVPiYpOwogCiAgICAgICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFU+IGZyaWVuZCBQYXNzT3duUHRyPFU+IGFkb3B0UHRyKFUqKTsK
SW5kZXg6IEphdmFTY3JpcHRDb3JlL3d0Zi9QYXNzUmVmUHRyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2
YVNjcmlwdENvcmUvd3RmL1Bhc3NSZWZQdHIuaAkocmV2aXNpb24gNjk4OTQpCisrKyBKYXZhU2Ny
aXB0Q29yZS93dGYvUGFzc1JlZlB0ci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMiw2ICsyMiw3IEBA
CiAjZGVmaW5lIFdURl9QYXNzUmVmUHRyX2gKIAogI2luY2x1ZGUgIkFsd2F5c0lubGluZS5oIgor
I2luY2x1ZGUgIk51bGxQdHIuaCIKIAogbmFtZXNwYWNlIFdURiB7CiAKQEAgLTkwLDYgKzkxLDcg
QEAgbmFtZXNwYWNlIFdURiB7CiAKICAgICAgICAgUGFzc1JlZlB0ciYgb3BlcmF0b3I9KFQqKTsK
ICAgICAgICAgUGFzc1JlZlB0ciYgb3BlcmF0b3I9KGNvbnN0IFBhc3NSZWZQdHImKTsKKyAgICAg
ICAgUGFzc1JlZlB0ciYgb3BlcmF0b3I9KGNvbnN0IG51bGxwdHJfdCYpIHsgY2xlYXIoKTsgcmV0
dXJuICp0aGlzOyB9CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IFBhc3NSZWZQdHImIG9w
ZXJhdG9yPShjb25zdCBQYXNzUmVmUHRyPFU+Jik7CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFU+IFBhc3NSZWZQdHImIG9wZXJhdG9yPShjb25zdCBSZWZQdHI8VT4mKTsKIApJbmRleDogSmF2
YVNjcmlwdENvcmUvd3RmL1JlZlB0ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3d0
Zi9SZWZQdHIuaAkocmV2aXNpb24gNjk4OTQpCisrKyBKYXZhU2NyaXB0Q29yZS93dGYvUmVmUHRy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTI0LDcgKzI0LDYgQEAKICNkZWZpbmUgV1RGX1JlZlB0cl9o
CiAKICNpbmNsdWRlIDxhbGdvcml0aG0+Ci0jaW5jbHVkZSAiQWx3YXlzSW5saW5lLmgiCiAjaW5j
bHVkZSAiRmFzdEFsbG9jQmFzZS5oIgogI2luY2x1ZGUgIlBhc3NSZWZQdHIuaCIKIApAQCAtNzUs
NiArNzQsNyBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgUmVmUHRyJiBvcGVyYXRvcj0oVCop
OwogICAgICAgICBSZWZQdHImIG9wZXJhdG9yPShjb25zdCBQYXNzUmVmUHRyPFQ+Jik7CiAgICAg
ICAgIFJlZlB0ciYgb3BlcmF0b3I9KGNvbnN0IE5vbk51bGxQYXNzUmVmUHRyPFQ+Jik7CisgICAg
ICAgIFJlZlB0ciYgb3BlcmF0b3I9KGNvbnN0IG51bGxwdHJfdCYpIHsgY2xlYXIoKTsgcmV0dXJu
ICp0aGlzOyB9CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IFJlZlB0ciYgb3BlcmF0b3I9
KGNvbnN0IFJlZlB0cjxVPiYpOwogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBSZWZQdHIm
IG9wZXJhdG9yPShjb25zdCBQYXNzUmVmUHRyPFU+Jik7CiAgICAgICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFU+IFJlZlB0ciYgb3BlcmF0b3I9KGNvbnN0IE5vbk51bGxQYXNzUmVmUHRyPFU+Jik7Cklu
ZGV4OiBKYXZhU2NyaXB0Q29yZS93dGYvUmV0YWluUHRyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNj
cmlwdENvcmUvd3RmL1JldGFpblB0ci5oCShyZXZpc2lvbiA2OTg5NCkKKysrIEphdmFTY3JpcHRD
b3JlL3d0Zi9SZXRhaW5QdHIuaAkod29ya2luZyBjb3B5KQpAQCAtMjIsNiArMjIsNyBAQAogI2Rl
ZmluZSBSZXRhaW5QdHJfaAogCiAjaW5jbHVkZSAiSGFzaFRyYWl0cy5oIgorI2luY2x1ZGUgIk51
bGxQdHIuaCIKICNpbmNsdWRlICJUeXBlVHJhaXRzLmgiCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgog
I2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NvcmVGb3VuZGF0aW9uLmg+CkBAIC04Niw2ICs4Nyw3
IEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBSZXRhaW5Q
dHImIG9wZXJhdG9yPShjb25zdCBSZXRhaW5QdHI8VT4mKTsKICAgICAgICAgUmV0YWluUHRyJiBv
cGVyYXRvcj0oUHRyVHlwZSk7CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IFJldGFpblB0
ciYgb3BlcmF0b3I9KFUqKTsKKyAgICAgICAgUmV0YWluUHRyJiBvcGVyYXRvcj0oY29uc3QgbnVs
bHB0cl90JikgeyBjbGVhcigpOyByZXR1cm4gKnRoaXM7IH0KIAogICAgICAgICB2b2lkIGFkb3B0
Q0YoUHRyVHlwZSk7CiAgICAgICAgIHZvaWQgYWRvcHROUyhQdHJUeXBlKTsK
</data>
<flag name="review"
          id="60859"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>