<?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>96919</bug_id>
          
          <creation_ts>2012-09-17 07:17:28 -0700</creation_ts>
          <short_desc>[Texmap] Potential crash in TextureMapperLayer because of referencing deleted mask/replica layer</short_desc>
          <delta_ts>2012-09-25 05:33:19 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</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>
          <dependson>97561</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Balazs Kelemen">kbalazs</reporter>
          <assigned_to name="Balazs Kelemen">kbalazs</assigned_to>
          <cc>jturcotte</cc>
    
    <cc>luiz</cc>
    
    <cc>noam</cc>
    
    <cc>ossy</cc>
    
    <cc>rafael.lobo</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>721899</commentid>
    <comment_count>0</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2012-09-17 07:17:28 -0700</bug_when>
    <thetext>When deleting a GraphicsLayerTextureMapper we remove the associated TextureMapperLayer from the layer tree but other layers can still refer to it with m_effectTarget, m_state.maskLayer or m_state.replicaLayer. I don&apos;t know how to reproduce it on trunk, I found it when working on pixel tests (bug 90394 and bug 95992). With those patches compositing/masks tests are crashing in TextureMapperLayer::paintRecursive because we refer to an already deleted object with m_state.maskLayer. I believe the solution here is to traverse the whole tree when deleting a layer and null out all pointers to it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>721905</commentid>
    <comment_count>1</comment_count>
      <attachid>164392</attachid>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2012-09-17 07:28:13 -0700</bug_when>
    <thetext>Created attachment 164392
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>721911</commentid>
    <comment_count>2</comment_count>
      <attachid>164392</attachid>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2012-09-17 07:36:05 -0700</bug_when>
    <thetext>Comment on attachment 164392
Patch

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

&gt; Source/WebCore/ChangeLog:9
&gt; +        m_state.maskLayer or m_state.replicaLayer. For this reason we should traverse the whole tree

Would there be any way we could find a more efficient solution?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>721934</commentid>
    <comment_count>3</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2012-09-17 07:59:50 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 164392 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=164392&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:9
&gt; &gt; +        m_state.maskLayer or m_state.replicaLayer. For this reason we should traverse the whole tree
&gt; 
&gt; Would there be any way we could find a more efficient solution?

I guess we could add members like maskedLayer and replicatedLayer but I&apos;m not sure it is something that need to be optimized since a typical layer tree is just a few nodes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>721944</commentid>
    <comment_count>4</comment_count>
      <attachid>164392</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-09-17 08:11:45 -0700</bug_when>
    <thetext>Comment on attachment 164392
Patch

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

&gt;&gt;&gt; Source/WebCore/ChangeLog:9
&gt;&gt;&gt; +        m_state.maskLayer or m_state.replicaLayer. For this reason we should traverse the whole tree
&gt;&gt; 
&gt;&gt; Would there be any way we could find a more efficient solution?
&gt; 
&gt; I guess we could add members like maskedLayer and replicatedLayer but I&apos;m not sure it is something that need to be optimized since a typical layer tree is just a few nodes.

We can also use an observer pattern, where the mask/replica layer observes the effectTarget and get&apos;s a virtual callback when it&apos;s aboutToBeDeleted.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>721957</commentid>
    <comment_count>5</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2012-09-17 08:26:49 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 164392 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=164392&amp;action=review
&gt; 
&gt; &gt;&gt;&gt; Source/WebCore/ChangeLog:9
&gt; &gt;&gt;&gt; +        m_state.maskLayer or m_state.replicaLayer. For this reason we should traverse the whole tree
&gt; &gt;&gt; 
&gt; &gt;&gt; Would there be any way we could find a more efficient solution?
&gt; &gt; 
&gt; &gt; I guess we could add members like maskedLayer and replicatedLayer but I&apos;m not sure it is something that need to be optimized since a typical layer tree is just a few nodes.
&gt; 
&gt; We can also use an observer pattern, where the mask/replica layer observes the effectTarget and get&apos;s a virtual callback when it&apos;s aboutToBeDeleted.

I did not know that this is the role of the effectTarget. But if we already have a pointer to it, I think we could simply use it directly without an observer pattern.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>721960</commentid>
    <comment_count>6</comment_count>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2012-09-17 08:35:17 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; I guess we could add members like maskedLayer and replicatedLayer but I&apos;m not sure it is something that need to be optimized since a typical layer tree is just a few nodes.

Isn&apos;t this-&gt;m_state.maskLayer-&gt;m_effectTarget == this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>721962</commentid>
    <comment_count>7</comment_count>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2012-09-17 08:37:57 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; I did not know that this is the role of the effectTarget. But if we already have a pointer to it, I think we could simply use it directly without an observer pattern.

