<?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>54029</bug_id>
          
          <creation_ts>2011-02-08 13:16:50 -0800</creation_ts>
          <short_desc>Give each MarkedBlock enough mark bits to cover the whole block</short_desc>
          <delta_ts>2011-02-08 15:03:16 -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>Other</rep_platform>
          <op_sys>OS X 10.5</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>
          <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>347629</commentid>
    <comment_count>0</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-02-08 13:16:50 -0800</bug_when>
    <thetext>Give each MarkedBlock enough mark bits to cover the whole block</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>347635</commentid>
    <comment_count>1</comment_count>
      <attachid>81681</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-02-08 13:22:28 -0800</bug_when>
    <thetext>Created attachment 81681
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>347637</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-02-08 13:24:27 -0800</bug_when>
    <thetext>Attachment 81681 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source...&quot; exit_code: 1

Source/JavaScriptCore/runtime/MarkedBlock.h:46:  BITS_PER_BLOCK is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/runtime/MarkedBlock.h:47:  CELLS_PER_BLOCK is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Total errors found: 2 in 3 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>347638</commentid>
    <comment_count>3</comment_count>
      <attachid>81681</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-02-08 13:29:48 -0800</bug_when>
    <thetext>Comment on attachment 81681
Patch

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

&gt;&gt; Source/JavaScriptCore/runtime/MarkedBlock.h:46
&gt;&gt; +    const size_t BITS_PER_BLOCK = BLOCK_SIZE / CELL_SIZE;
&gt; 
&gt; BITS_PER_BLOCK is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]

Sure would be nice to fix these constants at some point.

&gt; Source/JavaScriptCore/runtime/MarkedBlock.h:65
&gt; -        size_t cellNumber(const JSCell*);
&gt; -        bool isMarked(const JSCell*);
&gt; -        bool testAndSetMarked(const JSCell*);
&gt; -        void setMarked(const JSCell*);
&gt; +        size_t cellNumber(const void*);
&gt; +        bool isMarked(const void*);
&gt; +        bool testAndSetMarked(const void*);
&gt; +        void setMarked(const void*);

Why this change? Change log does not say why.

&gt; Source/JavaScriptCore/runtime/MarkedBlock.h:112
&gt;      inline bool MarkedBlock::isPossibleCell(const void* p)
&gt;      {
&gt; -        return isCellAligned(p) &amp;&amp; p;
&gt; +        return isCellAligned(p);
&gt;      }

Do we even need an isPossibleCell function any more? Maybe calling isCellAligned directly would be better?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>347717</commentid>
    <comment_count>4</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-02-08 14:56:42 -0800</bug_when>
    <thetext>&gt; &gt;&gt; Source/JavaScriptCore/runtime/MarkedBlock.h:46
&gt; &gt;&gt; +    const size_t BITS_PER_BLOCK = BLOCK_SIZE / CELL_SIZE;
&gt; &gt; 
&gt; &gt; BITS_PER_BLOCK is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
&gt; 
&gt; Sure would be nice to fix these constants at some point.

Indeed. I&apos;ve been ignoring them for now because in the near future most of these constants will be gone.

&gt; &gt; Source/JavaScriptCore/runtime/MarkedBlock.h:65
&gt; &gt; -        size_t cellNumber(const JSCell*);
&gt; &gt; -        bool isMarked(const JSCell*);
&gt; &gt; -        bool testAndSetMarked(const JSCell*);
&gt; &gt; -        void setMarked(const JSCell*);
&gt; &gt; +        size_t cellNumber(const void*);
&gt; &gt; +        bool isMarked(const void*);
&gt; &gt; +        bool testAndSetMarked(const void*);
&gt; &gt; +        void setMarked(const void*);
&gt; 
&gt; Why this change? Change log does not say why.

I&apos;ll add a comment.

&gt; &gt; Source/JavaScriptCore/runtime/MarkedBlock.h:112
&gt; &gt;      inline bool MarkedBlock::isPossibleCell(const void* p)
&gt; &gt;      {
&gt; &gt; -        return isCellAligned(p) &amp;&amp; p;
&gt; &gt; +        return isCellAligned(p);
&gt; &gt;      }
&gt; 
&gt; Do we even need an isPossibleCell function any more? Maybe calling isCellAligned directly would be better?

