<?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>103650</bug_id>
          
          <creation_ts>2012-11-29 10:38:00 -0800</creation_ts>
          <short_desc>[CoordinatedGraphics] Use OwnPtr for LayerMap&apos;s layers in LayerTreeRenderer</short_desc>
          <delta_ts>2012-12-01 02:06:31 -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>WebKit2</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="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>dongseong.hwang</cc>
    
    <cc>jturcotte</cc>
    
    <cc>kenneth</cc>
    
    <cc>noam</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zeno</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>779170</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-11-29 10:38:00 -0800</bug_when>
    <thetext>We currently store raw pointers to WebCore::GraphicsLayer in the LayerMap meaning that we need to delete them manually.
We could use smart pointers and store them as OwnPtr in the LayerMap. The LayerMap would own the layers and we would not need to handle memory manually.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>779173</commentid>
    <comment_count>1</comment_count>
      <attachid>176759</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-11-29 10:45:02 -0800</bug_when>
    <thetext>Created attachment 176759
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>779180</commentid>
    <comment_count>2</comment_count>
      <attachid>176759</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-11-29 10:50:06 -0800</bug_when>
    <thetext>Comment on attachment 176759
Patch

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

&gt; Source/WebKit2/UIProcess/CoordinatedGraphics/LayerTreeRenderer.h:183
&gt; +    typedef HashMap&lt; WebLayerID, OwnPtr&lt;WebCore::GraphicsLayer&gt; &gt; LayerMap;

I dont think the first space is needed

&gt; Source/WebKit2/UIProcess/CoordinatedGraphics/LayerTreeRenderer.h:185
&gt; +    typedef HashMap&lt;WebLayerID, WebCore::GraphicsLayer*&gt; RawLayerMap;

LayerPtrMap ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>779182</commentid>
    <comment_count>3</comment_count>
      <attachid>176759</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-11-29 10:52:33 -0800</bug_when>
    <thetext>Comment on attachment 176759
Patch

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

&gt; Source/WebKit2/UIProcess/CoordinatedGraphics/LayerTreeRenderer.cpp:-375
&gt;      m_fixedLayers.remove(layerID);
&gt;  #if USE(GRAPHICS_SURFACE)
&gt;      m_surfaceBackingStores.remove(layerID);
&gt;  #endif
&gt; -    delete layer;

so how are they stored here</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>779199</commentid>
    <comment_count>4</comment_count>
      <attachid>176759</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-11-29 10:59:39 -0800</bug_when>
    <thetext>Comment on attachment 176759
Patch

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

&gt;&gt; Source/WebKit2/UIProcess/CoordinatedGraphics/LayerTreeRenderer.cpp:-375
&gt;&gt; -    delete layer;
&gt; 
&gt; so how are they stored here

Sorry, I don&apos;t get the question. Is the comment on the right line?
I&apos;m merely removing the explicit deletion here since it will get deleted when the OwnPtr goes out of scope.

&gt;&gt; Source/WebKit2/UIProcess/CoordinatedGraphics/LayerTreeRenderer.h:183
&gt;&gt; +    typedef HashMap&lt; WebLayerID, OwnPtr&lt;WebCore::GraphicsLayer&gt; &gt; LayerMap;
&gt; 
&gt; I dont think the first space is needed

It is not but I like symmetry :) Anyway, if the other way is more common I will change.

&gt;&gt; Source/WebKit2/UIProcess/CoordinatedGraphics/LayerTreeRenderer.h:185
&gt;&gt; +    typedef HashMap&lt;WebLayerID, WebCore::GraphicsLayer*&gt; RawLayerMap;
&gt; 
&gt; LayerPtrMap ?

Is it really clearer? They are both pointers (Ptr), the different is that one is raw and the other isn&apos;t. LayerRawPtrMap ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>779249</commentid>
    <comment_count>5</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-11-29 11:40:43 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 176759 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=176759&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebKit2/UIProcess/CoordinatedGraphics/LayerTreeRenderer.cpp:-375
&gt; &gt;&gt; -    delete layer;
&gt; &gt; 
&gt; &gt; so how are they stored here
&gt; 
&gt; Sorry, I don&apos;t get the question. Is the comment on the right line?
&gt; I&apos;m merely removing the explicit deletion here since it will get deleted when the OwnPtr goes out of scope.

I was refering to m_surfaceBackingStores.remove(layerID); but that is out of scope for this patch