Ah yep, that&apos;s what I was trying to say, ignore my comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>722738</commentid>
    <comment_count>8</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2012-09-18 06:42:28 -0700</bug_when>
    <thetext>The basic issue here is that if we have a deletelayer message, and we try to paint before didRenderFrame when all layers are synced (for example the layer that has the deleted one as a mask layer) than our state is not synced correctly. In my use case I paint on every setNeedsDisplay which is called after every message from the LayerTreeCoordinator. However I can imagine that a broken state could occur if the painting is controlled by the scene graph as well. One solution could be to delay every message to be sent until flushPendingLayerChanges, or delay the setNeedsDisplay until didRenderFrame in the UI proc, or maybe we could fix all these cases on the UI side like I did in this patch for the mask layer. I wonder what is the best solution in your opinion.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>722751</commentid>
    <comment_count>9</comment_count>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-09-18 07:06:59 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; The basic issue here is that if we have a deletelayer message, and we try to paint before didRenderFrame when all layers are synced (for example the layer that has the deleted one as a mask layer) than our state is not synced correctly. In my use case I paint on every setNeedsDisplay which is called after every message from the LayerTreeCoordinator. However I can imagine that a broken state could occur if the painting is controlled by the scene graph as well. One solution could be to delay every message to be sent until flushPendingLayerChanges, or delay the setNeedsDisplay until didRenderFrame in the UI proc, or maybe we could fix all these cases on the UI side like I did in this patch for the mask layer. I wonder what is the best solution in your opinion.

We should delay the actual deleting of the mask layer till the beginning of LayerTreeRenderer::flushLayerChanges(). 

In the web process this happens anyway, because layer deletion and syncing is all done synchronously, but in the ui process, as you say, the user may scroll in the middle of those messages.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>722776</commentid>
    <comment_count>10</comment_count>
      <attachid>164560</attachid>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2012-09-18 07:51:54 -0700</bug_when>
    <thetext>Created attachment 164560
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>722781</commentid>
    <comment_count>11</comment_count>
      <attachid>164560</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-09-18 07:54:54 -0700</bug_when>
    <thetext>Comment on attachment 164560
Patch

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

&gt; Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/LayerTreeCoordinator.h:130
&gt; +    HashSet&lt;WebLayerID&gt; m_deletedLayersNeedSync;

