<?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>94036</bug_id>
          
          <creation_ts>2012-08-14 16:08:43 -0700</creation_ts>
          <short_desc>[WebGL] program should not be able to link if a bad shader is attached</short_desc>
          <delta_ts>2013-10-05 12:26:32 -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>WebGL</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Dean Jackson">dino</reporter>
          <assigned_to name="Dean Jackson">dino</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>dglazkov</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>gman</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kbr</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>noam</cc>
    
    <cc>peter+ews</cc>
    
    <cc>roger_fong</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zmo</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>695479</commentid>
    <comment_count>0</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2012-08-14 16:08:43 -0700</bug_when>
    <thetext>WebGL conformance test suite build: 5a7a067ead6 Tue Aug 7 14:34:42 2012 -0700
WebKit: r125123 on Mountain Lion 12A269
GPU: AMD Radeon HD 6750M 1024 MB (yes, fairly old)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>695480</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2012-08-14 16:08:57 -0700</bug_when>
    <thetext>&lt;rdar://problem/12099740&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>739482</commentid>
    <comment_count>2</comment_count>
    <who name="Roger Fong">roger_fong</who>
    <bug_when>2012-10-10 18:40:28 -0700</bug_when>
    <thetext>Khronos WebGL test fails as a result:
conformance/programs/program-test.html failing on Apple Mountain Lion</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>739501</commentid>
    <comment_count>3</comment_count>
      <attachid>168122</attachid>
    <who name="Roger Fong">roger_fong</who>
    <bug_when>2012-10-10 18:54:47 -0700</bug_when>
    <thetext>Created attachment 168122
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>739561</commentid>
    <comment_count>4</comment_count>
      <attachid>168122</attachid>
    <who name="Peter Beverloo (cr-android ews)">peter+ews</who>
    <bug_when>2012-10-10 20:39:02 -0700</bug_when>
    <thetext>Comment on attachment 168122
Patch

Attachment 168122 did not pass cr-android-ews (chromium-android):
Output: http://queues.webkit.org/results/14254399</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>739582</commentid>
    <comment_count>5</comment_count>
      <attachid>168122</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-10 21:10:58 -0700</bug_when>
    <thetext>Comment on attachment 168122
Patch

Attachment 168122 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/14255431</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>740168</commentid>
    <comment_count>6</comment_count>
      <attachid>168122</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2012-10-11 12:19:34 -0700</bug_when>
    <thetext>Comment on attachment 168122
Patch

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

&gt; Source/WebCore/html/canvas/WebGLShader.h:46
&gt; +    bool isValid() const { return m_valid; }

I think this should be just valid(), but see below about avoiding this.

&gt; Source/WebCore/platform/graphics/GraphicsContext3D.h:677
&gt; -    void compileShader(Platform3DObject);
&gt; +    bool compileShader(Platform3DObject);

Unfortunately this change will require a fair amount of coordination with other platforms, in particular Chromium (who have a bunch of proxies implementing this API, some in the Chromium project).

Let&apos;s see if we can come up with another way to do this. ShaderSourceEntry already has a &quot;valid&quot; flag that doesn&apos;t seem to be used.

&gt; Source/WebCore/platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:449
&gt;      if (!translatedShaderSource.length())
&gt; -        return;
&gt; +        return false;

OK. Maybe we can do it here! If the validation failed, then get the entry in the Shader Source map and set it to invalid. (In fact, why not set it true/false for every shader?). Hmm... nope, then we&apos;d still need to either update GC3D to have API testing for valid shaders, or have linkProgram repeat the test and communicate the failure.

How does Chrome pass this? Do they detach the shader if it fails validation? I&apos;ll need to think about this for a moment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>740169</commentid>
    <comment_count>7</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2012-10-11 12:20:01 -0700</bug_when>
    <thetext>Ken, can you give advice here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>740179</commentid>
    <comment_count>8</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2012-10-11 12:46:57 -0700</bug_when>
    <thetext>I don&apos;t know off the top of my head how this is implemented in Chrome, but Gregg&apos;s command buffer implementation tracks a lot of information about shader and program objects, and is probably caching the state so that it looks like a compilation failure and can be queried as such through getShaderParameter.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>740265</commentid>
    <comment_count>9</comment_count>
    <who name="Roger Fong">roger_fong</who>
    <bug_when>2012-10-11 14:18:58 -0700</bug_when>
    <thetext>Something else I was unsure about was m_linkStatus.
Right it gets set to false when either the vertex or fragment shader is null before the linking happens.

Should it also be false if the the shader source doesn&apos;t compile?

I guess the question boils down to:
Should m_linkStatus be false when the state of the attached shaders is bad in general (either null or does not compile) or just when a shader is missing?

