<?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>51914</bug_id>
          
          <creation_ts>2011-01-04 21:54:27 -0800</creation_ts>
          <short_desc>ElementRareData::m_shadowRoot should not be RefPtr.</short_desc>
          <delta_ts>2011-01-19 17:25:00 -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>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</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>
          
          <blocked>48698</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Hajime Morrita">morrita</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>dominicc</cc>
    
    <cc>jschuh</cc>
    
    <cc>levin</cc>
    
    <cc>rolandsteiner</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>329420</commentid>
    <comment_count>0</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-01-04 21:54:27 -0800</bug_when>
    <thetext>Currently ElementRareData::m_shadowRoot is RefPtr. 
But I think it should be a raw pointer instead of smart one,
assuming it should be same as  ContainerNode::m_firstChild.

In general, WebKit doesn&apos;t use RefPtr for maintaining tree structure.
So we should follow that style to avoid confusion.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>329562</commentid>
    <comment_count>1</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-01-05 07:47:53 -0800</bug_when>
    <thetext>You&apos;re right -- now that we use  TreeShared::parent to store the shadow host value, we can get rid of RefPtr.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>335229</commentid>
    <comment_count>2</comment_count>
      <attachid>79147</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-01-17 03:23:59 -0800</bug_when>
    <thetext>Created attachment 79147
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>335230</commentid>
    <comment_count>3</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-01-17 03:27:01 -0800</bug_when>
    <thetext>(In reply to comment #1)
&gt; You&apos;re right -- now that we use  TreeShared::parent to store the shadow host value, we can get rid of RefPtr.
Hi Dimitri, so I do it. Could you take a look at this small change?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>335352</commentid>
    <comment_count>4</comment_count>
      <attachid>79147</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-01-17 09:03:27 -0800</bug_when>
    <thetext>Comment on attachment 79147
Patch

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

&gt; Source/WebCore/dom/Element.cpp:1090
&gt;  void Element::setShadowRoot(PassRefPtr&lt;Node&gt; node)

We&apos;re not passing RefPtr anymore, since it&apos;ll be stored as a raw ptr. Should we still have PassRefPtr as an argument?

&gt; Source/WebCore/dom/Element.cpp:1110
&gt; +    ElementRareData* data = rareData();
&gt; +    if (data-&gt;m_shadowRoot) {

Could be written in one line as &quot;if (ElementRareData* data = rareData()) {&quot;

&gt; Source/WebCore/dom/Element.cpp:1111
&gt; +        RefPtr&lt;Node&gt; oldRoot = adoptRef(data-&gt;m_shadowRoot);

adoptRef, are you sure? You actually  do want to increment the ref count here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>335619</commentid>
    <comment_count>5</comment_count>
      <attachid>79234</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-01-17 18:16:58 -0800</bug_when>
    <thetext>Created attachment 79234
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>335620</commentid>
    <comment_count>6</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-01-17 18:21:12 -0800</bug_when>
    <thetext>Hi Dimitri, thank you for your quick review!
I updated the patch could you take the next round?

&gt; &gt; Source/WebCore/dom/Element.cpp:1090
&gt; &gt;  void Element::setShadowRoot(PassRefPtr&lt;Node&gt; node)
&gt; 
&gt; We&apos;re not passing RefPtr anymore, since it&apos;ll be stored as a raw ptr. Should we still have PassRefPtr as an argument?
Yes. I once tried to switch a raw pointer and notice that it is inconvenient because
SomeElement::create() returns PassRefPtr. 
It looks that arguments for new nodes are declared as PassRefPtr, and raw pointer for existing pointer.
Here is the declaration for Node::insertBefore():

    bool insertBefore(PassRefPtr&lt;Node&gt; newChild, Node* refChild, ExceptionCode&amp;, bool shouldLazyAttach = false);
 
&gt; 
&gt; &gt; Source/WebCore/dom/Element.cpp:1110
&gt; &gt; +    ElementRareData* data = rareData();
&gt; &gt; +    if (data-&gt;m_shadowRoot) {
&gt; 
&gt; Could be written in one line as &quot;if (ElementRareData* data = rareData()) {&quot;
Sure. Fixed.

&gt; 
&gt; &gt; Source/WebCore/dom/Element.cpp:1111
&gt; &gt; +        RefPtr&lt;Node&gt; oldRoot = adoptRef(data-&gt;m_shadowRoot);
&gt; 
&gt; adoptRef, are you sure? You actually  do want to increment the ref count here.
You are right. Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>335625</commentid>
    <comment_count>7</comment_count>
      <attachid>79234</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-01-17 18:43:41 -0800</bug_when>
    <thetext>Comment on attachment 79234
Patch

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

&gt; Source/WebCore/dom/Element.cpp:1110
&gt; +    ElementRareData* data = rareData();
&gt; +    if (data-&gt;m_shadowRoot) {

Forgot this one? :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>335650</commentid>
    <comment_count>8</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-01-17 20:21:34 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; 
&gt; Forgot this one? :)
Ooops! I&apos;m fixing it and landing.
Thank you for the r+ :p</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>335651</commentid>
    <comment_count>9</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-01-17 20:30:47 -0800</bug_when>
    <thetext>Committed r75995: &lt;http://trac.webkit.org/changeset/75995&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>335658</commentid>
    <comment_count>10</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-01-17 21:39:17 -0800</bug_when>
    <thetext>Leopard Intel Debug is showing a bunch of new crashing tests after this change:
http://build.webkit.org/results/Leopard%20Intel%20Debug%20(Tests)/r75995%20(26049)/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>335664</commentid>
    <comment_count>11</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-01-17 22:17:23 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; Leopard Intel Debug is showing a bunch of new crashing tests after this change:
&gt; http://build.webkit.org/results/Leopard%20Intel%20Debug%20(Tests)/r75995%20(26049)/
Hmm. Thank you for letting me know. I&apos;ll take a look...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>335670</commentid>
    <comment_count>12</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2011-01-17 23:11:53 -0800</bug_when>
    <thetext>As noted in IRC, a ref count is being leaked here due to the leakRef without a corresponding adoptRef (or deref) call.

Also, having a method take a PassRefPtr when it does take ownership (and I think that is your intention) seems really wrong and basically means anyone reading the method will think the wrong thing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>335671</commentid>
    <comment_count>13</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-01-17 23:12:59 -0800</bug_when>
    <thetext>Reverted r75995 for reason:

Causes

Committed r76001: &lt;http://trac.webkit.org/changeset/76001&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>335687</commentid>
    <comment_count>14</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-01-18 00:35:55 -0800</bug_when>
    <thetext>note from irc:
&gt; morrita: Your patch looks wrong to me. You got rid of RefPtr but you are using leakPtr which mean you are putting a ref counted object into taht pointer.
&gt; morrita: Then it doesn&apos;t do adoptRef (when putting out the pointer) but if you were doing that then why get rid of teh RefPtr at all because you&apos;d be doing the same thing but all by hand.
&gt; morrita: Also having a method take a PassRefPtr when it doesn&apos;t take ownership seems very wrong.

----
So Dimitri is right.  Element::setShadowRoot() should accept raw pointer of Node. 
The revised patch will come shortly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>336318</commentid>
    <comment_count>15</comment_count>
      <attachid>79386</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-01-18 20:20:57 -0800</bug_when>
    <thetext>Created attachment 79386
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>336320</commentid>
    <comment_count>16</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-01-18 20:24:23 -0800</bug_when>
    <thetext>And fixed again... Could anyone take a look?
The difference is:
- Element::setShadowRoot() no longer accept PassRefPtr
   and accept a raw pointer instead. On caller side, RefPtr::get() is used for revealing the raw pointer.
- Removed the leakPtr() call.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>336321</commentid>
    <comment_count>17</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-01-18 20:27:02 -0800</bug_when>
    <thetext>Did you run the tests in debug and release?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>336334</commentid>
    <comment_count>18</comment_count>
      <attachid>79386</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2011-01-18 21:54:33 -0800</bug_when>
    <thetext>Comment on attachment 79386
Patch

As discussed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>336363</commentid>
    <comment_count>19</comment_count>
      <attachid>79396</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-01-18 23:43:38 -0800</bug_when>
    <thetext>Created attachment 79396
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>336364</commentid>
    <comment_count>20</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-01-18 23:51:15 -0800</bug_when>
    <thetext>Levin, thank you for take a look!
I updated the patch which

- changed setShadowRoot() argument type from raw pointer to PassRefPtr, and 
- removed shadow node on Element dtor.

Note that this change calls removeShadowRoot() in Element dtor,
instead of deleting node in ElementRareData dtor.
This is because the ElementRareData dtor is called *after* the Elment dtor. It is called in the Node dtor. 
I think holding that half-dead pointer is potentially dangerous so clear it early.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>336367</commentid>
    <comment_count>21</comment_count>
      <attachid>79396</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2011-01-19 00:11:48 -0800</bug_when>
    <thetext>Comment on attachment 79396
Patch

TreeShared is a little magical (the way that ref count goes to zero but it stays alive because it has a parent).

I see how this is finally deleted now.  It happens in removeShadowRoot.  The ref count goes to 1. Here:
   if (RefPtr&lt;Node&gt; oldRoot = data-&gt;m_shadowRoot) {

Then the parent is removed and when the &quot;if&quot; is exited, &quot;oldRoot&quot; is deref&apos;ed so the ref count goes to zero and there is no parent so the node is destroyed.

This is a bit tricky, but it seems fine. (I wonder if there should be some comments somewhere about how lifetime is managed in here. It takes some detective work to figure it all out.)

Please make sure to run debug test before submitting (and/or use the commit queue).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>336379</commentid>
    <comment_count>22</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-01-19 01:05:15 -0800</bug_when>
    <thetext>Thanks! I should be careful enough because this patch was rejected once ;-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>336495</commentid>
    <comment_count>23</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-01-19 06:50:27 -0800</bug_when>
    <thetext>&gt; This is a bit tricky, but it seems fine. (I wonder if there should be some comments somewhere about how lifetime is managed in here. It takes some detective work to figure it all out.)

I highly encourage a nice ChangeLog with detailed description of what happened where and reasoning behind each change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>336967</commentid>
    <comment_count>24</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-01-19 17:25:00 -0800</bug_when>
    <thetext>Committed r76183: &lt;http://trac.webkit.org/changeset/76183&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>79147</attachid>
            <date>2011-01-17 03:23:59 -0800</date>
            <delta_ts>2011-01-17 18:16:53 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-51914-20110117202357.patch</filename>
            <type>text/plain</type>
            <size>3405</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAyOTQwZWIwZTNmY2IyNjc2NzdiNmE4YTcyZWRjYWY2M2Q4MTE2MTdmLi41
Njc5NjhmMGU2NGQxM2VlODVhM2I3NDQxMDcyZmIwN2QzNDFkNzJlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjMgQEAKKzIwMTEtMDEtMTcgIE1PUklUQSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRWxl
bWVudFJhcmVEYXRhOjptX3NoYWRvd1Jvb3Qgc2hvdWxkIG5vdCBiZSBSZWZQdHIuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MTkxNAorCisgICAgICAg
IFRoaXMgY2hhbmdlIG1ha2VzIG1fc2hhZG93Um9vdCBhIHJhdyBwb2ludGVyLCBhcyBOb2RlOjpt
X3BhcmVudCBpcy4KKyAgICAgICAgVGhpcyBjaGFuZ2UgaXMgc2FmZSBiZWNhdXNlIHNoYWRvdyBo
b3N0IHBvaW50ZXIgaXMgc3RvcmVkIGFzIFRyZWVTaGFyZWQ6Om1fcGFyZW50CisgICAgICAgIHdo
aWNoIHByZXZlbnRzIGRlbGV0aW9uIHVubGVzcyBzZXQgdG8gbnVsbC4KKyAgICAgICAgCisgICAg
ICAgIE5vIHRlc3QsIG5vIGJlaGF2aW9yYWwgY2hhbmdlLgorCisgICAgICAgICogZG9tL0VsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6c2hhZG93Um9vdCk6CisgICAgICAg
IChXZWJDb3JlOjpFbGVtZW50OjpzZXRTaGFkb3dSb290KToKKyAgICAgICAgKFdlYkNvcmU6OkVs
ZW1lbnQ6OnJlbW92ZVNoYWRvd1Jvb3QpOgorICAgICAgICAqIGRvbS9FbGVtZW50UmFyZURhdGEu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRSYXJlRGF0YTo6RWxlbWVudFJhcmVEYXRhKToK
KwogMjAxMS0wMS0xNiAgTWFydGluIFJvYmluc29uICA8bXJvYmluc29uQGlnYWxpYS5jb20+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgWGFuIExvcGV6LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCmluZGV4
IGM2MWI5NWQ3YzE1MmI3MDg3NjRmYzhiY2M0ZjNkNTJhM2M5Y2JjZmQuLjRiMzQyNDRkNTgxZmNi
ODEwNzdmYzQ1YWYzMWExOWMyZmM2OGM3ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKQEAgLTEw
ODQsNyArMTA4NCw3IEBAIHZvaWQgRWxlbWVudDo6cmVjYWxjU3R5bGUoU3R5bGVDaGFuZ2UgY2hh
bmdlKQogCiBOb2RlKiBFbGVtZW50OjpzaGFkb3dSb290KCkKIHsKLSAgICByZXR1cm4gaGFzUmFy
ZURhdGEoKSA/IHJhcmVEYXRhKCktPm1fc2hhZG93Um9vdC5nZXQoKSA6IDA7CisgICAgcmV0dXJu
IGhhc1JhcmVEYXRhKCkgPyByYXJlRGF0YSgpLT5tX3NoYWRvd1Jvb3QgOiAwOwogfQogCiB2b2lk
IEVsZW1lbnQ6OnNldFNoYWRvd1Jvb3QoUGFzc1JlZlB0cjxOb2RlPiBub2RlKQpAQCAtMTA5Mywx
MiArMTA5MywxMiBAQCB2b2lkIEVsZW1lbnQ6OnNldFNoYWRvd1Jvb3QoUGFzc1JlZlB0cjxOb2Rl
PiBub2RlKQogICAgIC8vIGFib3V0IGNvbXByb21pc2luZyBET00gdHJlZSBpbnRlZ3JpdHkgKGVn
LiBub2RlIGJlaW5nIGEgcGFyZW50IG9mIHRoaXMpLiBIb3dldmVyLAogICAgIC8vIG9uY2Ugd2Ug
aW1wbGVtZW50IFhCTDIsIHdlIHdpbGwgaGF2ZSB0byBhZGQgaW50ZWdyaXR5IGNoZWNrcyBoZXJl
LgogICAgIHJlbW92ZVNoYWRvd1Jvb3QoKTsKLSAgICBSZWZQdHI8Tm9kZT4gbmV3Um9vdCA9IG5v
ZGU7Ci0gICAgaWYgKCFuZXdSb290KQorICAgIGlmICghbm9kZSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgZW5zdXJlUmFyZURhdGEoKS0+bV9zaGFkb3dSb290ID0gbmV3Um9vdDsKLSAgICBuZXdS
b290LT5zZXRTaGFkb3dIb3N0KHRoaXMpOworICAgIEVsZW1lbnRSYXJlRGF0YSogZGF0YSA9IGVu
c3VyZVJhcmVEYXRhKCk7CisgICAgZGF0YS0+bV9zaGFkb3dSb290ID0gbm9kZS5sZWFrUmVmKCk7
CisgICAgZGF0YS0+bV9zaGFkb3dSb290LT5zZXRTaGFkb3dIb3N0KHRoaXMpOwogfQogCiB2b2lk
IEVsZW1lbnQ6OnJlbW92ZVNoYWRvd1Jvb3QoKQpAQCAtMTEwNiw3ICsxMTA2LDEwIEBAIHZvaWQg
RWxlbWVudDo6cmVtb3ZlU2hhZG93Um9vdCgpCiAgICAgaWYgKCFoYXNSYXJlRGF0YSgpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBpZiAoUmVmUHRyPE5vZGU+IG9sZFJvb3QgPSByYXJlRGF0YSgp
LT5tX3NoYWRvd1Jvb3QucmVsZWFzZSgpKSB7CisgICAgRWxlbWVudFJhcmVEYXRhKiBkYXRhID0g
cmFyZURhdGEoKTsKKyAgICBpZiAoZGF0YS0+bV9zaGFkb3dSb290KSB7CisgICAgICAgIFJlZlB0
cjxOb2RlPiBvbGRSb290ID0gYWRvcHRSZWYoZGF0YS0+bV9zaGFkb3dSb290KTsKKyAgICAgICAg
ZGF0YS0+bV9zaGFkb3dSb290ID0gMDsKICAgICAgICAgZG9jdW1lbnQoKS0+cmVtb3ZlRm9jdXNl
ZE5vZGVPZlN1YnRyZWUob2xkUm9vdC5nZXQoKSk7CiAgICAgICAgIG9sZFJvb3QtPnNldFNoYWRv
d0hvc3QoMCk7CiAgICAgICAgIGlmIChvbGRSb290LT5pbkRvY3VtZW50KCkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFJhcmVEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRWxlbWVudFJhcmVEYXRhLmgKaW5kZXggZjdmMzBiYjcwOGQxZmU4MzVlZTY4ZmFhOTA1NzYz
YmI2NDg4NmM0Ny4uNTAwZTMxZjBlMjk5MTgxYjA0YmNiMDkyYWI4MDJjMjMxOTNlNDBhMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRSYXJlRGF0YS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FbGVtZW50UmFyZURhdGEuaApAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6
CiAKICAgICBJbnRTaXplIG1fbWluaW11bVNpemVGb3JSZXNpemluZzsKICAgICBSZWZQdHI8UmVu
ZGVyU3R5bGU+IG1fY29tcHV0ZWRTdHlsZTsKLSAgICBSZWZQdHI8Tm9kZT4gbV9zaGFkb3dSb290
OworICAgIE5vZGUqIG1fc2hhZG93Um9vdDsKIAogICAgIE93blB0cjxEYXRhc2V0RE9NU3RyaW5n
TWFwPiBtX2RhdGFzZXRET01TdHJpbmdNYXA7CiAgICAgT3duUHRyPENsYXNzTGlzdD4gbV9jbGFz
c0xpc3Q7CkBAIC01NCw2ICs1NCw3IEBAIGlubGluZSBJbnRTaXplIGRlZmF1bHRNaW5pbXVtU2l6
ZUZvclJlc2l6aW5nKCkKIAogaW5saW5lIEVsZW1lbnRSYXJlRGF0YTo6RWxlbWVudFJhcmVEYXRh
KCkKICAgICA6IG1fbWluaW11bVNpemVGb3JSZXNpemluZyhkZWZhdWx0TWluaW11bVNpemVGb3JS
ZXNpemluZygpKQorICAgICwgbV9zaGFkb3dSb290KDApCiB7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>79234</attachid>
            <date>2011-01-17 18:16:58 -0800</date>
            <delta_ts>2011-01-17 23:13:11 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-51914-20110118111656.patch</filename>
            <type>text/plain</type>
            <size>3395</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAyOTQwZWIwZTNmY2IyNjc2NzdiNmE4YTcyZWRjYWY2M2Q4MTE2MTdmLi41
Njc5NjhmMGU2NGQxM2VlODVhM2I3NDQxMDcyZmIwN2QzNDFkNzJlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjMgQEAKKzIwMTEtMDEtMTcgIE1PUklUQSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRWxl
bWVudFJhcmVEYXRhOjptX3NoYWRvd1Jvb3Qgc2hvdWxkIG5vdCBiZSBSZWZQdHIuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MTkxNAorCisgICAgICAg
IFRoaXMgY2hhbmdlIG1ha2VzIG1fc2hhZG93Um9vdCBhIHJhdyBwb2ludGVyLCBhcyBOb2RlOjpt
X3BhcmVudCBpcy4KKyAgICAgICAgVGhpcyBjaGFuZ2UgaXMgc2FmZSBiZWNhdXNlIHNoYWRvdyBo
b3N0IHBvaW50ZXIgaXMgc3RvcmVkIGFzIFRyZWVTaGFyZWQ6Om1fcGFyZW50CisgICAgICAgIHdo
aWNoIHByZXZlbnRzIGRlbGV0aW9uIHVubGVzcyBzZXQgdG8gbnVsbC4KKyAgICAgICAgCisgICAg
ICAgIE5vIHRlc3QsIG5vIGJlaGF2aW9yYWwgY2hhbmdlLgorCisgICAgICAgICogZG9tL0VsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6c2hhZG93Um9vdCk6CisgICAgICAg
IChXZWJDb3JlOjpFbGVtZW50OjpzZXRTaGFkb3dSb290KToKKyAgICAgICAgKFdlYkNvcmU6OkVs
ZW1lbnQ6OnJlbW92ZVNoYWRvd1Jvb3QpOgorICAgICAgICAqIGRvbS9FbGVtZW50UmFyZURhdGEu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRSYXJlRGF0YTo6RWxlbWVudFJhcmVEYXRhKToK
KwogMjAxMS0wMS0xNiAgTWFydGluIFJvYmluc29uICA8bXJvYmluc29uQGlnYWxpYS5jb20+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgWGFuIExvcGV6LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCmluZGV4
IGM2MWI5NWQ3YzE1MmI3MDg3NjRmYzhiY2M0ZjNkNTJhM2M5Y2JjZmQuLjFiOWUzZGNlYmYwN2Fh
YWI5OGE1ZWE5NThmYmI1YTMwNDQ3OTJhY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKQEAgLTEw
ODQsNyArMTA4NCw3IEBAIHZvaWQgRWxlbWVudDo6cmVjYWxjU3R5bGUoU3R5bGVDaGFuZ2UgY2hh
bmdlKQogCiBOb2RlKiBFbGVtZW50OjpzaGFkb3dSb290KCkKIHsKLSAgICByZXR1cm4gaGFzUmFy
ZURhdGEoKSA/IHJhcmVEYXRhKCktPm1fc2hhZG93Um9vdC5nZXQoKSA6IDA7CisgICAgcmV0dXJu
IGhhc1JhcmVEYXRhKCkgPyByYXJlRGF0YSgpLT5tX3NoYWRvd1Jvb3QgOiAwOwogfQogCiB2b2lk
IEVsZW1lbnQ6OnNldFNoYWRvd1Jvb3QoUGFzc1JlZlB0cjxOb2RlPiBub2RlKQpAQCAtMTA5Mywx
MiArMTA5MywxMiBAQCB2b2lkIEVsZW1lbnQ6OnNldFNoYWRvd1Jvb3QoUGFzc1JlZlB0cjxOb2Rl
PiBub2RlKQogICAgIC8vIGFib3V0IGNvbXByb21pc2luZyBET00gdHJlZSBpbnRlZ3JpdHkgKGVn
LiBub2RlIGJlaW5nIGEgcGFyZW50IG9mIHRoaXMpLiBIb3dldmVyLAogICAgIC8vIG9uY2Ugd2Ug
aW1wbGVtZW50IFhCTDIsIHdlIHdpbGwgaGF2ZSB0byBhZGQgaW50ZWdyaXR5IGNoZWNrcyBoZXJl
LgogICAgIHJlbW92ZVNoYWRvd1Jvb3QoKTsKLSAgICBSZWZQdHI8Tm9kZT4gbmV3Um9vdCA9IG5v
ZGU7Ci0gICAgaWYgKCFuZXdSb290KQorICAgIGlmICghbm9kZSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgZW5zdXJlUmFyZURhdGEoKS0+bV9zaGFkb3dSb290ID0gbmV3Um9vdDsKLSAgICBuZXdS
b290LT5zZXRTaGFkb3dIb3N0KHRoaXMpOworICAgIEVsZW1lbnRSYXJlRGF0YSogZGF0YSA9IGVu
c3VyZVJhcmVEYXRhKCk7CisgICAgZGF0YS0+bV9zaGFkb3dSb290ID0gbm9kZS5sZWFrUmVmKCk7
CisgICAgZGF0YS0+bV9zaGFkb3dSb290LT5zZXRTaGFkb3dIb3N0KHRoaXMpOwogfQogCiB2b2lk
IEVsZW1lbnQ6OnJlbW92ZVNoYWRvd1Jvb3QoKQpAQCAtMTEwNiw3ICsxMTA2LDEwIEBAIHZvaWQg
RWxlbWVudDo6cmVtb3ZlU2hhZG93Um9vdCgpCiAgICAgaWYgKCFoYXNSYXJlRGF0YSgpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBpZiAoUmVmUHRyPE5vZGU+IG9sZFJvb3QgPSByYXJlRGF0YSgp
LT5tX3NoYWRvd1Jvb3QucmVsZWFzZSgpKSB7CisgICAgRWxlbWVudFJhcmVEYXRhKiBkYXRhID0g
cmFyZURhdGEoKTsKKyAgICBpZiAoZGF0YS0+bV9zaGFkb3dSb290KSB7CisgICAgICAgIFJlZlB0
cjxOb2RlPiBvbGRSb290ID0gZGF0YS0+bV9zaGFkb3dSb290OworICAgICAgICBkYXRhLT5tX3No
YWRvd1Jvb3QgPSAwOwogICAgICAgICBkb2N1bWVudCgpLT5yZW1vdmVGb2N1c2VkTm9kZU9mU3Vi
dHJlZShvbGRSb290LmdldCgpKTsKICAgICAgICAgb2xkUm9vdC0+c2V0U2hhZG93SG9zdCgwKTsK
ICAgICAgICAgaWYgKG9sZFJvb3QtPmluRG9jdW1lbnQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FbGVtZW50UmFyZURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50
UmFyZURhdGEuaAppbmRleCBmN2YzMGJiNzA4ZDFmZTgzNWVlNjhmYWE5MDU3NjNiYjY0ODg2YzQ3
Li41MDBlMzFmMGUyOTkxODFiMDRiY2IwOTJhYjgwMmMyMzE5M2U0MGEwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFJhcmVEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0VsZW1lbnRSYXJlRGF0YS5oCkBAIC00MSw3ICs0MSw3IEBAIHB1YmxpYzoKIAogICAgIElu
dFNpemUgbV9taW5pbXVtU2l6ZUZvclJlc2l6aW5nOwogICAgIFJlZlB0cjxSZW5kZXJTdHlsZT4g
bV9jb21wdXRlZFN0eWxlOwotICAgIFJlZlB0cjxOb2RlPiBtX3NoYWRvd1Jvb3Q7CisgICAgTm9k
ZSogbV9zaGFkb3dSb290OwogCiAgICAgT3duUHRyPERhdGFzZXRET01TdHJpbmdNYXA+IG1fZGF0
YXNldERPTVN0cmluZ01hcDsKICAgICBPd25QdHI8Q2xhc3NMaXN0PiBtX2NsYXNzTGlzdDsKQEAg
LTU0LDYgKzU0LDcgQEAgaW5saW5lIEludFNpemUgZGVmYXVsdE1pbmltdW1TaXplRm9yUmVzaXpp
bmcoKQogCiBpbmxpbmUgRWxlbWVudFJhcmVEYXRhOjpFbGVtZW50UmFyZURhdGEoKQogICAgIDog
bV9taW5pbXVtU2l6ZUZvclJlc2l6aW5nKGRlZmF1bHRNaW5pbXVtU2l6ZUZvclJlc2l6aW5nKCkp
CisgICAgLCBtX3NoYWRvd1Jvb3QoMCkKIHsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>79386</attachid>
            <date>2011-01-18 20:20:57 -0800</date>
            <delta_ts>2011-01-18 23:43:33 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-51914-20110119132055.patch</filename>
            <type>text/plain</type>
            <size>5169</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAwNjY4ZDIxNDBiYmJiMThkMjZmZWZiN2QyMjk4NDhiZWJkMmU2MjNkLi44
Njc2MWVjMzg0MWEwMjNiNzMyYTZjYmY1MDFkZmEwODZkYjU1NjRmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjIgQEAKKzIwMTEtMDEtMTggIE1PUklUQSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRWxl
bWVudFJhcmVEYXRhOjptX3NoYWRvd1Jvb3Qgc2hvdWxkIG5vdCBiZSBSZWZQdHIuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MTkxNAorCisgICAgICAg
ICogZG9tL0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6c2hhZG93Um9v
dCk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpzZXRTaGFkb3dSb290KToKKyAgICAgICAg
KFdlYkNvcmU6OkVsZW1lbnQ6OnJlbW92ZVNoYWRvd1Jvb3QpOgorICAgICAgICAqIGRvbS9FbGVt
ZW50Lmg6CisgICAgICAgICogZG9tL0VsZW1lbnRSYXJlRGF0YS5oOgorICAgICAgICAoV2ViQ29y
ZTo6RWxlbWVudFJhcmVEYXRhOjpFbGVtZW50UmFyZURhdGEpOgorICAgICAgICAqIGh0bWwvUmFu
Z2VJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2VJbnB1dFR5cGU6OmNyZWF0
ZVNoYWRvd1N1YnRyZWUpOgorICAgICAgICAqIGh0bWwvVmFsaWRhdGlvbk1lc3NhZ2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6VmFsaWRhdGlvbk1lc3NhZ2U6OmJ1aWxkQnViYmxlVHJlZSk6CisK
IDIwMTEtMDEtMTggTU9SSVRBIEhhamltZSA8bW9ycml0YUBnb29nbGUuY29tPgogCiAgICAgICAg
IFVucmV2aWV3ZWQgd2luZG93cyBidWlsZCBmaXguCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXgg
YzYxYjk1ZDdjMTUyYjcwODc2NGZjOGJjYzRmM2Q1MmEzYzljYmNmZC4uOTJkODVmZGMyY2QwMWRh
YzU3N2RlOTNjODkyOGU5ZjUzZWJlMTU4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAtMTA4
NCwyMSArMTA4NCwyMCBAQCB2b2lkIEVsZW1lbnQ6OnJlY2FsY1N0eWxlKFN0eWxlQ2hhbmdlIGNo
YW5nZSkKIAogTm9kZSogRWxlbWVudDo6c2hhZG93Um9vdCgpCiB7Ci0gICAgcmV0dXJuIGhhc1Jh
cmVEYXRhKCkgPyByYXJlRGF0YSgpLT5tX3NoYWRvd1Jvb3QuZ2V0KCkgOiAwOworICAgIHJldHVy
biBoYXNSYXJlRGF0YSgpID8gcmFyZURhdGEoKS0+bV9zaGFkb3dSb290IDogMDsKIH0KIAotdm9p
ZCBFbGVtZW50OjpzZXRTaGFkb3dSb290KFBhc3NSZWZQdHI8Tm9kZT4gbm9kZSkKK3ZvaWQgRWxl
bWVudDo6c2V0U2hhZG93Um9vdChOb2RlKiBub2RlKQogewogICAgIC8vIEZJWE1FOiBCZWNhdXNl
IHRvZGF5IHRoaXMgaXMgbmV2ZXIgY2FsbGVkIGZyb20gc2NyaXB0IGRpcmVjdGx5LCB3ZSBkb24n
dCBoYXZlIHRvIHdvcnJ5CiAgICAgLy8gYWJvdXQgY29tcHJvbWlzaW5nIERPTSB0cmVlIGludGVn
cml0eSAoZWcuIG5vZGUgYmVpbmcgYSBwYXJlbnQgb2YgdGhpcykuIEhvd2V2ZXIsCiAgICAgLy8g
b25jZSB3ZSBpbXBsZW1lbnQgWEJMMiwgd2Ugd2lsbCBoYXZlIHRvIGFkZCBpbnRlZ3JpdHkgY2hl
Y2tzIGhlcmUuCiAgICAgcmVtb3ZlU2hhZG93Um9vdCgpOwotICAgIFJlZlB0cjxOb2RlPiBuZXdS
b290ID0gbm9kZTsKLSAgICBpZiAoIW5ld1Jvb3QpCisgICAgaWYgKCFub2RlKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBlbnN1cmVSYXJlRGF0YSgpLT5tX3NoYWRvd1Jvb3QgPSBuZXdSb290Owot
ICAgIG5ld1Jvb3QtPnNldFNoYWRvd0hvc3QodGhpcyk7CisgICAgZW5zdXJlUmFyZURhdGEoKS0+
bV9zaGFkb3dSb290ID0gbm9kZTsKKyAgICBub2RlLT5zZXRTaGFkb3dIb3N0KHRoaXMpOwogfQog
CiB2b2lkIEVsZW1lbnQ6OnJlbW92ZVNoYWRvd1Jvb3QoKQpAQCAtMTEwNiw3ICsxMTA1LDkgQEAg
dm9pZCBFbGVtZW50OjpyZW1vdmVTaGFkb3dSb290KCkKICAgICBpZiAoIWhhc1JhcmVEYXRhKCkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChSZWZQdHI8Tm9kZT4gb2xkUm9vdCA9IHJhcmVE
YXRhKCktPm1fc2hhZG93Um9vdC5yZWxlYXNlKCkpIHsKKyAgICBFbGVtZW50UmFyZURhdGEqIGRh
dGEgPSByYXJlRGF0YSgpOworICAgIGlmIChSZWZQdHI8Tm9kZT4gb2xkUm9vdCA9IGRhdGEtPm1f
c2hhZG93Um9vdCkgeworICAgICAgICBkYXRhLT5tX3NoYWRvd1Jvb3QgPSAwOwogICAgICAgICBk
b2N1bWVudCgpLT5yZW1vdmVGb2N1c2VkTm9kZU9mU3VidHJlZShvbGRSb290LmdldCgpKTsKICAg
ICAgICAgb2xkUm9vdC0+c2V0U2hhZG93SG9zdCgwKTsKICAgICAgICAgaWYgKG9sZFJvb3QtPmlu
RG9jdW1lbnQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCmluZGV4IDVlNmMwNDc5NDMxYjRjZTUwYjE5ZTZj
MDlhNmVjMTJlNWZmZGFkYWIuLjRhNGVhYTFhMDVkYTNlY2IxZWFlODM2YjEwYmM2NjA5NjBjNGQ3
YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL0VsZW1lbnQuaApAQCAtMjI5LDcgKzIyOSw3IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgcmVjYWxjU3R5bGUoU3R5bGVDaGFuZ2UgPSBOb0NoYW5nZSk7CiAKICAgICBO
b2RlKiBzaGFkb3dSb290KCk7Ci0gICAgdm9pZCBzZXRTaGFkb3dSb290KFBhc3NSZWZQdHI8Tm9k
ZT4pOworICAgIHZvaWQgc2V0U2hhZG93Um9vdChOb2RlKik7CiAgICAgdmlydHVhbCBBdG9taWNT
dHJpbmcgc2hhZG93UHNldWRvSWQoKSBjb25zdDsKIAogICAgIFJlbmRlclN0eWxlKiBjb21wdXRl
ZFN0eWxlKFBzZXVkb0lkID0gTk9QU0VVRE8pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL0VsZW1lbnRSYXJlRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRSYXJlRGF0
YS5oCmluZGV4IGY3ZjMwYmI3MDhkMWZlODM1ZWU2OGZhYTkwNTc2M2JiNjQ4ODZjNDcuLjUwMGUz
MWYwZTI5OTE4MWIwNGJjYjA5MmFiODAyYzIzMTkzZTQwYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FbGVtZW50UmFyZURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxl
bWVudFJhcmVEYXRhLmgKQEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgogCiAgICAgSW50U2l6ZSBt
X21pbmltdW1TaXplRm9yUmVzaXppbmc7CiAgICAgUmVmUHRyPFJlbmRlclN0eWxlPiBtX2NvbXB1
dGVkU3R5bGU7Ci0gICAgUmVmUHRyPE5vZGU+IG1fc2hhZG93Um9vdDsKKyAgICBOb2RlKiBtX3No
YWRvd1Jvb3Q7CiAKICAgICBPd25QdHI8RGF0YXNldERPTVN0cmluZ01hcD4gbV9kYXRhc2V0RE9N
U3RyaW5nTWFwOwogICAgIE93blB0cjxDbGFzc0xpc3Q+IG1fY2xhc3NMaXN0OwpAQCAtNTQsNiAr
NTQsNyBAQCBpbmxpbmUgSW50U2l6ZSBkZWZhdWx0TWluaW11bVNpemVGb3JSZXNpemluZygpCiAK
IGlubGluZSBFbGVtZW50UmFyZURhdGE6OkVsZW1lbnRSYXJlRGF0YSgpCiAgICAgOiBtX21pbmlt
dW1TaXplRm9yUmVzaXppbmcoZGVmYXVsdE1pbmltdW1TaXplRm9yUmVzaXppbmcoKSkKKyAgICAs
IG1fc2hhZG93Um9vdCgwKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L1JhbmdlSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUu
Y3BwCmluZGV4IDNmY2I2NDE1ZDMwYjQ4N2JjM2ZlY2ZlNDIxYzM2YzMwNzM1YTgzMTYuLjQyOWJj
ZDUyYTJiZWM4NWFmYzEwYjRiNjY4Njk4YzBlYTM3MGYwYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
UmFuZ2VJbnB1dFR5cGUuY3BwCkBAIC0xODksNyArMTg5LDcgQEAgdm9pZCBSYW5nZUlucHV0VHlw
ZTo6Zm9yd2FyZEV2ZW50KEV2ZW50KiBldmVudCkKIAogdm9pZCBSYW5nZUlucHV0VHlwZTo6Y3Jl
YXRlU2hhZG93U3VidHJlZSgpCiB7Ci0gICAgZWxlbWVudCgpLT5zZXRTaGFkb3dSb290KFNsaWRl
clRodW1iRWxlbWVudDo6Y3JlYXRlKGVsZW1lbnQoKS0+ZG9jdW1lbnQoKSkpOworICAgIGVsZW1l
bnQoKS0+c2V0U2hhZG93Um9vdChTbGlkZXJUaHVtYkVsZW1lbnQ6OmNyZWF0ZShlbGVtZW50KCkt
PmRvY3VtZW50KCkpLmdldCgpKTsKIH0KIAogUmVuZGVyT2JqZWN0KiBSYW5nZUlucHV0VHlwZTo6
Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqIGFyZW5hLCBSZW5kZXJTdHlsZSopIGNvbnN0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1ZhbGlkYXRpb25NZXNzYWdlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvVmFsaWRhdGlvbk1lc3NhZ2UuY3BwCmluZGV4IDJjNDQxYzc0NDcw
MGY0OTljZDgyNDE3MDk3NWQ1YzRiZWQ0YmVhYjQuLjBkZGJmNDA0YjVhMmU4MTJlZmNmOGNkYTQ1
NDA2YWExNWNkYWQzZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVmFsaWRhdGlv
bk1lc3NhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVmFsaWRhdGlvbk1lc3NhZ2Uu
Y3BwCkBAIC0xMjIsNyArMTIyLDcgQEAgdm9pZCBWYWxpZGF0aW9uTWVzc2FnZTo6YnVpbGRCdWJi
bGVUcmVlKFRpbWVyPFZhbGlkYXRpb25NZXNzYWdlPiopCiAgICAgaWYgKGhvc3QtPnNoYWRvd1Jv
b3QoKSkKICAgICAgICAgaG9zdC0+c2hhZG93Um9vdCgpLT5hcHBlbmRDaGlsZChtX2J1YmJsZS5n
ZXQoKSwgZWMpOwogICAgIGVsc2UgewotICAgICAgICBob3N0LT5zZXRTaGFkb3dSb290KG1fYnVi
YmxlKTsKKyAgICAgICAgaG9zdC0+c2V0U2hhZG93Um9vdChtX2J1YmJsZS5nZXQoKSk7CiAgICAg
ICAgIC8vIEZJWE1FOiBUaGUgZm9sbG93aW5nIGF0dGFjaCgpIHNob3VsZCBiZSB1bm5lY2Vzc2Fy
eS4KICAgICAgICAgbV9idWJibGUtPmF0dGFjaCgpOwogICAgIH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>79396</attachid>
            <date>2011-01-18 23:43:38 -0800</date>
            <delta_ts>2011-01-19 00:11:48 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-51914-20110119164337.patch</filename>
            <type>text/plain</type>
            <size>3675</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBhM2U1ZGM4NGMyMjEzMWZiNmIwODQ0ODY4ZDc3Y2I1ZmZkNDEzYjVmLi44
Y2NlZTA3YThjYTkyYjZlMDExZDY2OGRlY2VkZTdlNjVmYmZjZDkzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjEgQEAKKzIwMTEtMDEtMTggTU9SSVRBIEhhamltZSA8bW9ycml0YUBnb29nbGUuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEVsZW1l
bnRSYXJlRGF0YTo6bV9zaGFkb3dSb290IHNob3VsZCBub3QgYmUgUmVmUHRyLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTE5MTQKKworICAgICAgICBO
byBuZXcgdGVzdHMuIE5vIGJlaGF2aW9yYWwgY2hhbmdlLgorCisgICAgICAgICogZG9tL0VsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6fkVsZW1lbnQpOgorICAgICAgICAo
V2ViQ29yZTo6RWxlbWVudDo6c2hhZG93Um9vdCk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50
OjpzZXRTaGFkb3dSb290KToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnJlbW92ZVNoYWRv
d1Jvb3QpOgorICAgICAgICAqIGRvbS9FbGVtZW50UmFyZURhdGEuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkVsZW1lbnRSYXJlRGF0YTo6RWxlbWVudFJhcmVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6
OkVsZW1lbnRSYXJlRGF0YTo6fkVsZW1lbnRSYXJlRGF0YSk6CisKIDIwMTEtMDEtMTggTU9SSVRB
IEhhamltZSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBSeW9z
dWtlIE5pd2EuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXggYzYxYjk1ZDdjMTUyYjcwODc2NGZj
OGJjYzRmM2Q1MmEzYzljYmNmZC4uYzYyYWU0OWJmMjY4ZGY2NDMzMWI5YWNkMGIyNTA5MWE1MWI3
Yjk4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAtNzUsNiArNzUsNyBAQCBQYXNzUmVmUHRy
PEVsZW1lbnQ+IEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBE
b2N1bWVudCogZG9jdQogCiBFbGVtZW50Ojp+RWxlbWVudCgpCiB7CisgICAgcmVtb3ZlU2hhZG93
Um9vdCgpOwogICAgIGlmIChtX2F0dHJpYnV0ZU1hcCkKICAgICAgICAgbV9hdHRyaWJ1dGVNYXAt
PmRldGFjaEZyb21FbGVtZW50KCk7CiB9CkBAIC0xMDg0LDcgKzEwODUsNyBAQCB2b2lkIEVsZW1l
bnQ6OnJlY2FsY1N0eWxlKFN0eWxlQ2hhbmdlIGNoYW5nZSkKIAogTm9kZSogRWxlbWVudDo6c2hh
ZG93Um9vdCgpCiB7Ci0gICAgcmV0dXJuIGhhc1JhcmVEYXRhKCkgPyByYXJlRGF0YSgpLT5tX3No
YWRvd1Jvb3QuZ2V0KCkgOiAwOworICAgIHJldHVybiBoYXNSYXJlRGF0YSgpID8gcmFyZURhdGEo
KS0+bV9zaGFkb3dSb290IDogMDsKIH0KIAogdm9pZCBFbGVtZW50OjpzZXRTaGFkb3dSb290KFBh
c3NSZWZQdHI8Tm9kZT4gbm9kZSkKQEAgLTEwOTMsMTEgKzEwOTQsMTIgQEAgdm9pZCBFbGVtZW50
OjpzZXRTaGFkb3dSb290KFBhc3NSZWZQdHI8Tm9kZT4gbm9kZSkKICAgICAvLyBhYm91dCBjb21w
cm9taXNpbmcgRE9NIHRyZWUgaW50ZWdyaXR5IChlZy4gbm9kZSBiZWluZyBhIHBhcmVudCBvZiB0
aGlzKS4gSG93ZXZlciwKICAgICAvLyBvbmNlIHdlIGltcGxlbWVudCBYQkwyLCB3ZSB3aWxsIGhh
dmUgdG8gYWRkIGludGVncml0eSBjaGVja3MgaGVyZS4KICAgICByZW1vdmVTaGFkb3dSb290KCk7
CisKICAgICBSZWZQdHI8Tm9kZT4gbmV3Um9vdCA9IG5vZGU7CiAgICAgaWYgKCFuZXdSb290KQog
ICAgICAgICByZXR1cm47CiAKLSAgICBlbnN1cmVSYXJlRGF0YSgpLT5tX3NoYWRvd1Jvb3QgPSBu
ZXdSb290OworICAgIGVuc3VyZVJhcmVEYXRhKCktPm1fc2hhZG93Um9vdCA9IG5ld1Jvb3QuZ2V0
KCk7CiAgICAgbmV3Um9vdC0+c2V0U2hhZG93SG9zdCh0aGlzKTsKIH0KIApAQCAtMTEwNiw3ICsx
MTA4LDkgQEAgdm9pZCBFbGVtZW50OjpyZW1vdmVTaGFkb3dSb290KCkKICAgICBpZiAoIWhhc1Jh
cmVEYXRhKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChSZWZQdHI8Tm9kZT4gb2xkUm9v
dCA9IHJhcmVEYXRhKCktPm1fc2hhZG93Um9vdC5yZWxlYXNlKCkpIHsKKyAgICBFbGVtZW50UmFy
ZURhdGEqIGRhdGEgPSByYXJlRGF0YSgpOworICAgIGlmIChSZWZQdHI8Tm9kZT4gb2xkUm9vdCA9
IGRhdGEtPm1fc2hhZG93Um9vdCkgeworICAgICAgICBkYXRhLT5tX3NoYWRvd1Jvb3QgPSAwOwog
ICAgICAgICBkb2N1bWVudCgpLT5yZW1vdmVGb2N1c2VkTm9kZU9mU3VidHJlZShvbGRSb290Lmdl
dCgpKTsKICAgICAgICAgb2xkUm9vdC0+c2V0U2hhZG93SG9zdCgwKTsKICAgICAgICAgaWYgKG9s
ZFJvb3QtPmluRG9jdW1lbnQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVt
ZW50UmFyZURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50UmFyZURhdGEuaAppbmRl
eCBmN2YzMGJiNzA4ZDFmZTgzNWVlNjhmYWE5MDU3NjNiYjY0ODg2YzQ3Li44MThhMmMyZjBmZjk4
N2RjNWNkNjNhOTcyOTViZWM1YjgwZWQ0YTI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRWxlbWVudFJhcmVEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRSYXJl
RGF0YS5oCkBAIC0zMyw2ICszMyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEVsZW1l
bnRSYXJlRGF0YSA6IHB1YmxpYyBOb2RlUmFyZURhdGEgewogcHVibGljOgogICAgIEVsZW1lbnRS
YXJlRGF0YSgpOworICAgIHZpcnR1YWwgfkVsZW1lbnRSYXJlRGF0YSgpOwogCiAgICAgdm9pZCBy
ZXNldENvbXB1dGVkU3R5bGUoKTsKIApAQCAtNDEsNyArNDIsNyBAQCBwdWJsaWM6CiAKICAgICBJ
bnRTaXplIG1fbWluaW11bVNpemVGb3JSZXNpemluZzsKICAgICBSZWZQdHI8UmVuZGVyU3R5bGU+
IG1fY29tcHV0ZWRTdHlsZTsKLSAgICBSZWZQdHI8Tm9kZT4gbV9zaGFkb3dSb290OworICAgIE5v
ZGUqIG1fc2hhZG93Um9vdDsKIAogICAgIE93blB0cjxEYXRhc2V0RE9NU3RyaW5nTWFwPiBtX2Rh
dGFzZXRET01TdHJpbmdNYXA7CiAgICAgT3duUHRyPENsYXNzTGlzdD4gbV9jbGFzc0xpc3Q7CkBA
IC01NCw5ICs1NSwxNSBAQCBpbmxpbmUgSW50U2l6ZSBkZWZhdWx0TWluaW11bVNpemVGb3JSZXNp
emluZygpCiAKIGlubGluZSBFbGVtZW50UmFyZURhdGE6OkVsZW1lbnRSYXJlRGF0YSgpCiAgICAg
OiBtX21pbmltdW1TaXplRm9yUmVzaXppbmcoZGVmYXVsdE1pbmltdW1TaXplRm9yUmVzaXppbmco
KSkKKyAgICAsIG1fc2hhZG93Um9vdCgwKQogewogfQogCitpbmxpbmUgRWxlbWVudFJhcmVEYXRh
Ojp+RWxlbWVudFJhcmVEYXRhKCkKK3sKKyAgICBBU1NFUlQoIW1fc2hhZG93Um9vdCk7Cit9CisK
IGlubGluZSB2b2lkIEVsZW1lbnRSYXJlRGF0YTo6cmVzZXRDb21wdXRlZFN0eWxlKCkKIHsKICAg
ICBtX2NvbXB1dGVkU3R5bGUuY2xlYXIoKTsK
</data>
<flag name="review"
          id="70810"
          type_id="1"
          status="+"
          setter="levin"
    />
          </attachment>
      

    </bug>

</bugzilla>