How about m_layersToDelete</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>722800</commentid>
    <comment_count>12</comment_count>
      <attachid>164563</attachid>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2012-09-18 08:19:56 -0700</bug_when>
    <thetext>Created attachment 164563
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>722806</commentid>
    <comment_count>13</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2012-09-18 08:20:37 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (From update of attachment 164560 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=164560&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/LayerTreeCoordinator.h:130
&gt; &gt; +    HashSet&lt;WebLayerID&gt; m_deletedLayersNeedSync;
&gt; 
&gt; How about m_layersToDelete

I used m_detachedLayers as we agreed on that on IRC :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>722816</commentid>
    <comment_count>14</comment_count>
      <attachid>164563</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-09-18 08:30:59 -0700</bug_when>
    <thetext>Comment on attachment 164563
Patch

Attachment 164563 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/13896225</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>722820</commentid>
    <comment_count>15</comment_count>
      <attachid>164566</attachid>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2012-09-18 08:33:45 -0700</bug_when>
    <thetext>Created attachment 164566
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>722955</commentid>
    <comment_count>16</comment_count>
      <attachid>164566</attachid>
    <who name="Rafael Brandao">rafael.lobo</who>
    <bug_when>2012-09-18 11:56:03 -0700</bug_when>
    <thetext>Comment on attachment 164566
Patch

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

&gt; Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/LayerTreeCoordinator.h:130
&gt; +    HashSet&lt;WebLayerID&gt; m_detachedLayers;

Is there any need to make this a HashSet? Wouldn&apos;t a queue be enough? The reasoning behind it is not clear just by looking into this patch. If this is correct, then you should leave a note on your ChangeLog explaining it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>723005</commentid>
    <comment_count>17</comment_count>
    <who name="Rafael Brandao">rafael.lobo</who>
    <bug_when>2012-09-18 13:07:37 -0700</bug_when>
    <thetext>By the way is there&apos;s anyway to actually reproduce this crash (perhaps slowing down some calls?). I don&apos;t remember reaching this crash experimenting on bug #93536, but it has been a while ago.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>723052</commentid>
    <comment_count>18</comment_count>
      <attachid>164566</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-09-18 14:29:16 -0700</bug_when>
    <thetext>Comment on attachment 164566
Patch

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

&gt;&gt; Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/LayerTreeCoordinator.h:130
&gt;&gt; +    HashSet&lt;WebLayerID&gt; m_detachedLayers;
&gt; 
&gt; Is there any need to make this a HashSet? Wouldn&apos;t a queue be enough? The reasoning behind it is not clear just by looking into this patch. If this is correct, then you should leave a note on your ChangeLog explaining it.

You&apos;re right, it should be a Vector.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>723396</commentid>
    <comment_count>19</comment_count>
      <attachid>164566</attachid>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2012-09-19 02:10:52 -0700</bug_when>
    <thetext>Comment on attachment 164566
Patch

Landed in http://trac.webkit.org/changeset/128980 with the HashSet-&gt;Vector change</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>723403</commentid>
    <comment_count>20</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2012-09-19 02:20:37 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; By the way is there&apos;s anyway to actually reproduce this crash (perhaps slowing down some calls?). I don&apos;t remember reaching this crash experimenting on bug #93536, but it has been a while ago.

Apply the patch from bug 90394 :) The way how WTR works now does not reproduce this. Maybe running something with mask layers in MiniBrowser, I&apos;m not sure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>727541</commentid>
    <comment_count>21</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2012-09-25 05:33:19 -0700</bug_when>
    <thetext>(In reply to comment #19)
&gt; (From update of attachment 164566 [details])
&gt; Landed in http://trac.webkit.org/changeset/128980 with the HashSet-&gt;Vector change

It broke all QRawWebView API test. Could you check it, please?
Here is the new bug report: https://bugs.webkit.org/show_bug.cgi?id=97561</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>164392</attachid>
            <date>2012-09-17 07:28:13 -0700</date>
            <delta_ts>2012-09-18 07:51:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-96919-20120917162725.patch</filename>
            <type>text/plain</type>
            <size>4013</size>
            <attacher name="Balazs Kelemen">kbalazs</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI4NjE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2U2MGQzYjE2MTY1OTU4
NjMzMGQ0MDUxM2FmMmI0MzUyMzQ0MzJlMi4uZDhjZmFjNzdmNzkzMDgyZTAxOThhNDZhZDc5YTYx
ZTNkZTVhYjRiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDEyLTA5LTE3ICBCYWxh
enMgS2VsZW1lbiAgPGtiYWxhenNAd2Via2l0Lm9yZz4KKworICAgICAgICBbVGV4bWFwXSBQb3Rl
bnRpYWwgY3Jhc2ggaW4gVGV4dHVyZU1hcHBlckxheWVyIGJlY2F1c2Ugb2YgcmVmZXJlbmNpbmcg
ZGVsZXRlZCBtYXNrL3JlcGxpY2EgbGF5ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTk2OTE5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQSBUZXh0dXJlTWFwcGVyTGF5ZXIgY2FuIGJlIHJlZmVyZW5jZWQg
YnkgYW55IG90aGVyIGxheWVyIGluIGl0J3MgdHJlZSB2aWEgbV9lZmZlY3RUYXJnZXQsCisgICAg
ICAgIG1fc3RhdGUubWFza0xheWVyIG9yIG1fc3RhdGUucmVwbGljYUxheWVyLiBGb3IgdGhpcyBy
ZWFzb24gd2Ugc2hvdWxkIHRyYXZlcnNlIHRoZSB3aG9sZSB0cmVlCisgICAgICAgIGFuZCBudWxs
IG91dCBhbGwgcG9pbnRlcnMgdG8gdGhlIGxheWVyIHdoZW4gZGVsZXRpbmcgaXQgaW5zdGVhZCBv
ZiBqdXN0IHVwZGF0aW5nIHRoZSBwYXJlbnQKKyAgICAgICAgYW5kIGNoaWxkIHBvaW50ZXJzLgor
CisgICAgICAgIE5vIG5ldyB0ZXN0cy4gRXhpc3RpbmcgdGVzdHMgaW4gY29tcG9zaXRpbmcvbWFz
a3MgKGF0IGxlYXN0KSBjb252ZXJzIHRoaXMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1
cmVNYXBwZXJMYXllcjo6flRleHR1cmVNYXBwZXJMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpU
ZXh0dXJlTWFwcGVyTGF5ZXI6OnJlbW92ZUZyb21MYXllclRyZWUpOgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXll
ci5oOgorICAgICAgICAoVGV4dHVyZU1hcHBlckxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRl
eHR1cmVNYXBwZXJMYXllcjo6dGV4dHVyZSk6CisKIDIwMTItMDktMTQgIFRvciBBcm5lIFZlc3Ri
w7ggIDx0b3IuYXJuZS52ZXN0Ym9Abm9raWEuY29tPgogCiAgICAgICAgIFtRdF0gTWFrZSBmb3Jj
ZV9zdGF0aWNfbGlic19hc19zaGFyZWQgd29yayBvbiBNYWMgT1MKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJM
YXllci5jcHAKaW5kZXggMzY5NTg5ODdkM2M0NjI3ODAzNDA0ODU2YzFjNzA5OWE4N2ZkYmNkNy4u
NWRiNTI5Y2MxNTkzOTEzMmNmMzcyODRmNjNjNTM2ODNiMTFjNTMzNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVN
YXBwZXJMYXllci5jcHAKQEAgLTM5NSwxMSArMzk1LDcgQEAgdm9pZCBUZXh0dXJlTWFwcGVyTGF5
ZXI6OnBhaW50UmVjdXJzaXZlKGNvbnN0IFRleHR1cmVNYXBwZXJQYWludE9wdGlvbnMmIG9wdGlv
bnMKIAogVGV4dHVyZU1hcHBlckxheWVyOjp+VGV4dHVyZU1hcHBlckxheWVyKCkKIHsKLSAgICBm
b3IgKGludCBpID0gbV9jaGlsZHJlbi5zaXplKCkgLSAxOyBpID49IDA7IC0taSkKLSAgICAgICAg
bV9jaGlsZHJlbltpXS0+bV9wYXJlbnQgPSAwOwotCi0gICAgaWYgKG1fcGFyZW50KQotICAgICAg
ICBtX3BhcmVudC0+bV9jaGlsZHJlbi5yZW1vdmUobV9wYXJlbnQtPm1fY2hpbGRyZW4uZmluZCh0
aGlzKSk7CisgICAgcm9vdExheWVyKCktPnJlbW92ZUZyb21MYXllclRyZWUodGhpcyk7CiB9CiAK
IHZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjpzeW5jQ29tcG9zaXRpbmdTdGF0ZShHcmFwaGljc0xh
eWVyVGV4dHVyZU1hcHBlciogZ3JhcGhpY3NMYXllciwgaW50IG9wdGlvbnMpCkBAIC01NjAsNiAr
NTU2LDI4IEBAIHZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjpzeW5jQ29tcG9zaXRpbmdTdGF0ZShH
cmFwaGljc0xheWVyVGV4dHVyZU1hcHBlciogZ3JhcGhpCiAgICAgfQogfQogCit2b2lkIFRleHR1
cmVNYXBwZXJMYXllcjo6cmVtb3ZlRnJvbUxheWVyVHJlZShUZXh0dXJlTWFwcGVyTGF5ZXIqIGxh
eWVyKQoreworICAgIGlmIChtX3N0YXRlLm1hc2tMYXllciA9PSBsYXllcikKKyAgICAgICAgbV9z
dGF0ZS5tYXNrTGF5ZXIgPSAwOworICAgIGlmIChtX3N0YXRlLnJlcGxpY2FMYXllciA9PSBsYXll
cikKKyAgICAgICAgbV9zdGF0ZS5yZXBsaWNhTGF5ZXIgPSAwOworICAgIGlmIChtX2VmZmVjdFRh
cmdldCA9PSBsYXllcikKKyAgICAgICAgbV9lZmZlY3RUYXJnZXQgPSAwOworCisgICAgc2l6ZV90
IGluZGV4VG9SZW1vdmUgPSBXVEY6Om5vdEZvdW5kOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgbV9jaGlsZHJlbi5zaXplKCk7ICsraSkgeworICAgICAgICBUZXh0dXJlTWFwcGVyTGF5ZXIq
IGNoaWxkID0gbV9jaGlsZHJlbltpXTsKKyAgICAgICAgY2hpbGQtPnJlbW92ZUZyb21MYXllclRy
ZWUobGF5ZXIpOworICAgICAgICBpZiAoY2hpbGQgPT0gbGF5ZXIpCisgICAgICAgICAgICBpbmRl
eFRvUmVtb3ZlID0gaTsKKyAgICAgICAgZWxzZSBpZiAodGhpcyA9PSBsYXllcikKKyAgICAgICAg
ICAgIGNoaWxkLT5tX3BhcmVudCA9IDA7CisgICAgfQorICAgIGlmIChpbmRleFRvUmVtb3ZlICE9
IFdURjo6bm90Rm91bmQpCisgICAgICAgIG1fY2hpbGRyZW4ucmVtb3ZlKGluZGV4VG9SZW1vdmUp
OworfQorCiBib29sIFRleHR1cmVNYXBwZXJMYXllcjo6aXNBbmNlc3RvckZpeGVkVG9WaWV3cG9y
dCgpIGNvbnN0CiB7CiAgICAgZm9yIChUZXh0dXJlTWFwcGVyTGF5ZXIqIHBhcmVudCA9IG1fcGFy
ZW50OyBwYXJlbnQ7IHBhcmVudCA9IHBhcmVudC0+bV9wYXJlbnQpIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVy
TGF5ZXIuaAppbmRleCAyZjdmNGI4MjEyZmExODg0YjlkMDBmODBlMWVmNjczZWMxODk5ZDM4Li43
OTMzNzAwYTFiMmQ4M2EzNTQyYzQ5OGIzMTFhMmI1NzgwNWY5YzFlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXJMYXllci5oCkBAIC0xNDUsNiArMTQ1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGludmFsaWRh
dGVWaWV3cG9ydChjb25zdCBGbG9hdFJlY3QmKTsKICAgICB2b2lkIG5vdGlmeUNoYW5nZShDaGFu
Z2VNYXNrKTsKICAgICB2b2lkIHN5bmNDb21wb3NpdGluZ1N0YXRlU2VsZihHcmFwaGljc0xheWVy
VGV4dHVyZU1hcHBlciosIFRleHR1cmVNYXBwZXIqKTsKKyAgICB2b2lkIHJlbW92ZUZyb21MYXll
clRyZWUoVGV4dHVyZU1hcHBlckxheWVyKik7CiAKICAgICBzdGF0aWMgaW50IGNvbXBhcmVHcmFw
aGljc0xheWVyc1pWYWx1ZShjb25zdCB2b2lkKiBhLCBjb25zdCB2b2lkKiBiKTsKICAgICBzdGF0
aWMgdm9pZCBzb3J0QnlaT3JkZXIoVmVjdG9yPFRleHR1cmVNYXBwZXJMYXllciogPiYgYXJyYXks
IGludCBmaXJzdCwgaW50IGxhc3QpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>164560</attachid>
            <date>2012-09-18 07:51:54 -0700</date>
            <delta_ts>2012-09-18 08:19:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-96919-20120918165104.patch</filename>
            <type>text/plain</type>
            <size>3352</size>
            <attacher name="Balazs Kelemen">kbalazs</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI4ODkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMWE3MDEzMTZkOTJiN2Nj
ZmU1OGJlMTY5M2E1MmFhZTg2ZjkyYTM1Mi4uNWZmMGFjOTQxODNmZTMwMzdkOWE3NWIzMGU4MmQ4
NmY2M2ZhNzZiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDEyLTA5LTE4ICBCYWxh
enMgS2VsZW1lbiAgPGtiYWxhenNAd2Via2l0Lm9yZz4KKworICAgICAgICBbVGV4bWFwXSBQb3Rl
bnRpYWwgY3Jhc2ggaW4gVGV4dHVyZU1hcHBlckxheWVyIGJlY2F1c2Ugb2YgcmVmZXJlbmNpbmcg
ZGVsZXRlZCBtYXNrL3JlcGxpY2EgbGF5ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTk2OTE5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgRGVsYXkgc3luY2luZyBkZWxldGVkIGxheWVycyB1bnRpbCBmbHVz
aFBlbmRpbmdMYXllckNoYW5nZXMgc28gdGhlIFVJIHNpZGUgc3RhdGUKKyAgICAgICAgd2lsbCBj
b250YWluIGFsbCBjaGFuZ2VzIHJlbGF0ZWQgdG8gdGhlIGRlbGV0aW9uIG9mIGEgbGF5ZXIuIFRo
aXMgc2F2ZXMgdXMgZnJvbQorICAgICAgICByZWZlcmVuY2luZyBhIGRlbGV0ZWQgbGF5ZXIuCisK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRy
ZWVDb29yZGluYXRvci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZUNvb3JkaW5hdG9y
OjpmbHVzaFBlbmRpbmdMYXllckNoYW5nZXMpOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVD
b29yZGluYXRvcjo6ZGV0YWNoTGF5ZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9D
b29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yLmg6CisgICAgICAgIChMYXll
clRyZWVDb29yZGluYXRvcik6CisKIDIwMTItMDktMTggIFNoZXJpZmYgQm90ICA8d2Via2l0LnJl
dmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIx
Mjg4NDkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29v
cmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvci5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGlu
YXRvci5jcHAKaW5kZXggMGQyYmQ0ZDNmNGM3NTQzNjk4YWMwMWJkMzhiY2I5OTdhMGEwNWE0NC4u
YTc3NjIxOTIxNTU4MmQ2YjFhOTg1ZWJhNGNlOGZmMGMxMTljYmJmOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJU
cmVlQ29vcmRpbmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yLmNwcApAQCAtMjU1LDYg
KzI1NSwxMSBAQCBib29sIExheWVyVHJlZUNvb3JkaW5hdG9yOjpmbHVzaFBlbmRpbmdMYXllckNo
YW5nZXMoKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBtX3Nob3VsZFN5bmNGcmFtZSA9
IGZhbHNlOworCisgICAgZm9yIChIYXNoU2V0PFdlYkxheWVySUQ+Ojpjb25zdF9pdGVyYXRvciBp
dCA9IG1fZGVsZXRlZExheWVyc05lZWRTeW5jLmJlZ2luKCk7IGl0ICE9IG1fZGVsZXRlZExheWVy
c05lZWRTeW5jLmVuZCgpOyArK2l0KQorICAgICAgICBtX3dlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6
OkxheWVyVHJlZUNvb3JkaW5hdG9yUHJveHk6OkRlbGV0ZUNvbXBvc2l0aW5nTGF5ZXIoKml0KSk7
CisgICAgbV9kZWxldGVkTGF5ZXJzTmVlZFN5bmMuY2xlYXIoKTsKKwogICAgIGJvb2wgZGlkU3lu
YyA9IG1fd2ViUGFnZS0+Y29yZVBhZ2UoKS0+bWFpbkZyYW1lKCktPnZpZXcoKS0+c3luY0NvbXBv
c2l0aW5nU3RhdGVJbmNsdWRpbmdTdWJmcmFtZXMoKTsKICAgICBtX25vbkNvbXBvc2l0ZWRDb250
ZW50TGF5ZXItPnN5bmNDb21wb3NpdGluZ1N0YXRlRm9yVGhpc0xheWVyT25seSgpOwogICAgIGlm
IChtX3BhZ2VPdmVybGF5TGF5ZXIpCkBAIC0zMjYsNyArMzMxLDggQEAgdm9pZCBMYXllclRyZWVD
b29yZGluYXRvcjo6ZGV0YWNoTGF5ZXIoQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyKiBsYXllcikK
IHsKICAgICBtX3JlZ2lzdGVyZWRMYXllcnMucmVtb3ZlKGxheWVyKTsKICAgICBtX3Nob3VsZFN5
bmNGcmFtZSA9IHRydWU7Ci0gICAgbV93ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpMYXllclRyZWVD
b29yZGluYXRvclByb3h5OjpEZWxldGVDb21wb3NpdGluZ0xheWVyKGxheWVyLT5pZCgpKSk7Cisg
ICAgbV9kZWxldGVkTGF5ZXJzTmVlZFN5bmMuYWRkKGxheWVyLT5pZCgpKTsKKyAgICBzY2hlZHVs
ZUxheWVyRmx1c2goKTsKIH0KIAogc3RhdGljIHZvaWQgdXBkYXRlT2Zmc2V0RnJvbVZpZXdwb3J0
Rm9yU2VsZihSZW5kZXJMYXllciogcmVuZGVyTGF5ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29y
ZGluYXRvci5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3IuaAppbmRleCA3M2I4NGU1MjQwMjAxNTk1MDUw
OWFhMGYwYzU1ZjViZTdkYzIyYjc3Li4yYjRlZjA1Yjk3YWM3OTY3OWJjN2RmNmQxZWE0YmMyMDFm
MTEyNmUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29v
cmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvci5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3Jk
aW5hdG9yLmgKQEAgLTEyNyw2ICsxMjcsNyBAQCBwcml2YXRlOgogICAgIE93blB0cjxXZWJDb3Jl
OjpHcmFwaGljc0xheWVyPiBtX3BhZ2VPdmVybGF5TGF5ZXI7CiAKICAgICBIYXNoU2V0PFdlYkNv
cmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcio+IG1fcmVnaXN0ZXJlZExheWVyczsKKyAgICBI
YXNoU2V0PFdlYkxheWVySUQ+IG1fZGVsZXRlZExheWVyc05lZWRTeW5jOwogICAgIEhhc2hNYXA8
aW50NjRfdCwgaW50PiBtX2RpcmVjdGx5Q29tcG9zaXRlZEltYWdlUmVmQ291bnRzOwogICAgIFZl
Y3RvcjxPd25QdHI8VXBkYXRlQXRsYXM+ID4gbV91cGRhdGVBdGxhc2VzOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>164563</attachid>
            <date>2012-09-18 08:19:56 -0700</date>
            <delta_ts>2012-09-18 08:33:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-96919-20120918171906.patch</filename>
            <type>text/plain</type>
            <size>3323</size>
            <attacher name="Balazs Kelemen">kbalazs</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI4ODkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMWE3MDEzMTZkOTJiN2Nj
ZmU1OGJlMTY5M2E1MmFhZTg2ZjkyYTM1Mi4uNWZmMGFjOTQxODNmZTMwMzdkOWE3NWIzMGU4MmQ4
NmY2M2ZhNzZiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDEyLTA5LTE4ICBCYWxh
enMgS2VsZW1lbiAgPGtiYWxhenNAd2Via2l0Lm9yZz4KKworICAgICAgICBbVGV4bWFwXSBQb3Rl
bnRpYWwgY3Jhc2ggaW4gVGV4dHVyZU1hcHBlckxheWVyIGJlY2F1c2Ugb2YgcmVmZXJlbmNpbmcg
ZGVsZXRlZCBtYXNrL3JlcGxpY2EgbGF5ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTk2OTE5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgRGVsYXkgc3luY2luZyBkZWxldGVkIGxheWVycyB1bnRpbCBmbHVz
aFBlbmRpbmdMYXllckNoYW5nZXMgc28gdGhlIFVJIHNpZGUgc3RhdGUKKyAgICAgICAgd2lsbCBj
b250YWluIGFsbCBjaGFuZ2VzIHJlbGF0ZWQgdG8gdGhlIGRlbGV0aW9uIG9mIGEgbGF5ZXIuIFRo
aXMgc2F2ZXMgdXMgZnJvbQorICAgICAgICByZWZlcmVuY2luZyBhIGRlbGV0ZWQgbGF5ZXIuCisK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRy
ZWVDb29yZGluYXRvci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZUNvb3JkaW5hdG9y
OjpmbHVzaFBlbmRpbmdMYXllckNoYW5nZXMpOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVD
b29yZGluYXRvcjo6ZGV0YWNoTGF5ZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9D
b29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yLmg6CisgICAgICAgIChMYXll
clRyZWVDb29yZGluYXRvcik6CisKIDIwMTItMDktMTggIFNoZXJpZmYgQm90ICA8d2Via2l0LnJl
dmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIx
Mjg4NDkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29v
cmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvci5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGlu
YXRvci5jcHAKaW5kZXggMGQyYmQ0ZDNmNGM3NTQzNjk4YWMwMWJkMzhiY2I5OTdhMGEwNWE0NC4u
NjNjZTEwM2E2NjMyODJlMTM4MWM0NzM0ODFjMzljZDhkYWI3ODJhYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJU
cmVlQ29vcmRpbmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yLmNwcApAQCAtMjU1LDYg
KzI1NSwxMSBAQCBib29sIExheWVyVHJlZUNvb3JkaW5hdG9yOjpmbHVzaFBlbmRpbmdMYXllckNo
YW5nZXMoKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBtX3Nob3VsZFN5bmNGcmFtZSA9
IGZhbHNlOworCisgICAgZm9yIChIYXNoU2V0PFdlYkxheWVySUQ+Ojpjb25zdF9pdGVyYXRvciBp
dCA9IG1fbV9kZXRhY2hlZExheWVycy5iZWdpbigpOyBpdCAhPSBtX21fZGV0YWNoZWRMYXllcnMu
ZW5kKCk7ICsraXQpCisgICAgICAgIG1fd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6TGF5ZXJUcmVl
Q29vcmRpbmF0b3JQcm94eTo6RGVsZXRlQ29tcG9zaXRpbmdMYXllcigqaXQpKTsKKyAgICBtX21f
ZGV0YWNoZWRMYXllcnMuY2xlYXIoKTsKKwogICAgIGJvb2wgZGlkU3luYyA9IG1fd2ViUGFnZS0+
Y29yZVBhZ2UoKS0+bWFpbkZyYW1lKCktPnZpZXcoKS0+c3luY0NvbXBvc2l0aW5nU3RhdGVJbmNs
dWRpbmdTdWJmcmFtZXMoKTsKICAgICBtX25vbkNvbXBvc2l0ZWRDb250ZW50TGF5ZXItPnN5bmND
b21wb3NpdGluZ1N0YXRlRm9yVGhpc0xheWVyT25seSgpOwogICAgIGlmIChtX3BhZ2VPdmVybGF5
TGF5ZXIpCkBAIC0zMjYsNyArMzMxLDggQEAgdm9pZCBMYXllclRyZWVDb29yZGluYXRvcjo6ZGV0
YWNoTGF5ZXIoQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyKiBsYXllcikKIHsKICAgICBtX3JlZ2lz
dGVyZWRMYXllcnMucmVtb3ZlKGxheWVyKTsKICAgICBtX3Nob3VsZFN5bmNGcmFtZSA9IHRydWU7
Ci0gICAgbV93ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpMYXllclRyZWVDb29yZGluYXRvclByb3h5
OjpEZWxldGVDb21wb3NpdGluZ0xheWVyKGxheWVyLT5pZCgpKSk7CisgICAgbV9kZXRhY2hlZExh
eWVycy5hZGQobGF5ZXItPmlkKCkpOworICAgIHNjaGVkdWxlTGF5ZXJGbHVzaCgpOwogfQogCiBz
dGF0aWMgdm9pZCB1cGRhdGVPZmZzZXRGcm9tVmlld3BvcnRGb3JTZWxmKFJlbmRlckxheWVyKiBy
ZW5kZXJMYXllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29y
ZGluYXRvci5oCmluZGV4IDczYjg0ZTUyNDAyMDE1OTUwNTA5YWEwZjBjNTVmNWJlN2RjMjJiNzcu
LjQ5M2NhNDU0Y2I1MjMzNDI4YmJkYjQ1NDE3YjBiZjQ0YzZjMGVkMjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVy
VHJlZUNvb3JkaW5hdG9yLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3IuaApAQCAtMTI3LDYgKzEy
Nyw3IEBAIHByaXZhdGU6CiAgICAgT3duUHRyPFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI+IG1fcGFn
ZU92ZXJsYXlMYXllcjsKIAogICAgIEhhc2hTZXQ8V2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGlj
c0xheWVyKj4gbV9yZWdpc3RlcmVkTGF5ZXJzOworICAgIEhhc2hTZXQ8V2ViTGF5ZXJJRD4gbV9k
ZXRhY2hlZExheWVyczsKICAgICBIYXNoTWFwPGludDY0X3QsIGludD4gbV9kaXJlY3RseUNvbXBv
c2l0ZWRJbWFnZVJlZkNvdW50czsKICAgICBWZWN0b3I8T3duUHRyPFVwZGF0ZUF0bGFzPiA+IG1f
dXBkYXRlQXRsYXNlczsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>164566</attachid>
            <date>2012-09-18 08:33:45 -0700</date>
            <delta_ts>2012-09-19 02:10:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-96919-20120918173255.patch</filename>
            <type>text/plain</type>
            <size>3317</size>
            <attacher name="Balazs Kelemen">kbalazs</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI4ODkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMWE3MDEzMTZkOTJiN2Nj
ZmU1OGJlMTY5M2E1MmFhZTg2ZjkyYTM1Mi4uNWZmMGFjOTQxODNmZTMwMzdkOWE3NWIzMGU4MmQ4
NmY2M2ZhNzZiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDEyLTA5LTE4ICBCYWxh
enMgS2VsZW1lbiAgPGtiYWxhenNAd2Via2l0Lm9yZz4KKworICAgICAgICBbVGV4bWFwXSBQb3Rl
bnRpYWwgY3Jhc2ggaW4gVGV4dHVyZU1hcHBlckxheWVyIGJlY2F1c2Ugb2YgcmVmZXJlbmNpbmcg
ZGVsZXRlZCBtYXNrL3JlcGxpY2EgbGF5ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTk2OTE5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgRGVsYXkgc3luY2luZyBkZWxldGVkIGxheWVycyB1bnRpbCBmbHVz
aFBlbmRpbmdMYXllckNoYW5nZXMgc28gdGhlIFVJIHNpZGUgc3RhdGUKKyAgICAgICAgd2lsbCBj
b250YWluIGFsbCBjaGFuZ2VzIHJlbGF0ZWQgdG8gdGhlIGRlbGV0aW9uIG9mIGEgbGF5ZXIuIFRo
aXMgc2F2ZXMgdXMgZnJvbQorICAgICAgICByZWZlcmVuY2luZyBhIGRlbGV0ZWQgbGF5ZXIuCisK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRy
ZWVDb29yZGluYXRvci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZUNvb3JkaW5hdG9y
OjpmbHVzaFBlbmRpbmdMYXllckNoYW5nZXMpOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVD
b29yZGluYXRvcjo6ZGV0YWNoTGF5ZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9D
b29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yLmg6CisgICAgICAgIChMYXll
clRyZWVDb29yZGluYXRvcik6CisKIDIwMTItMDktMTggIFNoZXJpZmYgQm90ICA8d2Via2l0LnJl
dmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIx
Mjg4NDkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29v
cmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvci5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGlu
YXRvci5jcHAKaW5kZXggMGQyYmQ0ZDNmNGM3NTQzNjk4YWMwMWJkMzhiY2I5OTdhMGEwNWE0NC4u
MTUyOWIwMzVmYzE1NDU2OGVmZjE1MzQ4NTI5OGY5MjgwOTlkN2NhMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJU
cmVlQ29vcmRpbmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yLmNwcApAQCAtMjU1LDYg
KzI1NSwxMSBAQCBib29sIExheWVyVHJlZUNvb3JkaW5hdG9yOjpmbHVzaFBlbmRpbmdMYXllckNo
YW5nZXMoKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBtX3Nob3VsZFN5bmNGcmFtZSA9
IGZhbHNlOworCisgICAgZm9yIChIYXNoU2V0PFdlYkxheWVySUQ+Ojpjb25zdF9pdGVyYXRvciBp
dCA9IG1fZGV0YWNoZWRMYXllcnMuYmVnaW4oKTsgaXQgIT0gbV9kZXRhY2hlZExheWVycy5lbmQo
KTsgKytpdCkKKyAgICAgICAgbV93ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpMYXllclRyZWVDb29y
ZGluYXRvclByb3h5OjpEZWxldGVDb21wb3NpdGluZ0xheWVyKCppdCkpOworICAgIG1fZGV0YWNo
ZWRMYXllcnMuY2xlYXIoKTsKKwogICAgIGJvb2wgZGlkU3luYyA9IG1fd2ViUGFnZS0+Y29yZVBh
Z2UoKS0+bWFpbkZyYW1lKCktPnZpZXcoKS0+c3luY0NvbXBvc2l0aW5nU3RhdGVJbmNsdWRpbmdT
dWJmcmFtZXMoKTsKICAgICBtX25vbkNvbXBvc2l0ZWRDb250ZW50TGF5ZXItPnN5bmNDb21wb3Np
dGluZ1N0YXRlRm9yVGhpc0xheWVyT25seSgpOwogICAgIGlmIChtX3BhZ2VPdmVybGF5TGF5ZXIp
CkBAIC0zMjYsNyArMzMxLDggQEAgdm9pZCBMYXllclRyZWVDb29yZGluYXRvcjo6ZGV0YWNoTGF5
ZXIoQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyKiBsYXllcikKIHsKICAgICBtX3JlZ2lzdGVyZWRM
YXllcnMucmVtb3ZlKGxheWVyKTsKICAgICBtX3Nob3VsZFN5bmNGcmFtZSA9IHRydWU7Ci0gICAg
bV93ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpMYXllclRyZWVDb29yZGluYXRvclByb3h5OjpEZWxl
dGVDb21wb3NpdGluZ0xheWVyKGxheWVyLT5pZCgpKSk7CisgICAgbV9kZXRhY2hlZExheWVycy5h
ZGQobGF5ZXItPmlkKCkpOworICAgIHNjaGVkdWxlTGF5ZXJGbHVzaCgpOwogfQogCiBzdGF0aWMg
dm9pZCB1cGRhdGVPZmZzZXRGcm9tVmlld3BvcnRGb3JTZWxmKFJlbmRlckxheWVyKiByZW5kZXJM
YXllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29y
ZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yLmggYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRv
ci5oCmluZGV4IDczYjg0ZTUyNDAyMDE1OTUwNTA5YWEwZjBjNTVmNWJlN2RjMjJiNzcuLjQ5M2Nh
NDU0Y2I1MjMzNDI4YmJkYjQ1NDE3YjBiZjQ0YzZjMGVkMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNv
b3JkaW5hdG9yLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3IuaApAQCAtMTI3LDYgKzEyNyw3IEBA
IHByaXZhdGU6CiAgICAgT3duUHRyPFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI+IG1fcGFnZU92ZXJs
YXlMYXllcjsKIAogICAgIEhhc2hTZXQ8V2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVy
Kj4gbV9yZWdpc3RlcmVkTGF5ZXJzOworICAgIEhhc2hTZXQ8V2ViTGF5ZXJJRD4gbV9kZXRhY2hl
ZExheWVyczsKICAgICBIYXNoTWFwPGludDY0X3QsIGludD4gbV9kaXJlY3RseUNvbXBvc2l0ZWRJ
bWFnZVJlZkNvdW50czsKICAgICBWZWN0b3I8T3duUHRyPFVwZGF0ZUF0bGFzPiA+IG1fdXBkYXRl
QXRsYXNlczsKIAo=
</data>
<flag name="review"
          id="176364"
          type_id="1"
          status="+"
          setter="noam"
    />
          </attachment>
      

    </bug>

</bugzilla>