If it&apos;s the former then I&apos;ll need to find a way to access the m_shaderSourceMap from WebGLRenderingContext.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>740335</commentid>
    <comment_count>10</comment_count>
    <who name="Gregg Tavares">gman</who>
    <bug_when>2012-10-11 15:47:11 -0700</bug_when>
    <thetext>not looking at the code, only responding the comment.

The only thing that effects link status is glLinkProgram

You can attach shaders, delete shaders, they can fail to compile, whatever but until you call glLinkProgram again the link status will not change. At that time, it will try to link the 2 shaders. If one of them is bad or missing it will not link and link status will be set to failed.  

Note that the failing for a missing shader has to be emulated on desktop GL as missing shaders fall back to fixed function behavior on desktop GL.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>740505</commentid>
    <comment_count>11</comment_count>
    <who name="Roger Fong">roger_fong</who>
    <bug_when>2012-10-11 18:48:13 -0700</bug_when>
    <thetext>I&apos;m gonna throw out some thoughts about this and maybe someone can tell me if what I&apos;m thinking is wrong:

The code for linkProgram in WebGLRC looks like this:

    if (!isGLES2Compliant()) {
        if (!program-&gt;getAttachedShader(GraphicsContext3D::VERTEX_SHADER) || !program-&gt;getAttachedShader(GraphicsContext3D::FRAGMENT_SHADER)) {
            program-&gt;setLinkStatus(false);
            return;
        }
    }

(At least the part we care about).

With a bad shader, it must get to the program-&gt;setLinkStatus(false), but check that&apos;s performed on the shader is the !program-&gt;getAttachedShader, which just returns the shader itself on the WebGLProgram.

The shader is not going to be null if it&apos;s bad...so how does this test pass anywhere?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>740513</commentid>
    <comment_count>12</comment_count>
    <who name="Roger Fong">roger_fong</who>
    <bug_when>2012-10-11 18:55:56 -0700</bug_when>
    <thetext>Just noticed there&apos;s a method I can use from WebGLRC that you can look for shader compile status with...so I don&apos;t need GC3D&apos;s compileShader method to return anything...so doing that and using the extra flag in the WebGLShader I can make it work properly...

Still probably not the best solution though...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>740527</commentid>
    <comment_count>13</comment_count>
    <who name="Roger Fong">roger_fong</who>
    <bug_when>2012-10-11 19:10:00 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; I&apos;m gonna throw out some thoughts about this and maybe someone can tell me if what I&apos;m thinking is wrong:
&gt; 
&gt; The code for linkProgram in WebGLRC looks like this:
&gt; 
&gt;     if (!isGLES2Compliant()) {
&gt;         if (!program-&gt;getAttachedShader(GraphicsContext3D::VERTEX_SHADER) || !program-&gt;getAttachedShader(GraphicsContext3D::FRAGMENT_SHADER)) {
&gt;             program-&gt;setLinkStatus(false);
&gt;             return;
&gt;         }
&gt;     }
&gt; 
&gt; (At least the part we care about).
&gt; 
&gt; With a bad shader, it must get to the program-&gt;setLinkStatus(false), but check that&apos;s performed on the shader is the !program-&gt;getAttachedShader, which just returns the shader itself on the WebGLProgram.
&gt; 
&gt; The shader is not going to be null if it&apos;s bad...so how does this test pass anywhere?

O also, I tried not attaching the shader if the compiling failed, leaving the shader detached.
That causes another test to fail. The rule is apparently that the shader should get attached even if it&apos;s bad.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>744855</commentid>
    <comment_count>14</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2012-10-17 17:45:19 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; not looking at the code, only responding the comment.
&gt; 
&gt; The only thing that effects link status is glLinkProgram
&gt; 
&gt; You can attach shaders, delete shaders, they can fail to compile, whatever but until you call glLinkProgram again the link status will not change. At that time, it will try to link the 2 shaders. If one of them is bad or missing it will not link and link status will be set to failed.  

Thanks Gregg. We&apos;re a little confused here because the test takes a working and linked program, attaches a bad shader, then attempts to link again. The link fails, as expected.

The bit we&apos;re breaking on is that the subsequent drawArrays call is producing INVALID_OPERATION, when the test expects it to work. The OpenGL spec says &quot;If the program object currently in use is relinked unsuccessfully, its link status will be set to GL_FALSE , but the executables and associated state will remain part of the current state until a subsequent call to glUseProgram removes it from use. &quot;

I assume this is why the test expects the drawArrays to pass, even though the linkProgram failed.