&gt; &gt;&gt; Source/WebKit2/UIProcess/CoordinatedGraphics/LayerTreeRenderer.h:183
&gt; &gt;&gt; +    typedef HashMap&lt; WebLayerID, OwnPtr&lt;WebCore::GraphicsLayer&gt; &gt; LayerMap;
&gt; &gt; 
&gt; &gt; I dont think the first space is needed
&gt; 
&gt; It is not but I like symmetry :) Anyway, if the other way is more common I will change.

Dont do this, it is uncommon and as you can see not done in RawLayerMap

&gt; 
&gt; &gt;&gt; Source/WebKit2/UIProcess/CoordinatedGraphics/LayerTreeRenderer.h:185
&gt; &gt;&gt; +    typedef HashMap&lt;WebLayerID, WebCore::GraphicsLayer*&gt; RawLayerMap;
&gt; &gt; 
&gt; &gt; LayerPtrMap ?
&gt; 
&gt; Is it really clearer? They are both pointers (Ptr), the different is that one is raw and the other isn&apos;t. LayerRawPtrMap ?

yes I like LayerRawPtrMap more</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>779255</commentid>
    <comment_count>6</comment_count>
      <attachid>176771</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-11-29 11:45:28 -0800</bug_when>
    <thetext>Created attachment 176771
Patch

Take Kenneth&apos;s feedback into consideration.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>779258</commentid>
    <comment_count>7</comment_count>
      <attachid>176771</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-11-29 11:47:34 -0800</bug_when>
    <thetext>Comment on attachment 176771
Patch

This is fine with me. Leaving cq still at ? in case Kenneth has more comments :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>779334</commentid>
    <comment_count>8</comment_count>
      <attachid>176771</attachid>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2012-11-29 12:37:11 -0800</bug_when>
    <thetext>Comment on attachment 176771
Patch

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

&gt; Source/WebKit2/UIProcess/CoordinatedGraphics/LayerTreeRenderer.cpp:366
&gt; +    OwnPtr&lt;GraphicsLayer&gt; layer = m_layers.take(layerID);

Is it OwnPtr(const OwnPtr&lt;ValueType&gt;&amp;); ?
        // This copy constructor is used implicitly by gcc when it generates
        // transients for assigning a PassOwnPtr&lt;T&gt; object to a stack-allocated
        // OwnPtr&lt;T&gt; object. It should never be called explicitly and gcc
        // should optimize away the constructor when generating code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>779339</commentid>
    <comment_count>9</comment_count>
      <attachid>176771</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-11-29 12:39:09 -0800</bug_when>
    <thetext>Comment on attachment 176771
Patch

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

&gt;&gt; Source/WebKit2/UIProcess/CoordinatedGraphics/LayerTreeRenderer.cpp:366
&gt;&gt; +    OwnPtr&lt;GraphicsLayer&gt; layer = m_layers.take(layerID);
&gt; 
&gt; Is it OwnPtr(const OwnPtr&lt;ValueType&gt;&amp;); ?
&gt;         // This copy constructor is used implicitly by gcc when it generates
&gt;         // transients for assigning a PassOwnPtr&lt;T&gt; object to a stack-allocated
&gt;         // OwnPtr&lt;T&gt; object. It should never be called explicitly and gcc
&gt;         // should optimize away the constructor when generating code.

take() returns a PassOwnPtr here so it is fine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>779576</commentid>
    <comment_count>10</comment_count>
      <attachid>176771</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-29 16:30:04 -0800</bug_when>
    <thetext>Comment on attachment 176771
Patch

Clearing flags on attachment: 176771

Committed r136181: &lt;http://trac.webkit.org/changeset/136181&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>779577</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-29 16:30:09 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>780688</commentid>
    <comment_count>12</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-12-01 00:45:45 -0800</bug_when>
    <thetext>I&apos;m afraid whether it is safe for HashMap to contain OwnPtr.

AFAIK, Vector&lt;OwnPtr&lt;T&gt; &gt; is unsafe because relocating can call destructor and constructor.

I don&apos;t know detail of HashMap implementation, so I can not say it is unsafe surely. However, I&apos;m afraid.

In common, we don&apos;t store autoptr in stl::HashMap.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>780690</commentid>
    <comment_count>13</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-12-01 01:01:08 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; I&apos;m afraid whether it is safe for HashMap to contain OwnPtr.