Fixed in final patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>347725</commentid>
    <comment_count>5</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-02-08 15:03:16 -0800</bug_when>
    <thetext>Committed r77977: &lt;http://trac.webkit.org/changeset/77977&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>81681</attachid>
            <date>2011-02-08 13:22:28 -0800</date>
            <delta_ts>2011-02-08 13:29:48 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-54029-20110208132227.patch</filename>
            <type>text/plain</type>
            <size>7041</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gNzc5NjcpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzAgQEAK
KzIwMTEtMDItMDggIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBHaXZlIGVhY2ggTWFya2Vk
QmxvY2sgZW5vdWdoIG1hcmsgYml0cyB0byBjb3ZlciB0aGUgd2hvbGUgYmxvY2sKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU0MDI5CisgICAgICAgIAor
ICAgICAgICBTdW5TcGlkZXIgcmVwb3J0cyBubyBjaGFuZ2UuCisKKyAgICAgICAgVGhpcyBzaW1w
bGlmaWVzIGFjY2VzcyB0byBtYXJrIGJpdHMsIHNpbmNlIGFueSBjZWxsLWFsaWduZWQgcG9pbnRl
cgorICAgICAgICBpbnRvIGEgYmxvY2sgbm93IGhhcyBhIHZhbGlkIG1hcmsgYml0IHRvIHRlc3Qu
CisgICAgICAgIAorICAgICAgICAqIHJ1bnRpbWUvTWFya2VkQmxvY2suaDogQ2hhbmdlZCBDRUxM
U19QRVJfQkxPQ0sgdG8gYWNjb3VudCBmb3IgdGhlIGV4dHJhCisgICAgICAgIG1hcmsgYml0cy4g
VGhpcyBoYXBwZW5zIG5vdCB0byBjaGFuZ2UgaXRzIGFjdHVhbCB2YWx1ZS4KKyAgICAgICAgKEpT
Qzo6TWFya2VkQmxvY2s6OmNlbGxOdW1iZXIpOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6
aXNNYXJrZWQpOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6dGVzdEFuZFNldE1hcmtlZCk6
CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpzZXRNYXJrZWQpOiBTcHJlYWQgdGhlIGNvbnN0
IGRpc2Vhc2UgYSBiaXQuCisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjppc1Bvc3NpYmxlQ2Vs
bCk6IFJlbW92ZWQgYSBudWxsIGNoZWNrLiBXZSBub3cgY29uc2lkZXIKKyAgICAgICAgdGhlIG51
bGwgcG9pbnRlciB0byBiZSBhIHBvc3NpYmxlIGNlbGwgd2l0aCBhIDAgKGltcG9zc2libGUpIGJs
b2NrLiBUaGlzCisgICAgICAgIHJlbW92ZXMgYSBudWxsIGNoZWNrIGZyb20gbWFya2luZy4KKwor
ICAgICAgICAqIHJ1bnRpbWUvTWFya2VkU3BhY2UuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvTWFy
a2VkU3BhY2UuaDoKKyAgICAgICAgKEpTQzo6TWFya2VkU3BhY2U6OmNvbnRhaW5zKTogU2ltcGxp
ZmllZCB0aGUgY29udGFpbnMgY2hlY2ssIGFuZCBpbmxpbmVkCisgICAgICAgIHRoZSB3aG9sZSB0
aGluZywgbm93IHRoYXQgaXQncyBzbyBzaW1wbGUuCisKIDIwMTEtMDItMDggIEJhbGF6cyBLZWxl
bWVuICA8a2JhbGF6c0B3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFuZHJlYXMg
S2xpbmcuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXJrZWRCbG9jay5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcmtlZEJsb2Nr
LmgJKHJldmlzaW9uIDc3ODUyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFy
a2VkQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNiBAQAogbmFtZXNwYWNlIEpT
QyB7CiAKICAgICBjbGFzcyBIZWFwOwotICAgIGNsYXNzIEpTQ2VsbDsKIAogI2lmIE9TKFdJTkNF
KSB8fCBPUyhTWU1CSUFOKSB8fCBQTEFURk9STShCUkVXTVApCiAgICAgY29uc3Qgc2l6ZV90IEJM
T0NLX1NJWkUgPSA2NCAqIDEwMjQ7IC8vIDY0awpAQCAtNDQsNyArNDMsOCBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICBjb25zdCBzaXplX3QgU01BTExfQ0VMTF9TSVpFID0gQ0VMTF9TSVpFIC8gMjsK
ICAgICBjb25zdCBzaXplX3QgQ0VMTF9NQVNLID0gQ0VMTF9TSVpFIC0gMTsKICAgICBjb25zdCBz
aXplX3QgQ0VMTF9BTElHTl9NQVNLID0gfkNFTExfTUFTSzsKLSAgICBjb25zdCBzaXplX3QgQ0VM
TFNfUEVSX0JMT0NLID0gKEJMT0NLX1NJWkUgLSBzaXplb2YoSGVhcCopKSAqIDggKiBDRUxMX1NJ
WkUgLyAoOCAqIENFTExfU0laRSArIDEpIC8gQ0VMTF9TSVpFOyAvLyBvbmUgYml0bWFwIGJ5dGUg
Y2FuIHJlcHJlc2VudCA4IGNlbGxzLgorICAgIGNvbnN0IHNpemVfdCBCSVRTX1BFUl9CTE9DSyA9
IEJMT0NLX1NJWkUgLyBDRUxMX1NJWkU7CisgICAgY29uc3Qgc2l6ZV90IENFTExTX1BFUl9CTE9D
SyA9IChCTE9DS19TSVpFIC0gc2l6ZW9mKEhlYXAqKSAtIHNpemVvZihXVEY6OkJpdG1hcDxCSVRT
X1BFUl9CTE9DSz4pKSAvIENFTExfU0laRTsgLy8gRGl2aXNpb24gcm91bmRzIGRvd24gaW50ZW50
aW9uYWxseS4KICAgICAKICAgICBzdHJ1Y3QgQ29sbGVjdG9yQ2VsbCB7CiAgICAgICAgIEZpeGVk
QXJyYXk8ZG91YmxlLCBDRUxMX0FSUkFZX0xFTkdUSD4gbWVtb3J5OwpAQCAtNTksMTMgKzU5LDEz
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgYm9vbCBpc1Bvc3NpYmxlQ2VsbChj
b25zdCB2b2lkKik7CiAgICAgICAgIHN0YXRpYyBNYXJrZWRCbG9jayogYmxvY2tGb3IoY29uc3Qg
dm9pZCopOwogCi0gICAgICAgIHNpemVfdCBjZWxsTnVtYmVyKGNvbnN0IEpTQ2VsbCopOwotICAg
ICAgICBib29sIGlzTWFya2VkKGNvbnN0IEpTQ2VsbCopOwotICAgICAgICBib29sIHRlc3RBbmRT
ZXRNYXJrZWQoY29uc3QgSlNDZWxsKik7Ci0gICAgICAgIHZvaWQgc2V0TWFya2VkKGNvbnN0IEpT
Q2VsbCopOworICAgICAgICBzaXplX3QgY2VsbE51bWJlcihjb25zdCB2b2lkKik7CisgICAgICAg
IGJvb2wgaXNNYXJrZWQoY29uc3Qgdm9pZCopOworICAgICAgICBib29sIHRlc3RBbmRTZXRNYXJr
ZWQoY29uc3Qgdm9pZCopOworICAgICAgICB2b2lkIHNldE1hcmtlZChjb25zdCB2b2lkKik7CiAK
ICAgICAgICAgRml4ZWRBcnJheTxDb2xsZWN0b3JDZWxsLCBDRUxMU19QRVJfQkxPQ0s+IGNlbGxz
OwotICAgICAgICBXVEY6OkJpdG1hcDxDRUxMU19QRVJfQkxPQ0s+IG1hcmtlZDsKKyAgICAgICAg
V1RGOjpCaXRtYXA8QklUU19QRVJfQkxPQ0s+IG1hcmtlZDsKICAgICAgICAgSGVhcCogaGVhcDsK
ICAgICB9OwogCkBAIC04MSwyMiArODEsMjIgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHJl
dHVybiByZWludGVycHJldF9jYXN0PE1hcmtlZEJsb2NrKj4ocmVpbnRlcnByZXRfY2FzdDx1aW50
cHRyX3Q+KHApICYgQkxPQ0tfTUFTSyk7CiAgICAgfQogCi0gICAgaW5saW5lIHNpemVfdCBNYXJr
ZWRCbG9jazo6Y2VsbE51bWJlcihjb25zdCBKU0NlbGwqIGNlbGwpCisgICAgaW5saW5lIHNpemVf
dCBNYXJrZWRCbG9jazo6Y2VsbE51bWJlcihjb25zdCB2b2lkKiBjZWxsKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIChyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oY2VsbCkgJiBCTE9DS19PRkZT
RVRfTUFTSykgLyBDRUxMX1NJWkU7CiAgICAgfQogCi0gICAgaW5saW5lIGJvb2wgTWFya2VkQmxv
Y2s6OmlzTWFya2VkKGNvbnN0IEpTQ2VsbCogY2VsbCkKKyAgICBpbmxpbmUgYm9vbCBNYXJrZWRC
bG9jazo6aXNNYXJrZWQoY29uc3Qgdm9pZCogY2VsbCkKICAgICB7CiAgICAgICAgIHJldHVybiBt
YXJrZWQuZ2V0KGNlbGxOdW1iZXIoY2VsbCkpOwogICAgIH0KIAotICAgIGlubGluZSBib29sIE1h
cmtlZEJsb2NrOjp0ZXN0QW5kU2V0TWFya2VkKGNvbnN0IEpTQ2VsbCogY2VsbCkKKyAgICBpbmxp
bmUgYm9vbCBNYXJrZWRCbG9jazo6dGVzdEFuZFNldE1hcmtlZChjb25zdCB2b2lkKiBjZWxsKQog
ICAgIHsKICAgICAgICAgcmV0dXJuIG1hcmtlZC50ZXN0QW5kU2V0KGNlbGxOdW1iZXIoY2VsbCkp
OwogICAgIH0KIAotICAgIGlubGluZSB2b2lkIE1hcmtlZEJsb2NrOjpzZXRNYXJrZWQoY29uc3Qg
SlNDZWxsKiBjZWxsKQorICAgIGlubGluZSB2b2lkIE1hcmtlZEJsb2NrOjpzZXRNYXJrZWQoY29u
c3Qgdm9pZCogY2VsbCkKICAgICB7CiAgICAgICAgIG1hcmtlZC5zZXQoY2VsbE51bWJlcihjZWxs
KSk7CiAgICAgfQpAQCAtMTA4LDcgKzEwOCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgaW5s
aW5lIGJvb2wgTWFya2VkQmxvY2s6OmlzUG9zc2libGVDZWxsKGNvbnN0IHZvaWQqIHApCiAgICAg
ewotICAgICAgICByZXR1cm4gaXNDZWxsQWxpZ25lZChwKSAmJiBwOworICAgICAgICByZXR1cm4g
aXNDZWxsQWxpZ25lZChwKTsKICAgICB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFya2VkU3BhY2UuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcmtlZFNwYWNlLmNwcAkocmV2aXNpb24g
Nzc4ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXJrZWRTcGFjZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTE2OSwzMiArMTY5LDYgQEAgdm9pZCBNYXJrZWRTcGFjZTo6c2hy
aW5rKCkKICAgICAgICAgbV9oZWFwLmNvbGxlY3RvckJsb2NrKGkpLT5tYXJrZWQuc2V0KEhlYXBD
b25zdGFudHM6OmNlbGxzUGVyQmxvY2sgLSAxKTsKIH0KIAotYm9vbCBNYXJrZWRTcGFjZTo6Y29u
dGFpbnNTbG93Q2FzZShjb25zdCB2b2lkKiB4KQotewotICAgIHVpbnRwdHJfdCB4QXNCaXRzID0g
cmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KHgpOwotICAgIHhBc0JpdHMgJj0gQ0VMTF9BTElH
Tl9NQVNLOwotCi0gICAgdWludHB0cl90IG9mZnNldCA9IHhBc0JpdHMgJiBCTE9DS19PRkZTRVRf
TUFTSzsKLSAgICBjb25zdCBzaXplX3QgbGFzdENlbGxPZmZzZXQgPSBzaXplb2YoQ29sbGVjdG9y
Q2VsbCkgKiAoQ0VMTFNfUEVSX0JMT0NLIC0gMSk7Ci0gICAgaWYgKG9mZnNldCA+IGxhc3RDZWxs
T2Zmc2V0KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBNYXJrZWRCbG9jayogYmxvY2tB
ZGRyID0gcmVpbnRlcnByZXRfY2FzdDxNYXJrZWRCbG9jayo+KHhBc0JpdHMgLSBvZmZzZXQpOwot
ICAgIHNpemVfdCB1c2VkQmxvY2tzID0gbV9oZWFwLnVzZWRCbG9ja3M7Ci0gICAgZm9yIChzaXpl
X3QgYmxvY2sgPSAwOyBibG9jayA8IHVzZWRCbG9ja3M7IGJsb2NrKyspIHsKLSAgICAgICAgaWYg
KG1faGVhcC5jb2xsZWN0b3JCbG9jayhibG9jaykgIT0gYmxvY2tBZGRyKQotICAgICAgICAgICAg
Y29udGludWU7Ci0KLSAgICAgICAgLy8geCBpcyBhIHBvaW50ZXIgaW50byB0aGUgaGVhcC4gTm93
LCB2ZXJpZnkgdGhhdCB0aGUgY2VsbCBpdAotICAgICAgICAvLyBwb2ludHMgdG8gaXMgbGl2ZS4g
KElmIHRoZSBjZWxsIGlzIGRlYWQsIHdlIG11c3Qgbm90IG1hcmsgaXQsCi0gICAgICAgIC8vIHNp
bmNlIHRoYXQgd291bGQgcmV2aXZlIGl0IGluIGEgem9tYmllIHN0YXRlLikKLSAgICAgICAgc2l6
ZV90IGNlbGxPZmZzZXQgPSBvZmZzZXQgLyBDRUxMX1NJWkU7Ci0gICAgICAgIHJldHVybiBibG9j
a0FkZHItPm1hcmtlZC5nZXQoY2VsbE9mZnNldCk7Ci0gICAgfQotICAgIAotICAgIHJldHVybiBm
YWxzZTsKLX0KLQogdm9pZCBNYXJrZWRTcGFjZTo6Y2xlYXJNYXJrQml0cygpCiB7CiAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBtX2hlYXAudXNlZEJsb2NrczsgKytpKQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFya2VkU3BhY2UuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXJrZWRTcGFjZS5oCShyZXZpc2lvbiA3Nzg4MSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcmtlZFNwYWNlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTkyLDggKzkyLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIExpdmVPYmpl
Y3RJdGVyYXRvciBwcmltYXJ5SGVhcEVuZCgpOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgYm9v
bCBjb250YWluc1Nsb3dDYXNlKGNvbnN0IHZvaWQqKTsKLQogICAgICAgICBORVZFUl9JTkxJTkUg
TWFya2VkQmxvY2sqIGFsbG9jYXRlQmxvY2soKTsKICAgICAgICAgTkVWRVJfSU5MSU5FIHZvaWQg
ZnJlZUJsb2NrKHNpemVfdCk7CiAgICAgICAgIHZvaWQgc2hyaW5rKCk7CkBAIC0xMjgsOCArMTI2
LDIzIEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHsKICAgICAgICAgaWYgKCFNYXJrZWRCbG9jazo6
aXNQb3NzaWJsZUNlbGwoeCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAg
ICAKLSAgICAgICAgcmV0dXJuIGNvbnRhaW5zU2xvd0Nhc2UoeCk7CisKKyAgICAgICAgTWFya2Vk
QmxvY2sqIGJsb2NrID0gTWFya2VkQmxvY2s6OmJsb2NrRm9yKHgpOworICAgICAgICBpZiAoIWJs
b2NrKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIHNpemVfdCB1c2VkQmxv
Y2tzID0gbV9oZWFwLnVzZWRCbG9ja3M7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
dXNlZEJsb2NrczsgaSsrKSB7CisgICAgICAgICAgICBpZiAoYmxvY2sgIT0gbV9oZWFwLmNvbGxl
Y3RvckJsb2NrKGkpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICAv
LyB4IGlzIGEgcG9pbnRlciBpbnRvIHRoZSBoZWFwLiBOb3csIHZlcmlmeSB0aGF0IHRoZSBjZWxs
IGl0CisgICAgICAgICAgICAvLyBwb2ludHMgdG8gaXMgbGl2ZS4gKElmIHRoZSBjZWxsIGlzIGRl
YWQsIHdlIG11c3Qgbm90IG1hcmsgaXQsCisgICAgICAgICAgICAvLyBzaW5jZSB0aGF0IHdvdWxk
IHJldml2ZSBpdCBpbiBhIHpvbWJpZSBzdGF0ZS4pCisgICAgICAgICAgICByZXR1cm4gYmxvY2st
PmlzTWFya2VkKHgpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MK
</data>
<flag name="review"
          id="73286"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>