Since we&apos;re calling our platform glLinkProgram, I&apos;m confused as to how Chromium is passing this test.  Do you actually call glLinkProgram when you have a shader attached that didn&apos;t compile?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>745346</commentid>
    <comment_count>15</comment_count>
    <who name="Gregg Tavares">gman</who>
    <bug_when>2012-10-18 10:08:27 -0700</bug_when>
    <thetext>No, we don&apos;t call LinkProgram if the shader didn&apos;t compile. We just synthesize a failed link status</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>745353</commentid>
    <comment_count>16</comment_count>
    <who name="Gregg Tavares">gman</who>
    <bug_when>2012-10-18 10:13:59 -0700</bug_when>
    <thetext>The check you mentioned above that just checks that shaders are attached works around the difference mentioned above between ES and Desktop GL in that desktop GL will succeed even if no shaders are attached since it falls back  to fixed function operations in that case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>746498</commentid>
    <comment_count>17</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2012-10-19 11:43:38 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; The check you mentioned above that just checks that shaders are attached works around the difference mentioned above between ES and Desktop GL in that desktop GL will succeed even if no shaders are attached since it falls back  to fixed function operations in that case.

Got it, thanks.

Our problem is that we don&apos;t keep any program state in GC3D, the way Chromium does in your GPU command buffer implementation. Even if we tested the attached shaders to make sure they are valid, we have no way of propagating the link status.

This will be an easy addition into our port&apos;s version of GC3D.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>936468</commentid>
    <comment_count>18</comment_count>
      <attachid>213429</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2013-10-04 18:12:56 -0700</bug_when>
    <thetext>Created attachment 213429
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>936471</commentid>
    <comment_count>19</comment_count>
      <attachid>213429</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2013-10-04 18:47:47 -0700</bug_when>
    <thetext>Comment on attachment 213429
Patch

LGTM FWIW.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>936537</commentid>
    <comment_count>20</comment_count>
      <attachid>213429</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-10-05 00:38:48 -0700</bug_when>
    <thetext>Comment on attachment 213429
Patch

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

&gt; Source/WebCore/html/canvas/WebGLRenderingContext.cpp:1301
&gt; +    shader-&gt;setValid(!!value);

Don&apos;t need the !! with C++ bool; just &quot;value&quot; will work fine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>936638</commentid>
    <comment_count>21</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2013-10-05 12:26:32 -0700</bug_when>
    <thetext>Committed r156971: &lt;http://trac.webkit.org/changeset/156971&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>168122</attachid>
            <date>2012-10-10 18:54:47 -0700</date>
            <delta_ts>2013-10-04 18:12:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-94036-20121010185346.patch</filename>
            <type>text/plain</type>
            <size>7367</size>
            <attacher name="Roger Fong">roger_fong</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMwOTg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODBlMjMwZjA5YWNlNjA4