&gt; 
&gt; AFAIK, Vector&lt;OwnPtr&lt;T&gt; &gt; is unsafe because relocating can call destructor and constructor.
&gt; 
&gt; I don&apos;t know detail of HashMap implementation, so I can not say it is unsafe surely. However, I&apos;m afraid.
&gt; 
&gt; In common, we don&apos;t store autoptr in stl::HashMap.

The WTF::HashMap has a specific behaviour for OwnPtr defined in HashTraits.h. I don&apos;t think this is unsafe and it is also used in other places in WebKit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>780695</commentid>
    <comment_count>14</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-12-01 02:06:31 -0800</bug_when>
    <thetext>(In reply to comment #13)
&gt; (In reply to comment #12)
&gt; &gt; I&apos;m afraid whether it is safe for HashMap to contain OwnPtr.
&gt; &gt; 
&gt; &gt; AFAIK, Vector&lt;OwnPtr&lt;T&gt; &gt; is unsafe because relocating can call destructor and constructor.
&gt; &gt; 
&gt; &gt; I don&apos;t know detail of HashMap implementation, so I can not say it is unsafe surely. However, I&apos;m afraid.
&gt; &gt; 
&gt; &gt; In common, we don&apos;t store autoptr in stl::HashMap.
&gt; 
&gt; The WTF::HashMap has a specific behaviour for OwnPtr defined in HashTraits.h. I don&apos;t think this is unsafe and it is also used in other places in WebKit.

Thanks for explanation!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>176759</attachid>
            <date>2012-11-29 10:45:02 -0800</date>
            <delta_ts>2012-11-29 11:45:28 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>103650_LayerMap_OwnPtr.patch</filename>
            <type>text/plain</type>
            <size>5023</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCAyNjI5MmZiLi5hZTM0MjBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMjQg
QEAKIDIwMTItMTEtMjkgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVs
LmNvbT4KIAorICAgICAgICBbQ29vcmRpbmF0ZWRHcmFwaGljc10gVXNlIE93blB0ciBmb3IgTGF5
ZXJNYXAncyBsYXllcnMgaW4gTGF5ZXJUcmVlUmVuZGVyZXIKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMzY1MAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlIGN1cnJlbnRseSBzdG9yZSByYXcgcG9pbnRl
cnMgdG8gV2ViQ29yZTo6R3JhcGhpY3NMYXllciBpbiB0aGUgTGF5ZXJNYXAKKyAgICAgICAgbWVh
bmluZyB0aGF0IHdlIG5lZWQgdG8gZGVsZXRlIHRoZW0gbWFudWFsbHkuIFRoaXMgcGF0Y2ggbGV2
ZXJhZ2VzIHNtYXJ0CisgICAgICAgIHBvaW50ZXJzIGFuZCBzdG9yZXMgbGF5ZXJzIGFzIE93blB0
ciBpbiB0aGUgTGF5ZXJNYXAgc28gdGhhdCB0aGUgbGF5ZXJzCisgICAgICAgIGFyZSBvd25lZCBi
eSB0aGUgSGFzaE1hcCBhbmQgd2UgZG9uJ3QgaGF2ZSB0byBoYW5kbGUgbWVtb3J5IG1hbnVhbGx5
LgorCisgICAgICAgICogVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlUmVu
ZGVyZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVSZW5kZXJlcjo6YWRqdXN0UG9z
aXRpb25Gb3JGaXhlZExheWVycyk6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZVJlbmRlcmVy
OjpzZXRMYXllckNoaWxkcmVuKToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlUmVuZGVyZXI6
OmRlbGV0ZUxheWVyKToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlUmVuZGVyZXI6OmVuc3Vy
ZUxheWVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRy
ZWVSZW5kZXJlci5oOgorCisyMDEyLTExLTI5ICBDaHJpc3RvcGhlIER1bWV6ICA8Y2hyaXN0b3Bo
ZS5kdW1lekBpbnRlbC5jb20+CisKICAgICAgICAgW0Nvb3JkaW5hdGVkR3JhcGhpY3NdIEhhdmUg
TGF5ZXJUcmVlUmVuZGVyZXI6OmVuc3VyZUxheWVyKCkgcmV0dXJuIHRoZSBsYXllcgogICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAzNjQ1CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVy
VHJlZVJlbmRlcmVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdy
YXBoaWNzL0xheWVyVHJlZVJlbmRlcmVyLmNwcAppbmRleCAyMjc2NTczLi43NTNiNDg2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXll
clRyZWVSZW5kZXJlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvTGF5ZXJUcmVlUmVuZGVyZXIuY3BwCkBAIC0yMTYsOCArMjE2LDggQEAgdm9p
ZCBMYXllclRyZWVSZW5kZXJlcjo6YWRqdXN0UG9zaXRpb25Gb3JGaXhlZExheWVycygpCiAgICAg
RmxvYXRQb2ludCByZW5kZXJlZFNjcm9sbFBvc2l0aW9uID0gYm91bmRlZFNjcm9sbFBvc2l0aW9u
KG1fcmVuZGVyZWRDb250ZW50c1Njcm9sbFBvc2l0aW9uLCBtX3Zpc2libGVDb250ZW50c1JlY3Qs
IG1fY29udGVudHNTaXplKTsKICAgICBGbG9hdFNpemUgZGVsdGEgPSBzY3JvbGxQb3NpdGlvbiAt
IHJlbmRlcmVkU2Nyb2xsUG9zaXRpb247CiAKLSAgICBMYXllck1hcDo6aXRlcmF0b3IgZW5kID0g
bV9maXhlZExheWVycy5lbmQoKTsKLSAgICBmb3IgKExheWVyTWFwOjppdGVyYXRvciBpdCA9IG1f
Zml4ZWRMYXllcnMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQorICAgIFJhd0xheWVyTWFwOjpp
dGVyYXRvciBlbmQgPSBtX2ZpeGVkTGF5ZXJzLmVuZCgpOworICAgIGZvciAoUmF3TGF5ZXJNYXA6
Oml0ZXJhdG9yIGl0ID0gbV9maXhlZExheWVycy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCiAg
ICAgICAgIHRvVGV4dHVyZU1hcHBlckxheWVyKGl0LT52YWx1ZSktPnNldFNjcm9sbFBvc2l0aW9u
RGVsdGFJZk5lZWRlZChkZWx0YSk7CiB9CiAKQEAgLTI3Myw4ICsyNzMsOSBAQCB2b2lkIExheWVy
VHJlZVJlbmRlcmVyOjpzZXRMYXllckNoaWxkcmVuKFdlYkxheWVySUQgaWQsIGNvbnN0IFZlY3Rv
cjxXZWJMYXllcklEPgogICAgICAgICBXZWJMYXllcklEIGNoaWxkSUQgPSBjaGlsZElEc1tpXTsK
ICAgICAgICAgR3JhcGhpY3NMYXllciogY2hpbGQgPSBsYXllckJ5SUQoY2hpbGRJRCk7CiAgICAg
ICAgIGlmICghY2hpbGQpIHsKLSAgICAgICAgICAgIGNoaWxkID0gY3JlYXRlTGF5ZXIoY2hpbGRJ
RCkubGVha1B0cigpOwotICAgICAgICAgICAgbV9sYXllcnMuYWRkKGNoaWxkSUQsIGNoaWxkKTsK
KyAgICAgICAgICAgIE93blB0cjxHcmFwaGljc0xheWVyKj4gbmV3Q2hpbGQgPSBjcmVhdGVMYXll
cihjaGlsZElEKTsKKyAgICAgICAgICAgIGNoaWxkID0gbmV3Q2hpbGQuZ2V0KCk7CisgICAgICAg
ICAgICBtX2xheWVycy5hZGQoY2hpbGRJRCwgbmV3Q2hpbGQucmVsZWFzZSgpKTsKICAgICAgICAg
fQogICAgICAgICBjaGlsZHJlbi5hcHBlbmQoY2hpbGQpOwogICAgIH0KQEAgLTM2MiwxNyArMzYz
LDE1IEBAIHZvaWQgTGF5ZXJUcmVlUmVuZGVyZXI6OnNldExheWVyU3RhdGUoV2ViTGF5ZXJJRCBp
ZCwgY29uc3QgV2ViTGF5ZXJJbmZvJiBsYXllckluCiAKIHZvaWQgTGF5ZXJUcmVlUmVuZGVyZXI6
OmRlbGV0ZUxheWVyKFdlYkxheWVySUQgbGF5ZXJJRCkKIHsKLSAgICBHcmFwaGljc0xheWVyKiBs
YXllciA9IGxheWVyQnlJRChsYXllcklEKTsKKyAgICBPd25QdHI8R3JhcGhpY3NMYXllcj4gbGF5
ZXIgPSBtX2xheWVycy50YWtlKGxheWVySUQpOwogICAgIGlmICghbGF5ZXIpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIGxheWVyLT5yZW1vdmVGcm9tUGFyZW50KCk7Ci0gICAgbV9sYXllcnMucmVt
b3ZlKGxheWVySUQpOwogICAgIG1fZml4ZWRMYXllcnMucmVtb3ZlKGxheWVySUQpOwogI2lmIFVT
RShHUkFQSElDU19TVVJGQUNFKQogICAgIG1fc3VyZmFjZUJhY2tpbmdTdG9yZXMucmVtb3ZlKGxh
eWVySUQpOwogI2VuZGlmCi0gICAgZGVsZXRlIGxheWVyOwogfQogCiAKQEAgLTM4MCwxMiArMzc5
LDExIEBAIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqIExheWVyVHJlZVJlbmRlcmVyOjplbnN1cmVM
YXllcihXZWJMYXllcklEIGlkKQogewogICAgIExheWVyTWFwOjppdGVyYXRvciBpdCA9IG1fbGF5
ZXJzLmZpbmQoaWQpOwogICAgIGlmIChpdCAhPSBtX2xheWVycy5lbmQoKSkKLSAgICAgICAgcmV0
dXJuIGl0LT52YWx1ZTsKKyAgICAgICAgcmV0dXJuIGl0LT52YWx1ZS5nZXQoKTsKIAotICAgIC8v
IFdlIGhhdmUgdG8gbGVhayB0aGUgbmV3IGxheWVyJ3MgcG9pbnRlciBhbmQgbWFuYWdlIGl0IG91
cnNlbHZlcywKLSAgICAvLyBiZWNhdXNlIE93blB0ciBpcyBub3QgY29weWFibGUuCi0gICAgV2Vi
Q29yZTo6R3JhcGhpY3NMYXllciogbGF5ZXIgPSBjcmVhdGVMYXllcihpZCkubGVha1B0cigpOwot
ICAgIG1fbGF5ZXJzLmFkZChpZCwgbGF5ZXIpOworICAgIE93blB0cjxXZWJDb3JlOjpHcmFwaGlj
c0xheWVyPiBuZXdMYXllciA9IGNyZWF0ZUxheWVyKGlkKTsKKyAgICBXZWJDb3JlOjpHcmFwaGlj
c0xheWVyKiBsYXllciA9IG5ld0xheWVyLmdldCgpOworICAgIG1fbGF5ZXJzLmFkZChpZCwgbmV3
TGF5ZXIucmVsZWFzZSgpKTsKIAogICAgIHJldHVybiBsYXllcjsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZVJlbmRl
cmVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXll
clRyZWVSZW5kZXJlci5oCmluZGV4IDhlYzQ5NjguLjdmMGNhY2QgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZVJlbmRlcmVy
LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5
ZXJUcmVlUmVuZGVyZXIuaApAQCAtMTUxLDcgKzE1MSw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBy
ZW1vdmVCYWNraW5nU3RvcmVJZk5lZWRlZChXZWJDb3JlOjpHcmFwaGljc0xheWVyKik7CiAgICAg
dm9pZCByZXNldEJhY2tpbmdTdG9yZVNpemVUb0xheWVyU2l6ZShXZWJDb3JlOjpHcmFwaGljc0xh
eWVyKik7CiAKLSAgICB0eXBlZGVmIEhhc2hNYXA8V2ViTGF5ZXJJRCwgV2ViQ29yZTo6R3JhcGhp
Y3NMYXllcio+IExheWVyTWFwOwogICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSBtX2NvbnRlbnRzU2l6
ZTsKICAgICBXZWJDb3JlOjpGbG9hdFJlY3QgbV92aXNpYmxlQ29udGVudHNSZWN0OwogCkBAIC0x
ODEsOCArMTgwLDEwIEBAIHByaXZhdGU6CiAKICAgICBPd25QdHI8V2ViQ29yZTo6R3JhcGhpY3NM
YXllcj4gbV9yb290TGF5ZXI7CiAKKyAgICB0eXBlZGVmIEhhc2hNYXA8IFdlYkxheWVySUQsIE93
blB0cjxXZWJDb3JlOjpHcmFwaGljc0xheWVyPiA+IExheWVyTWFwOwogICAgIExheWVyTWFwIG1f
bGF5ZXJzOwotICAgIExheWVyTWFwIG1fZml4ZWRMYXllcnM7CisgICAgdHlwZWRlZiBIYXNoTWFw
PFdlYkxheWVySUQsIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqPiBSYXdMYXllck1hcDsKKyAgICBS
YXdMYXllck1hcCBtX2ZpeGVkTGF5ZXJzOwogICAgIFdlYkxheWVySUQgbV9yb290TGF5ZXJJRDsK
ICAgICBXZWJDb3JlOjpJbnRQb2ludCBtX3JlbmRlcmVkQ29udGVudHNTY3JvbGxQb3NpdGlvbjsK
ICAgICBXZWJDb3JlOjpJbnRQb2ludCBtX3BlbmRpbmdSZW5kZXJlZENvbnRlbnRzU2Nyb2xsUG9z
aXRpb247Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>176771</attachid>
            <date>2012-11-29 11:45:28 -0800</date>
            <delta_ts>2012-11-29 16:30:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>103650_LayerMap_OwnPtr.patch</filename>
            <type>text/plain</type>
            <size>5034</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCAyNjI5MmZiLi5hZTM0MjBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMjQg
QEAKIDIwMTItMTEtMjkgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVs
LmNvbT4KIAorICAgICAgICBbQ29vcmRpbmF0ZWRHcmFwaGljc10gVXNlIE93blB0ciBmb3IgTGF5
ZXJNYXAncyBsYXllcnMgaW4gTGF5ZXJUcmVlUmVuZGVyZXIKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMzY1MAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlIGN1cnJlbnRseSBzdG9yZSByYXcgcG9pbnRl
cnMgdG8gV2ViQ29yZTo6R3JhcGhpY3NMYXllciBpbiB0aGUgTGF5ZXJNYXAKKyAgICAgICAgbWVh
bmluZyB0aGF0IHdlIG5lZWQgdG8gZGVsZXRlIHRoZW0gbWFudWFsbHkuIFRoaXMgcGF0Y2ggbGV2
ZXJhZ2VzIHNtYXJ0CisgICAgICAgIHBvaW50ZXJzIGFuZCBzdG9yZXMgbGF5ZXJzIGFzIE93blB0
ciBpbiB0aGUgTGF5ZXJNYXAgc28gdGhhdCB0aGUgbGF5ZXJzCisgICAgICAgIGFyZSBvd25lZCBi
eSB0aGUgSGFzaE1hcCBhbmQgd2UgZG9uJ3QgaGF2ZSB0byBoYW5kbGUgbWVtb3J5IG1hbnVhbGx5
LgorCisgICAgICAgICogVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlUmVu
ZGVyZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVSZW5kZXJlcjo6YWRqdXN0UG9z
aXRpb25Gb3JGaXhlZExheWVycyk6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZVJlbmRlcmVy
OjpzZXRMYXllckNoaWxkcmVuKToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlUmVuZGVyZXI6
OmRlbGV0ZUxheWVyKToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlUmVuZGVyZXI6OmVuc3Vy
ZUxheWVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRy
ZWVSZW5kZXJlci5oOgorCisyMDEyLTExLTI5ICBDaHJpc3RvcGhlIER1bWV6ICA8Y2hyaXN0b3Bo
ZS5kdW1lekBpbnRlbC5jb20+CisKICAgICAgICAgW0Nvb3JkaW5hdGVkR3JhcGhpY3NdIEhhdmUg
TGF5ZXJUcmVlUmVuZGVyZXI6OmVuc3VyZUxheWVyKCkgcmV0dXJuIHRoZSBsYXllcgogICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAzNjQ1CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVy
VHJlZVJlbmRlcmVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdy
YXBoaWNzL0xheWVyVHJlZVJlbmRlcmVyLmNwcAppbmRleCAyMjc2NTczLi43MWM0YmNiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXll
clRyZWVSZW5kZXJlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvTGF5ZXJUcmVlUmVuZGVyZXIuY3BwCkBAIC0yMTYsOCArMjE2LDggQEAgdm9p
ZCBMYXllclRyZWVSZW5kZXJlcjo6YWRqdXN0UG9zaXRpb25Gb3JGaXhlZExheWVycygpCiAgICAg
RmxvYXRQb2ludCByZW5kZXJlZFNjcm9sbFBvc2l0aW9uID0gYm91bmRlZFNjcm9sbFBvc2l0aW9u
KG1fcmVuZGVyZWRDb250ZW50c1Njcm9sbFBvc2l0aW9uLCBtX3Zpc2libGVDb250ZW50c1JlY3Qs
IG1fY29udGVudHNTaXplKTsKICAgICBGbG9hdFNpemUgZGVsdGEgPSBzY3JvbGxQb3NpdGlvbiAt
IHJlbmRlcmVkU2Nyb2xsUG9zaXRpb247CiAKLSAgICBMYXllck1hcDo6aXRlcmF0b3IgZW5kID0g
bV9maXhlZExheWVycy5lbmQoKTsKLSAgICBmb3IgKExheWVyTWFwOjppdGVyYXRvciBpdCA9IG1f
Zml4ZWRMYXllcnMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQorICAgIExheWVyUmF3UHRyTWFw
OjppdGVyYXRvciBlbmQgPSBtX2ZpeGVkTGF5ZXJzLmVuZCgpOworICAgIGZvciAoTGF5ZXJSYXdQ
dHJNYXA6Oml0ZXJhdG9yIGl0ID0gbV9maXhlZExheWVycy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsr
aXQpCiAgICAgICAgIHRvVGV4dHVyZU1hcHBlckxheWVyKGl0LT52YWx1ZSktPnNldFNjcm9sbFBv
c2l0aW9uRGVsdGFJZk5lZWRlZChkZWx0YSk7CiB9CiAKQEAgLTI3Myw4ICsyNzMsOSBAQCB2b2lk
IExheWVyVHJlZVJlbmRlcmVyOjpzZXRMYXllckNoaWxkcmVuKFdlYkxheWVySUQgaWQsIGNvbnN0
IFZlY3RvcjxXZWJMYXllcklEPgogICAgICAgICBXZWJMYXllcklEIGNoaWxkSUQgPSBjaGlsZElE
c1tpXTsKICAgICAgICAgR3JhcGhpY3NMYXllciogY2hpbGQgPSBsYXllckJ5SUQoY2hpbGRJRCk7
CiAgICAgICAgIGlmICghY2hpbGQpIHsKLSAgICAgICAgICAgIGNoaWxkID0gY3JlYXRlTGF5ZXIo
Y2hpbGRJRCkubGVha1B0cigpOwotICAgICAgICAgICAgbV9sYXllcnMuYWRkKGNoaWxkSUQsIGNo
aWxkKTsKKyAgICAgICAgICAgIE93blB0cjxHcmFwaGljc0xheWVyKj4gbmV3Q2hpbGQgPSBjcmVh
dGVMYXllcihjaGlsZElEKTsKKyAgICAgICAgICAgIGNoaWxkID0gbmV3Q2hpbGQuZ2V0KCk7Cisg
ICAgICAgICAgICBtX2xheWVycy5hZGQoY2hpbGRJRCwgbmV3Q2hpbGQucmVsZWFzZSgpKTsKICAg
ICAgICAgfQogICAgICAgICBjaGlsZHJlbi5hcHBlbmQoY2hpbGQpOwogICAgIH0KQEAgLTM2Miwx
NyArMzYzLDE1IEBAIHZvaWQgTGF5ZXJUcmVlUmVuZGVyZXI6OnNldExheWVyU3RhdGUoV2ViTGF5
ZXJJRCBpZCwgY29uc3QgV2ViTGF5ZXJJbmZvJiBsYXllckluCiAKIHZvaWQgTGF5ZXJUcmVlUmVu
ZGVyZXI6OmRlbGV0ZUxheWVyKFdlYkxheWVySUQgbGF5ZXJJRCkKIHsKLSAgICBHcmFwaGljc0xh
eWVyKiBsYXllciA9IGxheWVyQnlJRChsYXllcklEKTsKKyAgICBPd25QdHI8R3JhcGhpY3NMYXll
cj4gbGF5ZXIgPSBtX2xheWVycy50YWtlKGxheWVySUQpOwogICAgIGlmICghbGF5ZXIpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIGxheWVyLT5yZW1vdmVGcm9tUGFyZW50KCk7Ci0gICAgbV9sYXll
cnMucmVtb3ZlKGxheWVySUQpOwogICAgIG1fZml4ZWRMYXllcnMucmVtb3ZlKGxheWVySUQpOwog
I2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQogICAgIG1fc3VyZmFjZUJhY2tpbmdTdG9yZXMucmVt
b3ZlKGxheWVySUQpOwogI2VuZGlmCi0gICAgZGVsZXRlIGxheWVyOwogfQogCiAKQEAgLTM4MCwx
MiArMzc5LDExIEBAIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqIExheWVyVHJlZVJlbmRlcmVyOjpl
bnN1cmVMYXllcihXZWJMYXllcklEIGlkKQogewogICAgIExheWVyTWFwOjppdGVyYXRvciBpdCA9
IG1fbGF5ZXJzLmZpbmQoaWQpOwogICAgIGlmIChpdCAhPSBtX2xheWVycy5lbmQoKSkKLSAgICAg
ICAgcmV0dXJuIGl0LT52YWx1ZTsKKyAgICAgICAgcmV0dXJuIGl0LT52YWx1ZS5nZXQoKTsKIAot
ICAgIC8vIFdlIGhhdmUgdG8gbGVhayB0aGUgbmV3IGxheWVyJ3MgcG9pbnRlciBhbmQgbWFuYWdl
IGl0IG91cnNlbHZlcywKLSAgICAvLyBiZWNhdXNlIE93blB0ciBpcyBub3QgY29weWFibGUuCi0g
ICAgV2ViQ29yZTo6R3JhcGhpY3NMYXllciogbGF5ZXIgPSBjcmVhdGVMYXllcihpZCkubGVha1B0
cigpOwotICAgIG1fbGF5ZXJzLmFkZChpZCwgbGF5ZXIpOworICAgIE93blB0cjxXZWJDb3JlOjpH
cmFwaGljc0xheWVyPiBuZXdMYXllciA9IGNyZWF0ZUxheWVyKGlkKTsKKyAgICBXZWJDb3JlOjpH
cmFwaGljc0xheWVyKiBsYXllciA9IG5ld0xheWVyLmdldCgpOworICAgIG1fbGF5ZXJzLmFkZChp
ZCwgbmV3TGF5ZXIucmVsZWFzZSgpKTsKIAogICAgIHJldHVybiBsYXllcjsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJl
ZVJlbmRlcmVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9MYXllclRyZWVSZW5kZXJlci5oCmluZGV4IDhlYzQ5NjguLjk0NmFjNmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZVJl
bmRlcmVyLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvTGF5ZXJUcmVlUmVuZGVyZXIuaApAQCAtMTUxLDcgKzE1MSw2IEBAIHByaXZhdGU6CiAgICAg
dm9pZCByZW1vdmVCYWNraW5nU3RvcmVJZk5lZWRlZChXZWJDb3JlOjpHcmFwaGljc0xheWVyKik7
CiAgICAgdm9pZCByZXNldEJhY2tpbmdTdG9yZVNpemVUb0xheWVyU2l6ZShXZWJDb3JlOjpHcmFw
aGljc0xheWVyKik7CiAKLSAgICB0eXBlZGVmIEhhc2hNYXA8V2ViTGF5ZXJJRCwgV2ViQ29yZTo6
R3JhcGhpY3NMYXllcio+IExheWVyTWFwOwogICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSBtX2NvbnRl
bnRzU2l6ZTsKICAgICBXZWJDb3JlOjpGbG9hdFJlY3QgbV92aXNpYmxlQ29udGVudHNSZWN0Owog
CkBAIC0xODEsOCArMTgwLDEwIEBAIHByaXZhdGU6CiAKICAgICBPd25QdHI8V2ViQ29yZTo6R3Jh
cGhpY3NMYXllcj4gbV9yb290TGF5ZXI7CiAKKyAgICB0eXBlZGVmIEhhc2hNYXA8V2ViTGF5ZXJJ
RCwgT3duUHRyPFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI+ID4gTGF5ZXJNYXA7CiAgICAgTGF5ZXJN
YXAgbV9sYXllcnM7Ci0gICAgTGF5ZXJNYXAgbV9maXhlZExheWVyczsKKyAgICB0eXBlZGVmIEhh
c2hNYXA8V2ViTGF5ZXJJRCwgV2ViQ29yZTo6R3JhcGhpY3NMYXllcio+IExheWVyUmF3UHRyTWFw
OworICAgIExheWVyUmF3UHRyTWFwIG1fZml4ZWRMYXllcnM7CiAgICAgV2ViTGF5ZXJJRCBtX3Jv
b3RMYXllcklEOwogICAgIFdlYkNvcmU6OkludFBvaW50IG1fcmVuZGVyZWRDb250ZW50c1Njcm9s
bFBvc2l0aW9uOwogICAgIFdlYkNvcmU6OkludFBvaW50IG1fcGVuZGluZ1JlbmRlcmVkQ29udGVu
dHNTY3JvbGxQb3NpdGlvbjsK
</data>

          </attachment>
      

    </bug>

</bugzilla>