OWI3ZGEwMzdkOTY3MTYxOGNjY2Q4NjU2Mi4uNTJmNmNjYjVjMjA3YTNhZTc5NDk1ZWI0YmVmOWE3
NGU1MzE5Y2FjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDM1IEBACiAyMDEyLTEwLTEwICBSb2dl
ciBGb25nICA8cm9nZXJfZm9uZ0BhcHBsZS5jb20+CiAKKyAgICAgICAgW1dlYkdMXSBwcm9ncmFt
IHNob3VsZCBub3QgYmUgYWJsZSB0byBsaW5rIGlmIGEgYmFkIHNoYWRlciBpcyBhdHRhY2hlZC4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk0MDM2CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2hlbiBhIGNh
bGwgdG8gbGlua1Byb2dyYW0gaXMgbWFkZSB3aGVuIGEgYmFkIHNoYWRlciBpcyBhdHRhY2hlZCB0
aGUgcHJvZ3JhbSBzaG91bGQgbm90IGFjdHVhbGx5IGF0dGVtcHQgdG8gbGluaworICAgICAgICBz
aG91bGQgcmVtYWluIGluIHRoZSBzdGF0ZSBpdCB3YXMgaW4gcHJpb3IgdG8gdGhlIGJhZCBzaGFk
ZXIgYmVpbmcgYXR0YWNoZWQuCisgICAgICAgIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6bGlua1By
b2dyYW0gb25seSBjaGVja2VkIHRvIHNlZSB3aGV0aGVyIG9yIG5vdCBhIHNoYWRlciB3YXMgYXR0
YWNoZWQsIG5vdCB3aGV0aGVyIG9yIG5vdCB0aGUgc2hhZGVyIGlzIHZhbGlkLgorICAgICAgICBU
aGlzIHBhdGNoIGFkZHMgYSAidmFsaWQiIGZsYWcgdG8gdGhlIFdlYkdMU2hhZGVyIGNsYXNzIHRo
YXQgZ2V0cyBzZXQgdG8gdHJ1ZSBpZiB0aGUgc2hhZGVyIGlzIHN1Y2Nlc3NmdWxseSBjb21waWxl
ZC4KKyAgICAgICAgVGhpcyBmbGFnIGlzIGxhdGVyIHVzZWQgaW4gbGlua1Byb2dyYW0gdG8gZGV0
ZXJtaW5lIHdoZXRoZXIgb3Igbm90IHRoZSBwcm9ncmFtIGNhbiBiZSBsaW5rZWQgd2l0aG91dCBp
c3N1ZS4KKworICAgICAgICBUZXN0ZWQgdXNpbmcgS2hyb25vcyBXZWJHTCBjb25mb3JtYW5jZSBz
dWl0ZToKKyAgICAgICAgY29uZm9ybWFuY2UvcHJvZ3JhbXMvcHJvZ3JhbS10ZXN0Lmh0bWwKKwor
ICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6Y29t
cGlsZVNoYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6Omxp
bmtQcm9ncmFtKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFNoYWRlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJHTFNoYWRlcjo6V2ViR0xTaGFkZXIpOgorICAgICAgICAqIGh0bWwv
Y2FudmFzL1dlYkdMU2hhZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFNoYWRlcjo6aXNW
YWxpZCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFNoYWRlcjo6c2V0VmFsaWQpOgorICAgICAg
ICAoV2ViR0xTaGFkZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dDNELmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29u
dGV4dDNET3BlbkdMQ29tbW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDNEOjpjb21waWxlU2hhZGVyKToKKworMjAxMi0xMC0xMCAgUm9nZXIgRm9uZyAgPHJvZ2VyX2Zv
bmdAYXBwbGUuY29tPgorCiAgICAgICAgIFtXZWJHTF0gW09uIE1hY10gcXVlcmllZCBhdHRyaWJ1
dGVzIGFuZCB1bmlmb3JtcyBuZWVkIHRvIHJldHVybiB0aGUgb3JpZ2luYWwgdmFyaWFibGUgbmFt
ZSwgbm90IHRoZSBtYXBwZWQgbmFtZS4KICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTk4NDcwCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCmluZGV4IDU4MmVkNWQzOThhYzNmMjQ3ZWI2
YWFlYjZlZWRhODVlMjk0ZTVjODQuLjU4ODFmOWJhNzdkZjI3ZmFkYWFmZDRmOGFmZjA3MTEwYzVl
YWJmNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVy
aW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5k
ZXJpbmdDb250ZXh0LmNwcApAQCAtMTI2Miw3ICsxMjYyLDggQEAgdm9pZCBXZWJHTFJlbmRlcmlu
Z0NvbnRleHQ6OmNvbXBpbGVTaGFkZXIoV2ViR0xTaGFkZXIqIHNoYWRlciwgRXhjZXB0aW9uQ29k
ZSYgZWMKICAgICBVTlVTRURfUEFSQU0oZWMpOwogICAgIGlmIChpc0NvbnRleHRMb3N0KCkgfHwg
IXZhbGlkYXRlV2ViR0xPYmplY3QoImNvbXBpbGVTaGFkZXIiLCBzaGFkZXIpKQogICAgICAgICBy
ZXR1cm47Ci0gICAgbV9jb250ZXh0LT5jb21waWxlU2hhZGVyKG9iamVjdE9yWmVybyhzaGFkZXIp
KTsKKyAgICBpZiAobV9jb250ZXh0LT5jb21waWxlU2hhZGVyKG9iamVjdE9yWmVybyhzaGFkZXIp
KSkKKyAgICAgICAgc2hhZGVyLT5zZXRWYWxpZCh0cnVlKTsKICAgICBjbGVhbnVwQWZ0ZXJHcmFw
aGljc0NhbGwoZmFsc2UpOwogfQogCkBAIC0zMTkxLDcgKzMxOTIsOSBAQCB2b2lkIFdlYkdMUmVu
ZGVyaW5nQ29udGV4dDo6bGlua1Byb2dyYW0oV2ViR0xQcm9ncmFtKiBwcm9ncmFtLCBFeGNlcHRp
b25Db2RlJiBlYwogICAgIGlmIChpc0NvbnRleHRMb3N0KCkgfHwgIXZhbGlkYXRlV2ViR0xPYmpl
Y3QoImxpbmtQcm9ncmFtIiwgcHJvZ3JhbSkpCiAgICAgICAgIHJldHVybjsKICAgICBpZiAoIWlz
R0xFUzJDb21wbGlhbnQoKSkgewotICAgICAgICBpZiAoIXByb2dyYW0tPmdldEF0dGFjaGVkU2hh
ZGVyKEdyYXBoaWNzQ29udGV4dDNEOjpWRVJURVhfU0hBREVSKSB8fCAhcHJvZ3JhbS0+Z2V0QXR0
YWNoZWRTaGFkZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQUdNRU5UX1NIQURFUikpIHsKKyAgICAg
ICAgV2ViR0xTaGFkZXIqIHZlcnRleFNoYWRlciA9IHByb2dyYW0tPmdldEF0dGFjaGVkU2hhZGVy
KEdyYXBoaWNzQ29udGV4dDNEOjpWRVJURVhfU0hBREVSKTsKKyAgICAgICAgV2ViR0xTaGFkZXIq
IGZyYWdtZW50U2hhZGVyID0gcHJvZ3JhbS0+Z2V0QXR0YWNoZWRTaGFkZXIoR3JhcGhpY3NDb250
ZXh0M0Q6OkZSQUdNRU5UX1NIQURFUik7CisgICAgICAgIGlmICghdmVydGV4U2hhZGVyIHx8ICFm
cmFnbWVudFNoYWRlciB8fCAhdmVydGV4U2hhZGVyLT5pc1ZhbGlkKCkgfHwgIWZyYWdtZW50U2hh
ZGVyLT5pc1ZhbGlkKCkpIHsKICAgICAgICAgICAgIHByb2dyYW0tPnNldExpbmtTdGF0dXMoZmFs
c2UpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFNoYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTFNoYWRlci5jcHAKaW5kZXggMzUwNjhlYmNkY2EyZWU2NjU3YWE2YmIxMWFh
ZDgyNDhlMjU5ZTM1NC4uOGFhYzBhMDEwMmQ3NTljYWZjZmU2NWU5ZjEzNDdhYThhOTlkNmIyNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xTaGFkZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMU2hhZGVyLmNwcApAQCAtNDMsNiAr
NDMsNyBAQCBXZWJHTFNoYWRlcjo6V2ViR0xTaGFkZXIoV2ViR0xSZW5kZXJpbmdDb250ZXh0KiBj
dHgsIEdDM0RlbnVtIHR5cGUpCiAgICAgOiBXZWJHTFNoYXJlZE9iamVjdChjdHgpCiAgICAgLCBt
X3R5cGUodHlwZSkKICAgICAsIG1fc291cmNlKCIiKQorICAgICwgbV92YWxpZChmYWxzZSkKIHsK
ICAgICBzZXRPYmplY3QoY3R4LT5ncmFwaGljc0NvbnRleHQzRCgpLT5jcmVhdGVTaGFkZXIodHlw
ZSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xTaGFk
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMU2hhZGVyLmgKaW5kZXggOTJk
MWQxYzQ4YTE5YzFjOWQwYjYwNjEwZmVmYzI1YmFlNjc4YjQwNS4uMzNkOWViMTk0ODQyM2VhNmE3
OTA2YTA2MGJiN2M1NGQxNTdmZTc4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xTaGFkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TFNoYWRlci5oCkBAIC00Myw2ICs0Myw4IEBAIHB1YmxpYzoKICAgICBjb25zdCBTdHJpbmcmIGdl
dFNvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlOyB9CiAKICAgICB2b2lkIHNldFNvdXJj
ZShjb25zdCBTdHJpbmcmIHNvdXJjZSkgeyBtX3NvdXJjZSA9IHNvdXJjZTsgfQorICAgIGJvb2wg
aXNWYWxpZCgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsaWQ7IH0KKyAgICB2b2lkIHNldFZhbGlkKGJv
b2wgdmFsaWQpIHsgbV92YWxpZCA9IHZhbGlkOyB9CiAKIHByaXZhdGU6CiAgICAgV2ViR0xTaGFk
ZXIoV2ViR0xSZW5kZXJpbmdDb250ZXh0KiwgR0MzRGVudW0pOwpAQCAtNTMsNiArNTUsNyBAQCBw
cml2YXRlOgogCiAgICAgR0MzRGVudW0gbV90eXBlOwogICAgIFN0cmluZyBtX3NvdXJjZTsKKyAg
ICBib29sIG1fdmFsaWQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaAppbmRl
eCBhMGJhOTE5ZDQ4ZjBjZWRlNmUxNTg1YTIyZjZmMGU0NTk0YmRhM2UzLi40OGFkMWNhZGNjN2Rl
ZWFlNjA2NWQ1MjY5OTVlODVjMTM3YWVkZWY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmgKQEAgLTY3NCw3ICs2NzQsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCBjbGVhckRlcHRoKEdDM0RjbGFtcGYgZGVwdGgpOwogICAgIHZv
aWQgY2xlYXJTdGVuY2lsKEdDM0RpbnQgcyk7CiAgICAgdm9pZCBjb2xvck1hc2soR0MzRGJvb2xl
YW4gcmVkLCBHQzNEYm9vbGVhbiBncmVlbiwgR0MzRGJvb2xlYW4gYmx1ZSwgR0MzRGJvb2xlYW4g
YWxwaGEpOwotICAgIHZvaWQgY29tcGlsZVNoYWRlcihQbGF0Zm9ybTNET2JqZWN0KTsKKyAgICBi
b29sIGNvbXBpbGVTaGFkZXIoUGxhdGZvcm0zRE9iamVjdCk7CiAKICAgICB2b2lkIGNvbXByZXNz
ZWRUZXhJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGVudW0gaW50
ZXJuYWxmb3JtYXQsIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCwgR0MzRGludCBi
b3JkZXIsIEdDM0RzaXplaSBpbWFnZVNpemUsIGNvbnN0IHZvaWQqIGRhdGEpOwogICAgIHZvaWQg
Y29tcHJlc3NlZFRleFN1YkltYWdlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBH
QzNEaW50IHhvZmZzZXQsIEdDM0RpbnQgeW9mZnNldCwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6
ZWkgaGVpZ2h0LCBHQzNEZW51bSBmb3JtYXQsIEdDM0RzaXplaSBpbWFnZVNpemUsIGNvbnN0IHZv
aWQqIGRhdGEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMQ29tbW9uLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTENvbW1vbi5j
cHAKaW5kZXggZDFiMjc2NmQ1NTdiZDc2NWNkZTllOGRlYTlhNWY5YzRlMmZmNWQxNC4uZjU4YjQy
YzVhNGNmZmE0ZGI3NmU3ZTVjZjA2YWUyZjJjODAwNzk1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMQ29t
bW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3Jh
cGhpY3NDb250ZXh0M0RPcGVuR0xDb21tb24uY3BwCkBAIC00MzgsNyArNDM4LDcgQEAgdm9pZCBH
cmFwaGljc0NvbnRleHQzRDo6Y29sb3JNYXNrKEdDM0Rib29sZWFuIHJlZCwgR0MzRGJvb2xlYW4g
Z3JlZW4sIEdDM0Rib29sZWEKICAgICA6OmdsQ29sb3JNYXNrKHJlZCwgZ3JlZW4sIGJsdWUsIGFs
cGhhKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Y29tcGlsZVNoYWRlcihQbGF0Zm9y
bTNET2JqZWN0IHNoYWRlcikKK2Jvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OmNvbXBpbGVTaGFkZXIo
UGxhdGZvcm0zRE9iamVjdCBzaGFkZXIpCiB7CiAgICAgQVNTRVJUKHNoYWRlcik7CiAgICAgbWFr
ZUNvbnRleHRDdXJyZW50KCk7CkBAIC00NDYsNyArNDQ2LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRl
eHQzRDo6Y29tcGlsZVNoYWRlcihQbGF0Zm9ybTNET2JqZWN0IHNoYWRlcikKICAgICBTdHJpbmcg
dHJhbnNsYXRlZFNoYWRlclNvdXJjZSA9IG1fZXh0ZW5zaW9ucy0+Z2V0VHJhbnNsYXRlZFNoYWRl
clNvdXJjZUFOR0xFKHNoYWRlcik7CiAKICAgICBpZiAoIXRyYW5zbGF0ZWRTaGFkZXJTb3VyY2Uu
bGVuZ3RoKCkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAg
Y29uc3QgQ1N0cmluZyYgdHJhbnNsYXRlZFNoYWRlckNTdHJpbmcgPSB0cmFuc2xhdGVkU2hhZGVy
U291cmNlLnV0ZjgoKTsKICAgICBjb25zdCBjaGFyKiB0cmFuc2xhdGVkU2hhZGVyUHRyID0gdHJh
bnNsYXRlZFNoYWRlckNTdHJpbmcuZGF0YSgpOwpAQCAtNDgxLDYgKzQ4MSw3IEBAIHZvaWQgR3Jh
cGhpY3NDb250ZXh0M0Q6OmNvbXBpbGVTaGFkZXIoUGxhdGZvcm0zRE9iamVjdCBzaGFkZXIpCiAg
ICAgaWYgKEdMQ29tcGlsZVN1Y2Nlc3MgIT0gR0xfVFJVRSkKICAgICAgICAgQmxhY2tCZXJyeTo6
UGxhdGZvcm06OmxvZyhCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6TG9nTGV2ZWxXYXJuLCAiVGhlIHNo
YWRlciB2YWxpZGF0ZWQsIGJ1dCBkaWRuJ3QgY29tcGlsZS5cbiIpOwogI2VuZGlmCisgICAgcmV0
dXJuIHRydWU7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmNvcHlUZXhJbWFnZTJEKEdD
M0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGVudW0gaW50ZXJuYWxmb3JtYXQsIEdD
M0RpbnQgeCwgR0MzRGludCB5LCBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQsIEdD
M0RpbnQgYm9yZGVyKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>213429</attachid>
            <date>2013-10-04 18:12:56 -0700</date>
            <delta_ts>2013-10-05 00:38:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-94036-20131005111255.patch</filename>
            <type>text/plain</type>
            <size>5287</size>
            <attacher name="Dean Jackson">dino</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU2OTA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGZjNDIyYWQxOGM3MmUz
ODVlMDA0MmRiMmJhNTZhOWJlNWRlODcyZS4uNDhjODc5NGU3YTZiZDhkZTI4N2U1MjFhODY0YzU0
ZjE5OTUwZTEyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDEzLTEwLTA0ICBEZWFu
IEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViR0xdIHByb2dyYW0gc2hv
dWxkIG5vdCBiZSBhYmxlIHRvIGxpbmsgaWYgYSBiYWQgc2hhZGVyIGlzIGF0dGFjaGVkCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NDAzNgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIElmIHlvdSBhdHRlbXB0
IHRvIGxpbmsgYSBwcm9ncmFtIHdoZW4gYmFkIHNoYWRlcnMgYXJlIGF0dGFjaGVkLCB0aGUKKyAg
ICAgICAgbGluayBzaG91bGQgZmFpbC4gV2ViR0wgYWxzbyByZXF1aXJlcyB0aGF0IHRoZSBwcmV2
aW91c2x5IGxpbmtlZAorICAgICAgICBwcm9ncmFtIHNob3VsZCByZW1haW4gaW50YWN0LiBXZSB3
ZXJlIGRvaW5nIHRoZSBmb3JtZXIsIGJ1dCBub3QKKyAgICAgICAgdGhlIGxhdHRlci4KKworICAg
ICAgICBGaXggdGhpcyBieSBub3QgY2FsbGluZyBnbExpbmtQcm9ncmFtIGlmIHdlIGtub3cgd2Ug
aGF2ZSBiYWQKKyAgICAgICAgc2hhZGVycywgYW5kIHN5bnRoZXNpemUgYSBiYWQgbGluayBzdGF0
dXMgaW5zdGVhZC4KKworICAgICAgICBUZXN0OiBXZWJHTCBjb25mb3JtYW5jZSB0ZXN0IGNvbmZv
cm1hbmNlL3Byb2dyYW1zL3Byb2dyYW0tdGVzdC5odG1sCisgICAgICAgIChmb3VuZCBpbiBMYXlv
dXRUZXN0cy93ZWJnbCkKKworICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29u
dGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmNvbXBp
bGVTaGFkZXIpOiBNYXJrIGEgc2hhZGVyIGFzIHZhbGlkCisgICAgICAgIGlmIGl0IGNvbXBpbGVk
IG9rLgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpsaW5rUHJvZ3Jh
bSk6IERvbid0IGNhbGwgaW50byBHcmFwaGljc0NvbnRleHQzRDo6bGlua1Byb2dyYW0KKyAgICAg
ICAgaWYgd2Uga25vdyB0aGF0IHdlIGRvbid0IGhhdmUgdmFsaWQgc2hhZGVycy4KKyAgICAgICAg
KiBodG1sL2NhbnZhcy9XZWJHTFNoYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFNo
YWRlcjo6V2ViR0xTaGFkZXIpOiBJbml0aWFsaXplIG1faXNWYWxpZC4KKyAgICAgICAgKiBodG1s
L2NhbnZhcy9XZWJHTFNoYWRlci5oOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xTaGFkZXI6Omlz
VmFsaWQpOiBOZXcgbWVtYmVyIHZhcmlhYmxlIGdldHRlciBhbmQgc2V0dGVyLgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0xTaGFkZXI6OnNldFZhbGlkKToKKwogMjAxMy0xMC0wNCAgQmVhciBUcmF2
aXMgIDxiZXRyYXZpc0BhZG9iZS5jb20+CiAKICAgICAgICAgW0NTUyBTaGFwZXNdIFNoYXBlIE91
dHNpZGUgc2hvdWxkIHJlbGF5b3V0IHdoZW4gc2V0IGR5bmFtaWNhbGx5CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcAppbmRleCAz
ZThiYWZiNTA5YjVmZTk2NzcwMzdiYzVjYzFlMTkzNGViNjFhMWNiLi4xNGI0NTJlOTdjY2Y3NDAy
NGQ3ZTIyZWMzZDE4MTU1MDdhOGMzZjBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAwOSwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTEyOTYsNiArMTI5Niw5IEBAIHZv
aWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojpjb21waWxlU2hhZGVyKFdlYkdMU2hhZGVyKiBzaGFk
ZXIsIEV4Y2VwdGlvbkNvZGUmIGVjCiAgICAgaWYgKGlzQ29udGV4dExvc3QoKSB8fCAhdmFsaWRh
dGVXZWJHTE9iamVjdCgiY29tcGlsZVNoYWRlciIsIHNoYWRlcikpCiAgICAgICAgIHJldHVybjsK
ICAgICBtX2NvbnRleHQtPmNvbXBpbGVTaGFkZXIob2JqZWN0T3JaZXJvKHNoYWRlcikpOworICAg
IEdDM0RpbnQgdmFsdWU7CisgICAgbV9jb250ZXh0LT5nZXRTaGFkZXJpdihvYmplY3RPclplcm8o
c2hhZGVyKSwgR3JhcGhpY3NDb250ZXh0M0Q6OkNPTVBJTEVfU1RBVFVTLCAmdmFsdWUpOworICAg
IHNoYWRlci0+c2V0VmFsaWQoISF2YWx1ZSk7CiAgICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxs
KGZhbHNlKTsKIH0KIApAQCAtMzMxOCw3ICszMzIxLDkgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0Nv
bnRleHQ6OmxpbmtQcm9ncmFtKFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSwgRXhjZXB0aW9uQ29kZSYg
ZWMKICAgICBpZiAoaXNDb250ZXh0TG9zdCgpIHx8ICF2YWxpZGF0ZVdlYkdMT2JqZWN0KCJsaW5r
UHJvZ3JhbSIsIHByb2dyYW0pKQogICAgICAgICByZXR1cm47CiAgICAgaWYgKCFpc0dMRVMyQ29t
cGxpYW50KCkpIHsKLSAgICAgICAgaWYgKCFwcm9ncmFtLT5nZXRBdHRhY2hlZFNoYWRlcihHcmFw
aGljc0NvbnRleHQzRDo6VkVSVEVYX1NIQURFUikgfHwgIXByb2dyYW0tPmdldEF0dGFjaGVkU2hh
ZGVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFHTUVOVF9TSEFERVIpKSB7CisgICAgICAgIFdlYkdM
U2hhZGVyKiB2ZXJ0ZXhTaGFkZXIgPSBwcm9ncmFtLT5nZXRBdHRhY2hlZFNoYWRlcihHcmFwaGlj
c0NvbnRleHQzRDo6VkVSVEVYX1NIQURFUik7CisgICAgICAgIFdlYkdMU2hhZGVyKiBmcmFnbWVu
dFNoYWRlciA9IHByb2dyYW0tPmdldEF0dGFjaGVkU2hhZGVyKEdyYXBoaWNzQ29udGV4dDNEOjpG
UkFHTUVOVF9TSEFERVIpOworICAgICAgICBpZiAoIXZlcnRleFNoYWRlciB8fCAhdmVydGV4U2hh
ZGVyLT5pc1ZhbGlkKCkgfHwgIWZyYWdtZW50U2hhZGVyIHx8ICFmcmFnbWVudFNoYWRlci0+aXNW
YWxpZCgpKSB7CiAgICAgICAgICAgICBwcm9ncmFtLT5zZXRMaW5rU3RhdHVzKGZhbHNlKTsKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xTaGFkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xTaGFkZXIuY3BwCmluZGV4IDM1MDY4ZWJjZGNhMmVlNjY1N2FhNmJiMTFhYWQ4MjQ4ZTI1
OWUzNTQuLjBmMzMxNTY3NjhmMWVlMGU5MThkOWUxZDY2NTMyNzI4MTA3OGM3NjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMU2hhZGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFNoYWRlci5jcHAKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAwOSwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQzLDYgKzQzLDcgQEAgV2Vi
R0xTaGFkZXI6OldlYkdMU2hhZGVyKFdlYkdMUmVuZGVyaW5nQ29udGV4dCogY3R4LCBHQzNEZW51
bSB0eXBlKQogICAgIDogV2ViR0xTaGFyZWRPYmplY3QoY3R4KQogICAgICwgbV90eXBlKHR5cGUp
CiAgICAgLCBtX3NvdXJjZSgiIikKKyAgICAsIG1faXNWYWxpZChmYWxzZSkKIHsKICAgICBzZXRP
YmplY3QoY3R4LT5ncmFwaGljc0NvbnRleHQzRCgpLT5jcmVhdGVTaGFkZXIodHlwZSkpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xTaGFkZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMU2hhZGVyLmgKaW5kZXggNzVjOTliYTdiZGM3
M2ZjNjg4NjAxYTIxNGEyNTIyMmY1ZGIwNDI5YS4uNzc3MWQyNzYwOWYzYmNmOWY3MTIwNWJmMzBk
ODcyZDkyOWQ3ZDVhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xTaGFkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFNoYWRlci5o
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTMgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC00Myw2ICs0Myw5IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0U291cmNlKGNvbnN0IFN0cmlu
ZyYgc291cmNlKSB7IG1fc291cmNlID0gc291cmNlOyB9CiAKKyAgICBib29sIGlzVmFsaWQoKSBj
b25zdCB7IHJldHVybiBtX2lzVmFsaWQ7IH0KKyAgICB2b2lkIHNldFZhbGlkKGJvb2wgdmFsaWQp
IHsgbV9pc1ZhbGlkID0gdmFsaWQ7IH0KKwogcHJpdmF0ZToKICAgICBXZWJHTFNoYWRlcihXZWJH
TFJlbmRlcmluZ0NvbnRleHQqLCBHQzNEZW51bSk7CiAKQEAgLTUyLDYgKzU1LDcgQEAgcHJpdmF0
ZToKIAogICAgIEdDM0RlbnVtIG1fdHlwZTsKICAgICBTdHJpbmcgbV9zb3VyY2U7CisgICAgYm9v
bCBtX2lzVmFsaWQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>
<flag name="review"
          id="235790"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>