<?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>129355</bug_id>
          
          <creation_ts>2014-02-25 18:40:38 -0800</creation_ts>
          <short_desc>Compilation policy management belongs in operationOptimize(), not the DFG Driver.</short_desc>
          <delta_ts>2014-02-26 12:09:21 -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>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>barraclough</cc>
    
    <cc>ggaren</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mhahnenberg</cc>
    
    <cc>mmirman</cc>
    
    <cc>msaboff</cc>
    
    <cc>nrotem</cc>
    
    <cc>oliver</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>984587</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-02-25 18:40:38 -0800</bug_when>
    <thetext>If you want to poll for an opportunity to compile code, then you should do that outside of the DFG::compile() driver.  Such polling belongs in operationOptimize().  We already do such polling for shouldAlwaysBeInlined and for the execution counter itself.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>984610</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2014-02-25 20:26:37 -0800</bug_when>
    <thetext>&lt;rdar://problem/16169484&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>984706</commentid>
    <comment_count>2</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2014-02-26 03:58:27 -0800</bug_when>
    <thetext>Moving the previous title here for reference:
&quot;CompilationInvalidated is reserved for signaling concurrent JIT race conditions and should never be used to mean &quot;I didn&apos;t feel like compiling right now so ask me again later”.

By compilation policy, I mean the rules for determining whether to compile, when to compile, when to attempt compilation again, etc.  The few of these policy decisions being made in the DFG driver are now moved to operationOptimize() where we keep the rest of the policy logic.  Decisions that are based on the capabilities supported by the DFG are moved to DFG capabiliityLevel().

Patch coming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>984708</commentid>
    <comment_count>3</comment_count>
      <attachid>225246</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2014-02-26 04:08:50 -0800</bug_when>
    <thetext>Created attachment 225246
the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>984772</commentid>
    <comment_count>4</comment_count>
      <attachid>225246</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-02-26 09:50:23 -0800</bug_when>
    <thetext>Comment on attachment 225246
the patch.

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

&gt; Source/JavaScriptCore/dfg/DFGCapabilities.cpp:232
&gt; +
&gt; +    if (!MacroAssembler::supportsFloatingPoint())
&gt; +        return CannotCompile;
&gt; +
&gt; +    if (!Options::bytecodeRangeToDFGCompile().isInRange(codeBlock-&gt;instructionCount()))
&gt; +        return CannotCompile;
&gt; +

I would put these checks into the mightCompile... and mightInline... methods.  There are a handful of places that will call the mightInline() methods instead of calling capabilityLevel().  You could give them all a common helper function like &quot;isSupported(CodeBlock*)&quot; that will do checks like supportsFloatingPoint and the bytecodeRange.

&gt; Source/JavaScriptCore/jit/JITOperations.cpp:1053
&gt; +    if (!Options::useDFGJIT()) {
&gt; +        codeBlock-&gt;dontOptimizeAnytimeSoon();
&gt; +        return encodeResult(0, 0);
&gt; +    }
&gt; +
&gt; +    if (vm.enabledProfiler()) {
&gt; +        codeBlock-&gt;optimizeAfterWarmUp();
&gt; +        return encodeResult(0, 0);
&gt; +    }
&gt; +
&gt; +    Debugger* debugger = codeBlock-&gt;globalObject()-&gt;debugger();
&gt; +    if (debugger &amp;&amp; (debugger-&gt;isStepping() || codeBlock-&gt;baselineAlternative()-&gt;hasDebuggerRequests())) {
&gt; +        codeBlock-&gt;optimizeAfterWarmUp();
&gt; +        return encodeResult(0, 0);
&gt; +    }
&gt; +

This should all be placed below the call to checkIfOptimizationThresholdReached().  That call must be the first thing you do on an ExecutionCounter slow path.

Also, the !useDFGJIT() part should be in DFGCapabilities.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>984821</commentid>
    <comment_count>5</comment_count>
      <attachid>225270</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2014-02-26 11:38:31 -0800</bug_when>
    <thetext>Created attachment 225270
patch 2: applied Filip’s feedback.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>984823</commentid>
    <comment_count>6</comment_count>
      <attachid>225270</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-02-26 11:41:11 -0800</bug_when>
    <thetext>Comment on attachment 225270
patch 2: applied Filip’s feedback.

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

Almost there.

&gt; Source/JavaScriptCore/dfg/DFGCapabilities.cpp:45
&gt; +    if (!Options::useDFGJIT()
&gt; +        || !MacroAssembler::supportsFloatingPoint()
&gt; +        || !Options::bytecodeRangeToDFGCompile().isInRange(codeBlock-&gt;instructionCount()))
&gt; +        return false;
&gt; +    return true;

Why not just turn this into a single return statement?

&gt; Source/JavaScriptCore/jit/JITOperations.cpp:1065
&gt; +        codeBlock-&gt;optimizeAfterWarmUp();

You could call updateAllPredictions() here.

&gt; Source/JavaScriptCore/jit/JITOperations.cpp:1071
&gt; +        codeBlock-&gt;optimizeAfterWarmUp();

And here.

You could even have a helper that calls both optimizeAfterWarmUp and updateAllPredictions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>984828</commentid>
    <comment_count>7</comment_count>
      <attachid>225273</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2014-02-26 12:02:37 -0800</bug_when>
    <thetext>Created attachment 225273
patch 3: applied more feedback.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>984832</commentid>
    <comment_count>8</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2014-02-26 12:09:21 -0800</bug_when>
    <thetext>Thanks.  Landed in r164734: &lt;http://trac.webkit.org/r164734&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>225246</attachid>
            <date>2014-02-26 04:08:50 -0800</date>
            <delta_ts>2014-02-26 11:38:31 -0800</delta_ts>
            <desc>the patch.</desc>
            <filename>bug-129355.patch</filename>
            <type>text/plain</type>
            <size>5276</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTY0NzEzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMyIEBA
CisyMDE0LTAyLTI2ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBD
b21waWxhdGlvbiBwb2xpY3kgbWFuYWdlbWVudCBiZWxvbmdzIGluIG9wZXJhdGlvbk9wdGltaXpl
KCksIG5vdCB0aGUgREZHIERyaXZlci4KKyAgICAgICAgPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzEy
OTM1NT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBC
eSBjb21waWxhdGlvbiBwb2xpY3ksIEkgbWVhbiB0aGUgcnVsZXMgZm9yIGRldGVybWluaW5nIHdo
ZXRoZXIgdG8KKyAgICAgICAgY29tcGlsZSwgd2hlbiB0byBjb21waWxlLCB3aGVuIHRvIGF0dGVt
cHQgY29tcGlsYXRpb24gYWdhaW4sIGV0Yy4gIFRoZQorICAgICAgICBmZXcgb2YgdGhlc2UgcG9s
aWN5IGRlY2lzaW9ucyB0aGF0IHdlcmUgcHJldmlvdXNseSBiZWluZyBtYWRlIGluIHRoZQorICAg
ICAgICBERkcgZHJpdmVyIGFyZSBub3cgbW92ZWQgdG8gb3BlcmF0aW9uT3B0aW1pemUoKSB3aGVy
ZSB3ZSBrZWVwIHRoZSByZXN0CisgICAgICAgIG9mIHRoZSBwb2xpY3kgbG9naWMuICBEZWNpc2lv
bnMgdGhhdCBhcmUgYmFzZWQgb24gdGhlIGNhcGFiaWxpdGllcworICAgICAgICBzdXBwb3J0ZWQg
YnkgdGhlIERGRyBhcmUgbW92ZWQgdG8gREZHIGNhcGFiaWxpaXR5TGV2ZWwoKS4KKworICAgICAg
ICBJJ3ZlIHJ1biB0aGUgZm9sbG93aW5nIGJlbmNobWFya3M6CisgICAgICAgIDEuIHRoZSBjb2xs
ZWN0aW9uIG9mIGpzYyBiZW5jaG1hcmtzIG9uIHRoZSBqc2MgZXhlY3V0YWJsZSB2cy4gaXRzCisg
ICAgICAgICAgIGJhc2VsaW5lLgorICAgICAgICAyLiBPY3RhbmUgMi4wIGluIGJyb3dzZXIgd2l0
aG91dCB0aGUgV2ViSW5zcGVjdG9yLgorICAgICAgICAzLiBPY3RhbmUgMi4wIGluIGJyb3dzZXIg
d2l0aCB0aGUgV2ViSW5zcGVjdG9yIG9wZW4gYW5kIGEgYnJlYWtwb2ludAorICAgICAgICAgICBz
ZXQgc29tZXdoZXJlIHdoZXJlIGl0IHdvbid0IGJyZWFrLgorCisgICAgICAgIEluIGFsbCBvZiB0
aGVzZSwgdGhlIHJlc3VsdHMgY2FtZSBvdXQgdG8gYmUgYSB3YXNoIGFzIGV4cGVjdGVkLgorCisg
ICAgICAgICogZGZnL0RGR0NhcGFiaWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Y2Fw
YWJpbGl0eUxldmVsKToKKyAgICAgICAgKiBkZmcvREZHRHJpdmVyLmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpjb21waWxlSW1wbCk6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuY3BwOgor
CiAyMDE0LTAyLTI1ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBX
ZWIgSW5zcGVjdG9yOiBDUkFTSCB3aGVuIGV2YWx1YXRpbmcgaW4gY29uc29sZSBvZiBKU0NvbnRl
eHQgUldJIHdpdGggZGlzYWJsZWQgYnJlYWtwb2ludHMuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCShyZXZpc2lvbiAxNjQ2OTUpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJERkdDb21tb24uaCIKICNpbmNsdWRlICJJ
bnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJPcHRpb25z
LmgiCiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIApAQCAtMjIyLDcgKzIyMywx
MyBAQCBDYXBhYmlsaXR5TGV2ZWwgY2FwYWJpbGl0eUxldmVsKENvZGVCbG9jCiAgICAgSW5zdHJ1
Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luID0gY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdp
bigpOwogICAgIHVuc2lnbmVkIGluc3RydWN0aW9uQ291bnQgPSBjb2RlQmxvY2stPmluc3RydWN0
aW9ucygpLnNpemUoKTsKICAgICBDYXBhYmlsaXR5TGV2ZWwgcmVzdWx0ID0gQ2FuQ29tcGlsZUFu
ZElubGluZTsKLSAgICAKKworICAgIGlmICghTWFjcm9Bc3NlbWJsZXI6OnN1cHBvcnRzRmxvYXRp
bmdQb2ludCgpKQorICAgICAgICByZXR1cm4gQ2Fubm90Q29tcGlsZTsKKworICAgIGlmICghT3B0
aW9uczo6Ynl0ZWNvZGVSYW5nZVRvREZHQ29tcGlsZSgpLmlzSW5SYW5nZShjb2RlQmxvY2stPmlu
c3RydWN0aW9uQ291bnQoKSkpCisgICAgICAgIHJldHVybiBDYW5ub3RDb21waWxlOworCiAgICAg
Zm9yICh1bnNpZ25lZCBieXRlY29kZU9mZnNldCA9IDA7IGJ5dGVjb2RlT2Zmc2V0IDwgaW5zdHJ1
Y3Rpb25Db3VudDsgKSB7CiAgICAgICAgIHN3aXRjaCAoaW50ZXJwcmV0ZXItPmdldE9wY29kZUlE
KGluc3RydWN0aW9uc0JlZ2luW2J5dGVjb2RlT2Zmc2V0XS51Lm9wY29kZSkpIHsKICNkZWZpbmUg
REVGSU5FX09QKG9wY29kZSwgbGVuZ3RoKSBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0RyaXZlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdEcml2ZXIuY3BwCShyZXZpc2lvbiAxNjQ2OTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0RyaXZlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDcgKzM0LDYgQEAKICNp
bmNsdWRlICJERkdQbGFuLmgiCiAjaW5jbHVkZSAiREZHVGh1bmtzLmgiCiAjaW5jbHVkZSAiREZH
V29ya2xpc3QuaCIKLSNpbmNsdWRlICJEZWJ1Z2dlci5oIgogI2luY2x1ZGUgIkpJVENvZGUuaCIK
ICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiT3B0aW9ucy5oIgpAQCAtNjksMTkg
KzY4LDYgQEAgc3RhdGljIENvbXBpbGF0aW9uUmVzdWx0IGNvbXBpbGVJbXBsKAogICAgIEFTU0VS
VChjb2RlQmxvY2stPmFsdGVybmF0aXZlKCktPmppdFR5cGUoKSA9PSBKSVRDb2RlOjpCYXNlbGlu
ZUpJVCk7CiAgICAgQVNTRVJUKCFwcm9maWxlZERGR0NvZGVCbG9jayB8fCBwcm9maWxlZERGR0Nv
ZGVCbG9jay0+aml0VHlwZSgpID09IEpJVENvZGU6OkRGR0pJVCk7CiAgICAgCi0gICAgaWYgKCFP
cHRpb25zOjp1c2VERkdKSVQoKSB8fCAhTWFjcm9Bc3NlbWJsZXI6OnN1cHBvcnRzRmxvYXRpbmdQ
b2ludCgpKQotICAgICAgICByZXR1cm4gQ29tcGlsYXRpb25GYWlsZWQ7Ci0KLSAgICBpZiAoIU9w
dGlvbnM6OmJ5dGVjb2RlUmFuZ2VUb0RGR0NvbXBpbGUoKS5pc0luUmFuZ2UoY29kZUJsb2NrLT5p
bnN0cnVjdGlvbkNvdW50KCkpKQotICAgICAgICByZXR1cm4gQ29tcGlsYXRpb25GYWlsZWQ7Ci0g
ICAgCi0gICAgaWYgKHZtLmVuYWJsZWRQcm9maWxlcigpKQotICAgICAgICByZXR1cm4gQ29tcGls
YXRpb25JbnZhbGlkYXRlZDsKLQotICAgIERlYnVnZ2VyKiBkZWJ1Z2dlciA9IGNvZGVCbG9jay0+
Z2xvYmFsT2JqZWN0KCktPmRlYnVnZ2VyKCk7Ci0gICAgaWYgKGRlYnVnZ2VyICYmIChkZWJ1Z2dl
ci0+aXNTdGVwcGluZygpIHx8IGNvZGVCbG9jay0+YmFzZWxpbmVBbHRlcm5hdGl2ZSgpLT5oYXNE
ZWJ1Z2dlclJlcXVlc3RzKCkpKQotICAgICAgICByZXR1cm4gQ29tcGlsYXRpb25JbnZhbGlkYXRl
ZDsKLQogICAgIGlmIChsb2dDb21waWxhdGlvbkNoYW5nZXMobW9kZSkpCiAgICAgICAgIGRhdGFM
b2coIkRGRyhEcml2ZXIpIGNvbXBpbGluZyAiLCAqY29kZUJsb2NrLCAiIHdpdGggIiwgbW9kZSwg
IiwgbnVtYmVyIG9mIGluc3RydWN0aW9ucyA9ICIsIGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25Db3Vu
dCgpLCAiXG4iKTsKICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bl
cmF0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRP
cGVyYXRpb25zLmNwcAkocmV2aXNpb24gMTY0Njk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRPcGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsNiArMzUsNyBAQAog
I2luY2x1ZGUgIkRGR09TUkVudHJ5LmgiCiAjaW5jbHVkZSAiREZHVGh1bmtzLmgiCiAjaW5jbHVk
ZSAiREZHV29ya2xpc3QuaCIKKyNpbmNsdWRlICJEZWJ1Z2dlci5oIgogI2luY2x1ZGUgIkVycm9y
LmgiCiAjaW5jbHVkZSAiRXJyb3JIYW5kbGluZ1Njb3BlLmgiCiAjaW5jbHVkZSAiR2V0dGVyU2V0
dGVyLmgiCkBAIC0xMDM0LDYgKzEwMzUsMjIgQEAgU2xvd1BhdGhSZXR1cm5UeXBlIEpJVF9PUEVS
QVRJT04gb3BlcmF0aQogICAgIAogICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29k
ZUJsb2NrKCk7CiAKKyAgICBpZiAoIU9wdGlvbnM6OnVzZURGR0pJVCgpKSB7CisgICAgICAgIGNv
ZGVCbG9jay0+ZG9udE9wdGltaXplQW55dGltZVNvb24oKTsKKyAgICAgICAgcmV0dXJuIGVuY29k
ZVJlc3VsdCgwLCAwKTsKKyAgICB9CisKKyAgICBpZiAodm0uZW5hYmxlZFByb2ZpbGVyKCkpIHsK
KyAgICAgICAgY29kZUJsb2NrLT5vcHRpbWl6ZUFmdGVyV2FybVVwKCk7CisgICAgICAgIHJldHVy
biBlbmNvZGVSZXN1bHQoMCwgMCk7CisgICAgfQorCisgICAgRGVidWdnZXIqIGRlYnVnZ2VyID0g
Y29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKS0+ZGVidWdnZXIoKTsKKyAgICBpZiAoZGVidWdnZXIg
JiYgKGRlYnVnZ2VyLT5pc1N0ZXBwaW5nKCkgfHwgY29kZUJsb2NrLT5iYXNlbGluZUFsdGVybmF0
aXZlKCktPmhhc0RlYnVnZ2VyUmVxdWVzdHMoKSkpIHsKKyAgICAgICAgY29kZUJsb2NrLT5vcHRp
bWl6ZUFmdGVyV2FybVVwKCk7CisgICAgICAgIHJldHVybiBlbmNvZGVSZXN1bHQoMCwgMCk7Cisg
ICAgfQorCiAgICAgaWYgKGJ5dGVjb2RlSW5kZXgpIHsKICAgICAgICAgLy8gSWYgd2UncmUgYXR0
ZW1wdGluZyB0byBPU1IgZnJvbSBhIGxvb3AsIGFzc3VtZSB0aGF0IHRoaXMgc2hvdWxkIGJlCiAg
ICAgICAgIC8vIHNlcGFyYXRlbHkgb3B0aW1pemVkLgo=
</data>
<flag name="review"
          id="249371"
          type_id="1"
          status="-"
          setter="fpizlo"
    />
    <flag name="commit-queue"
          id="249372"
          type_id="3"
          status="-"
          setter="fpizlo"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>225270</attachid>
            <date>2014-02-26 11:38:31 -0800</date>
            <delta_ts>2014-02-26 12:02:37 -0800</delta_ts>
            <desc>patch 2: applied Filip’s feedback.</desc>
            <filename>bug-129355.patch</filename>
            <type>text/plain</type>
            <size>8226</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTY0NzIxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQwIEBA
CisyMDE0LTAyLTI2ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBD
b21waWxhdGlvbiBwb2xpY3kgbWFuYWdlbWVudCBiZWxvbmdzIGluIG9wZXJhdGlvbk9wdGltaXpl
KCksIG5vdCB0aGUgREZHIERyaXZlci4KKyAgICAgICAgPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzEy
OTM1NT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBC
eSBjb21waWxhdGlvbiBwb2xpY3ksIEkgbWVhbiB0aGUgcnVsZXMgZm9yIGRldGVybWluaW5nIHdo
ZXRoZXIgdG8KKyAgICAgICAgY29tcGlsZSwgd2hlbiB0byBjb21waWxlLCB3aGVuIHRvIGF0dGVt
cHQgY29tcGlsYXRpb24gYWdhaW4sIGV0Yy4gIFRoZQorICAgICAgICBmZXcgb2YgdGhlc2UgcG9s
aWN5IGRlY2lzaW9ucyB0aGF0IHdlcmUgcHJldmlvdXNseSBiZWluZyBtYWRlIGluIHRoZQorICAg
ICAgICBERkcgZHJpdmVyIGFyZSBub3cgbW92ZWQgdG8gb3BlcmF0aW9uT3B0aW1pemUoKSB3aGVy
ZSB3ZSBrZWVwIHRoZSByZXN0CisgICAgICAgIG9mIHRoZSBwb2xpY3kgbG9naWMuICBEZWNpc2lv
bnMgdGhhdCBhcmUgYmFzZWQgb24gdGhlIGNhcGFiaWxpdGllcworICAgICAgICBzdXBwb3J0ZWQg
YnkgdGhlIERGRyBhcmUgbW92ZWQgdG8gREZHIGNhcGFiaWxpaXR5TGV2ZWwoKS4KKworICAgICAg
ICBJJ3ZlIHJ1biB0aGUgZm9sbG93aW5nIGJlbmNobWFya3M6CisgICAgICAgIDEuIHRoZSBjb2xs
ZWN0aW9uIG9mIGpzYyBiZW5jaG1hcmtzIG9uIHRoZSBqc2MgZXhlY3V0YWJsZSB2cy4gaXRzCisg
ICAgICAgICAgIGJhc2VsaW5lLgorICAgICAgICAyLiBPY3RhbmUgMi4wIGluIGJyb3dzZXIgd2l0
aG91dCB0aGUgV2ViSW5zcGVjdG9yLgorICAgICAgICAzLiBPY3RhbmUgMi4wIGluIGJyb3dzZXIg
d2l0aCB0aGUgV2ViSW5zcGVjdG9yIG9wZW4gYW5kIGEgYnJlYWtwb2ludAorICAgICAgICAgICBz
ZXQgc29tZXdoZXJlIHdoZXJlIGl0IHdvbid0IGJyZWFrLgorCisgICAgICAgIEluIGFsbCBvZiB0
aGVzZSwgdGhlIHJlc3VsdHMgY2FtZSBvdXQgdG8gYmUgYSB3YXNoIGFzIGV4cGVjdGVkLgorCisg
ICAgICAgICogZGZnL0RGR0NhcGFiaWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6aXNT
dXBwb3J0ZWQpOgorICAgICAgICAoSlNDOjpERkc6Om1pZ2h0Q29tcGlsZUV2YWwpOgorICAgICAg
ICAoSlNDOjpERkc6Om1pZ2h0Q29tcGlsZVByb2dyYW0pOgorICAgICAgICAoSlNDOjpERkc6Om1p
Z2h0Q29tcGlsZUZ1bmN0aW9uRm9yQ2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6bWlnaHRDb21w
aWxlRnVuY3Rpb25Gb3JDb25zdHJ1Y3QpOgorICAgICAgICAoSlNDOjpERkc6Om1pZ2h0SW5saW5l
RnVuY3Rpb25Gb3JDYWxsKToKKyAgICAgICAgKEpTQzo6REZHOjptaWdodElubGluZUZ1bmN0aW9u
Rm9yQ2xvc3VyZUNhbGwpOgorICAgICAgICAoSlNDOjpERkc6Om1pZ2h0SW5saW5lRnVuY3Rpb25G
b3JDb25zdHJ1Y3QpOgorICAgICAgICAqIGRmZy9ERkdDYXBhYmlsaXRpZXMuaDoKKyAgICAgICAg
KiBkZmcvREZHRHJpdmVyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpjb21waWxlSW1wbCk6Cisg
ICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuY3BwOgorCiAyMDE0LTAyLTI2ICBNYXJrIExhbSAg
PG1hcmsubGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBBU1NFUlRJT04gRkFJTEVEOiBtX2hlYXAt
PnZtKCktPmN1cnJlbnRUaHJlYWRJc0hvbGRpbmdBUElMb2NrKCkgaW4gaW5zcGVjdG9yLXByb3Rv
Y29sLyouCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRp
ZXMuY3BwCShyZXZpc2lvbiAxNjQ2OTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0NhcGFiaWxpdGllcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDQxICszMiw1OCBAQAogI2lu
Y2x1ZGUgIkRGR0NvbW1vbi5oIgogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCiAjaW5jbHVkZSAi
SlNDSW5saW5lcy5oIgorI2luY2x1ZGUgIk9wdGlvbnMuaCIKIAogbmFtZXNwYWNlIEpTQyB7IG5h
bWVzcGFjZSBERkcgewogCitib29sIGlzU3VwcG9ydGVkKENvZGVCbG9jayogY29kZUJsb2NrKQor
eworICAgIGlmICghT3B0aW9uczo6dXNlREZHSklUKCkKKyAgICAgICAgfHwgIU1hY3JvQXNzZW1i
bGVyOjpzdXBwb3J0c0Zsb2F0aW5nUG9pbnQoKQorICAgICAgICB8fCAhT3B0aW9uczo6Ynl0ZWNv
ZGVSYW5nZVRvREZHQ29tcGlsZSgpLmlzSW5SYW5nZShjb2RlQmxvY2stPmluc3RydWN0aW9uQ291
bnQoKSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogYm9v
bCBtaWdodENvbXBpbGVFdmFsKENvZGVCbG9jayogY29kZUJsb2NrKQogewotICAgIHJldHVybiBj
b2RlQmxvY2stPmluc3RydWN0aW9uQ291bnQoKSA8PSBPcHRpb25zOjptYXhpbXVtT3B0aW1pemF0
aW9uQ2FuZGlkYXRlSW5zdHJ1Y3Rpb25Db3VudCgpOworICAgIHJldHVybiBpc1N1cHBvcnRlZChj
b2RlQmxvY2spCisgICAgICAgICYmIGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25Db3VudCgpIDw9IE9w
dGlvbnM6Om1heGltdW1PcHRpbWl6YXRpb25DYW5kaWRhdGVJbnN0cnVjdGlvbkNvdW50KCk7CiB9
CiBib29sIG1pZ2h0Q29tcGlsZVByb2dyYW0oQ29kZUJsb2NrKiBjb2RlQmxvY2spCiB7Ci0gICAg
cmV0dXJuIGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25Db3VudCgpIDw9IE9wdGlvbnM6Om1heGltdW1P
cHRpbWl6YXRpb25DYW5kaWRhdGVJbnN0cnVjdGlvbkNvdW50KCk7CisgICAgcmV0dXJuIGlzU3Vw
cG9ydGVkKGNvZGVCbG9jaykKKyAgICAgICAgJiYgY29kZUJsb2NrLT5pbnN0cnVjdGlvbkNvdW50
KCkgPD0gT3B0aW9uczo6bWF4aW11bU9wdGltaXphdGlvbkNhbmRpZGF0ZUluc3RydWN0aW9uQ291
bnQoKTsKIH0KIGJvb2wgbWlnaHRDb21waWxlRnVuY3Rpb25Gb3JDYWxsKENvZGVCbG9jayogY29k
ZUJsb2NrKQogewotICAgIHJldHVybiBjb2RlQmxvY2stPmluc3RydWN0aW9uQ291bnQoKSA8PSBP
cHRpb25zOjptYXhpbXVtT3B0aW1pemF0aW9uQ2FuZGlkYXRlSW5zdHJ1Y3Rpb25Db3VudCgpOwor
ICAgIHJldHVybiBpc1N1cHBvcnRlZChjb2RlQmxvY2spCisgICAgICAgICYmIGNvZGVCbG9jay0+
aW5zdHJ1Y3Rpb25Db3VudCgpIDw9IE9wdGlvbnM6Om1heGltdW1PcHRpbWl6YXRpb25DYW5kaWRh
dGVJbnN0cnVjdGlvbkNvdW50KCk7CiB9CiBib29sIG1pZ2h0Q29tcGlsZUZ1bmN0aW9uRm9yQ29u
c3RydWN0KENvZGVCbG9jayogY29kZUJsb2NrKQogewotICAgIHJldHVybiBjb2RlQmxvY2stPmlu
c3RydWN0aW9uQ291bnQoKSA8PSBPcHRpb25zOjptYXhpbXVtT3B0aW1pemF0aW9uQ2FuZGlkYXRl
SW5zdHJ1Y3Rpb25Db3VudCgpOworICAgIHJldHVybiBpc1N1cHBvcnRlZChjb2RlQmxvY2spCisg
ICAgICAgICYmIGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25Db3VudCgpIDw9IE9wdGlvbnM6Om1heGlt
dW1PcHRpbWl6YXRpb25DYW5kaWRhdGVJbnN0cnVjdGlvbkNvdW50KCk7CiB9CiAKIGJvb2wgbWln
aHRJbmxpbmVGdW5jdGlvbkZvckNhbGwoQ29kZUJsb2NrKiBjb2RlQmxvY2spCiB7Ci0gICAgcmV0
dXJuIGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25Db3VudCgpIDw9IE9wdGlvbnM6Om1heGltdW1GdW5j
dGlvbkZvckNhbGxJbmxpbmVDYW5kaWRhdGVJbnN0cnVjdGlvbkNvdW50KCkKKyAgICByZXR1cm4g
aXNTdXBwb3J0ZWQoY29kZUJsb2NrKSAKKyAgICAgICAgJiYgY29kZUJsb2NrLT5pbnN0cnVjdGlv
bkNvdW50KCkgPD0gT3B0aW9uczo6bWF4aW11bUZ1bmN0aW9uRm9yQ2FsbElubGluZUNhbmRpZGF0
ZUluc3RydWN0aW9uQ291bnQoKQogICAgICAgICAmJiAhY29kZUJsb2NrLT5vd25lckV4ZWN1dGFi
bGUoKS0+bmVlZHNBY3RpdmF0aW9uKCkKICAgICAgICAgJiYgY29kZUJsb2NrLT5vd25lckV4ZWN1
dGFibGUoKS0+aXNJbmxpbmluZ0NhbmRpZGF0ZSgpOwogfQogYm9vbCBtaWdodElubGluZUZ1bmN0
aW9uRm9yQ2xvc3VyZUNhbGwoQ29kZUJsb2NrKiBjb2RlQmxvY2spCiB7Ci0gICAgcmV0dXJuIGNv
ZGVCbG9jay0+aW5zdHJ1Y3Rpb25Db3VudCgpIDw9IE9wdGlvbnM6Om1heGltdW1GdW5jdGlvbkZv
ckNsb3N1cmVDYWxsSW5saW5lQ2FuZGlkYXRlSW5zdHJ1Y3Rpb25Db3VudCgpCisgICAgcmV0dXJu
IGlzU3VwcG9ydGVkKGNvZGVCbG9jaykgCisgICAgICAgICYmIGNvZGVCbG9jay0+aW5zdHJ1Y3Rp
b25Db3VudCgpIDw9IE9wdGlvbnM6Om1heGltdW1GdW5jdGlvbkZvckNsb3N1cmVDYWxsSW5saW5l
Q2FuZGlkYXRlSW5zdHJ1Y3Rpb25Db3VudCgpCiAgICAgICAgICYmICFjb2RlQmxvY2stPm93bmVy
RXhlY3V0YWJsZSgpLT5uZWVkc0FjdGl2YXRpb24oKQogICAgICAgICAmJiBjb2RlQmxvY2stPm93
bmVyRXhlY3V0YWJsZSgpLT5pc0lubGluaW5nQ2FuZGlkYXRlKCk7CiB9CiBib29sIG1pZ2h0SW5s
aW5lRnVuY3Rpb25Gb3JDb25zdHJ1Y3QoQ29kZUJsb2NrKiBjb2RlQmxvY2spCiB7Ci0gICAgcmV0
dXJuIGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25Db3VudCgpIDw9IE9wdGlvbnM6Om1heGltdW1GdW5j
dGlvbkZvckNvbnN0cnVjdElubGluZUNhbmRpZGF0ZUluc3RydWN0aW9uQ291bnQoKQorICAgIHJl
dHVybiBpc1N1cHBvcnRlZChjb2RlQmxvY2spIAorICAgICAgICAmJiBjb2RlQmxvY2stPmluc3Ry
dWN0aW9uQ291bnQoKSA8PSBPcHRpb25zOjptYXhpbXVtRnVuY3Rpb25Gb3JDb25zdHJ1Y3RJbmxp
bmVDYW5kaWRhdGVJbnN0cnVjdGlvbkNvdW50KCkKICAgICAgICAgJiYgIWNvZGVCbG9jay0+b3du
ZXJFeGVjdXRhYmxlKCktPm5lZWRzQWN0aXZhdGlvbigpCiAgICAgICAgICYmIGNvZGVCbG9jay0+
b3duZXJFeGVjdXRhYmxlKCktPmlzSW5saW5pbmdDYW5kaWRhdGUoKTsKIH0KSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuaAkocmV2aXNpb24gMTY0Njk1
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzksNiArMzksNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7
CiAjaWYgRU5BQkxFKERGR19KSVQpCiAvLyBGYXN0IGNoZWNrIGZ1bmN0aW9uczsgaWYgdGhleSBy
ZXR1cm4gdHJ1ZSBpdCBpcyBzdGlsbCBuZWNlc3NhcnkgdG8KIC8vIGNoZWNrIG9wY29kZXMuCiti
b29sIGlzU3VwcG9ydGVkKENvZGVCbG9jayopOwogYm9vbCBtaWdodENvbXBpbGVFdmFsKENvZGVC
bG9jayopOwogYm9vbCBtaWdodENvbXBpbGVQcm9ncmFtKENvZGVCbG9jayopOwogYm9vbCBtaWdo
dENvbXBpbGVGdW5jdGlvbkZvckNhbGwoQ29kZUJsb2NrKik7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0RyaXZlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdEcml2ZXIuY3BwCShyZXZpc2lvbiAxNjQ2OTUpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0RyaXZlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDcgKzM0
LDYgQEAKICNpbmNsdWRlICJERkdQbGFuLmgiCiAjaW5jbHVkZSAiREZHVGh1bmtzLmgiCiAjaW5j
bHVkZSAiREZHV29ya2xpc3QuaCIKLSNpbmNsdWRlICJEZWJ1Z2dlci5oIgogI2luY2x1ZGUgIkpJ
VENvZGUuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiT3B0aW9ucy5oIgpA
QCAtNjksMTkgKzY4LDYgQEAgc3RhdGljIENvbXBpbGF0aW9uUmVzdWx0IGNvbXBpbGVJbXBsKAog
ICAgIEFTU0VSVChjb2RlQmxvY2stPmFsdGVybmF0aXZlKCktPmppdFR5cGUoKSA9PSBKSVRDb2Rl
OjpCYXNlbGluZUpJVCk7CiAgICAgQVNTRVJUKCFwcm9maWxlZERGR0NvZGVCbG9jayB8fCBwcm9m
aWxlZERGR0NvZGVCbG9jay0+aml0VHlwZSgpID09IEpJVENvZGU6OkRGR0pJVCk7CiAgICAgCi0g
ICAgaWYgKCFPcHRpb25zOjp1c2VERkdKSVQoKSB8fCAhTWFjcm9Bc3NlbWJsZXI6OnN1cHBvcnRz
RmxvYXRpbmdQb2ludCgpKQotICAgICAgICByZXR1cm4gQ29tcGlsYXRpb25GYWlsZWQ7Ci0KLSAg
ICBpZiAoIU9wdGlvbnM6OmJ5dGVjb2RlUmFuZ2VUb0RGR0NvbXBpbGUoKS5pc0luUmFuZ2UoY29k
ZUJsb2NrLT5pbnN0cnVjdGlvbkNvdW50KCkpKQotICAgICAgICByZXR1cm4gQ29tcGlsYXRpb25G
YWlsZWQ7Ci0gICAgCi0gICAgaWYgKHZtLmVuYWJsZWRQcm9maWxlcigpKQotICAgICAgICByZXR1
cm4gQ29tcGlsYXRpb25JbnZhbGlkYXRlZDsKLQotICAgIERlYnVnZ2VyKiBkZWJ1Z2dlciA9IGNv
ZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCktPmRlYnVnZ2VyKCk7Ci0gICAgaWYgKGRlYnVnZ2VyICYm
IChkZWJ1Z2dlci0+aXNTdGVwcGluZygpIHx8IGNvZGVCbG9jay0+YmFzZWxpbmVBbHRlcm5hdGl2
ZSgpLT5oYXNEZWJ1Z2dlclJlcXVlc3RzKCkpKQotICAgICAgICByZXR1cm4gQ29tcGlsYXRpb25J
bnZhbGlkYXRlZDsKLQogICAgIGlmIChsb2dDb21waWxhdGlvbkNoYW5nZXMobW9kZSkpCiAgICAg
ICAgIGRhdGFMb2coIkRGRyhEcml2ZXIpIGNvbXBpbGluZyAiLCAqY29kZUJsb2NrLCAiIHdpdGgg
IiwgbW9kZSwgIiwgbnVtYmVyIG9mIGluc3RydWN0aW9ucyA9ICIsIGNvZGVCbG9jay0+aW5zdHJ1
Y3Rpb25Db3VudCgpLCAiXG4iKTsKICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3BlcmF0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRPcGVyYXRpb25zLmNwcAkocmV2aXNpb24gMTY0Njk1KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsNiAr
MzUsNyBAQAogI2luY2x1ZGUgIkRGR09TUkVudHJ5LmgiCiAjaW5jbHVkZSAiREZHVGh1bmtzLmgi
CiAjaW5jbHVkZSAiREZHV29ya2xpc3QuaCIKKyNpbmNsdWRlICJEZWJ1Z2dlci5oIgogI2luY2x1
ZGUgIkVycm9yLmgiCiAjaW5jbHVkZSAiRXJyb3JIYW5kbGluZ1Njb3BlLmgiCiAjaW5jbHVkZSAi
R2V0dGVyU2V0dGVyLmgiCkBAIC0xMDYwLDYgKzEwNjEsMTcgQEAgU2xvd1BhdGhSZXR1cm5UeXBl
IEpJVF9PUEVSQVRJT04gb3BlcmF0aQogICAgICAgICByZXR1cm4gZW5jb2RlUmVzdWx0KDAsIDAp
OwogICAgIH0KICAgICAKKyAgICBpZiAodm0uZW5hYmxlZFByb2ZpbGVyKCkpIHsKKyAgICAgICAg
Y29kZUJsb2NrLT5vcHRpbWl6ZUFmdGVyV2FybVVwKCk7CisgICAgICAgIHJldHVybiBlbmNvZGVS
ZXN1bHQoMCwgMCk7CisgICAgfQorCisgICAgRGVidWdnZXIqIGRlYnVnZ2VyID0gY29kZUJsb2Nr
LT5nbG9iYWxPYmplY3QoKS0+ZGVidWdnZXIoKTsKKyAgICBpZiAoZGVidWdnZXIgJiYgKGRlYnVn
Z2VyLT5pc1N0ZXBwaW5nKCkgfHwgY29kZUJsb2NrLT5iYXNlbGluZUFsdGVybmF0aXZlKCktPmhh
c0RlYnVnZ2VyUmVxdWVzdHMoKSkpIHsKKyAgICAgICAgY29kZUJsb2NrLT5vcHRpbWl6ZUFmdGVy
V2FybVVwKCk7CisgICAgICAgIHJldHVybiBlbmNvZGVSZXN1bHQoMCwgMCk7CisgICAgfQorCiAg
ICAgaWYgKGNvZGVCbG9jay0+bV9zaG91bGRBbHdheXNCZUlubGluZWQpIHsKICAgICAgICAgY29k
ZUJsb2NrLT51cGRhdGVBbGxQcmVkaWN0aW9ucygpOwogICAgICAgICBjb2RlQmxvY2stPm9wdGlt
aXplQWZ0ZXJXYXJtVXAoKTsK
</data>
<flag name="review"
          id="249397"
          type_id="1"
          status="-"
          setter="fpizlo"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>225273</attachid>
            <date>2014-02-26 12:02:37 -0800</date>
            <delta_ts>2014-02-26 12:05:01 -0800</delta_ts>
            <desc>patch 3: applied more feedback.</desc>
            <filename>bug-129355.patch</filename>
            <type>text/plain</type>
            <size>8835</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTY0NzMzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQwIEBA
CisyMDE0LTAyLTI2ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBD
b21waWxhdGlvbiBwb2xpY3kgbWFuYWdlbWVudCBiZWxvbmdzIGluIG9wZXJhdGlvbk9wdGltaXpl
KCksIG5vdCB0aGUgREZHIERyaXZlci4KKyAgICAgICAgPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzEy
OTM1NT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBC
eSBjb21waWxhdGlvbiBwb2xpY3ksIEkgbWVhbiB0aGUgcnVsZXMgZm9yIGRldGVybWluaW5nIHdo
ZXRoZXIgdG8KKyAgICAgICAgY29tcGlsZSwgd2hlbiB0byBjb21waWxlLCB3aGVuIHRvIGF0dGVt
cHQgY29tcGlsYXRpb24gYWdhaW4sIGV0Yy4gIFRoZQorICAgICAgICBmZXcgb2YgdGhlc2UgcG9s
aWN5IGRlY2lzaW9ucyB0aGF0IHdlcmUgcHJldmlvdXNseSBiZWluZyBtYWRlIGluIHRoZQorICAg
ICAgICBERkcgZHJpdmVyIGFyZSBub3cgbW92ZWQgdG8gb3BlcmF0aW9uT3B0aW1pemUoKSB3aGVy
ZSB3ZSBrZWVwIHRoZSByZXN0CisgICAgICAgIG9mIHRoZSBwb2xpY3kgbG9naWMuICBEZWNpc2lv
bnMgdGhhdCBhcmUgYmFzZWQgb24gdGhlIGNhcGFiaWxpdGllcworICAgICAgICBzdXBwb3J0ZWQg
YnkgdGhlIERGRyBhcmUgbW92ZWQgdG8gREZHIGNhcGFiaWxpaXR5TGV2ZWwoKS4KKworICAgICAg
ICBJJ3ZlIHJ1biB0aGUgZm9sbG93aW5nIGJlbmNobWFya3M6CisgICAgICAgIDEuIHRoZSBjb2xs
ZWN0aW9uIG9mIGpzYyBiZW5jaG1hcmtzIG9uIHRoZSBqc2MgZXhlY3V0YWJsZSB2cy4gaXRzCisg
ICAgICAgICAgIGJhc2VsaW5lLgorICAgICAgICAyLiBPY3RhbmUgMi4wIGluIGJyb3dzZXIgd2l0
aG91dCB0aGUgV2ViSW5zcGVjdG9yLgorICAgICAgICAzLiBPY3RhbmUgMi4wIGluIGJyb3dzZXIg
d2l0aCB0aGUgV2ViSW5zcGVjdG9yIG9wZW4gYW5kIGEgYnJlYWtwb2ludAorICAgICAgICAgICBz
ZXQgc29tZXdoZXJlIHdoZXJlIGl0IHdvbid0IGJyZWFrLgorCisgICAgICAgIEluIGFsbCBvZiB0
aGVzZSwgdGhlIHJlc3VsdHMgY2FtZSBvdXQgdG8gYmUgYSB3YXNoIGFzIGV4cGVjdGVkLgorCisg
ICAgICAgICogZGZnL0RGR0NhcGFiaWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6aXNT
dXBwb3J0ZWQpOgorICAgICAgICAoSlNDOjpERkc6Om1pZ2h0Q29tcGlsZUV2YWwpOgorICAgICAg
ICAoSlNDOjpERkc6Om1pZ2h0Q29tcGlsZVByb2dyYW0pOgorICAgICAgICAoSlNDOjpERkc6Om1p
Z2h0Q29tcGlsZUZ1bmN0aW9uRm9yQ2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6bWlnaHRDb21w
aWxlRnVuY3Rpb25Gb3JDb25zdHJ1Y3QpOgorICAgICAgICAoSlNDOjpERkc6Om1pZ2h0SW5saW5l
RnVuY3Rpb25Gb3JDYWxsKToKKyAgICAgICAgKEpTQzo6REZHOjptaWdodElubGluZUZ1bmN0aW9u
Rm9yQ2xvc3VyZUNhbGwpOgorICAgICAgICAoSlNDOjpERkc6Om1pZ2h0SW5saW5lRnVuY3Rpb25G
b3JDb25zdHJ1Y3QpOgorICAgICAgICAqIGRmZy9ERkdDYXBhYmlsaXRpZXMuaDoKKyAgICAgICAg
KiBkZmcvREZHRHJpdmVyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpjb21waWxlSW1wbCk6Cisg
ICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuY3BwOgorCiAyMDE0LTAyLTI2ICBNaWNoYWVsIFNh
Ym9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgogCiAgICAgICAgIEF1dG8gZ2VuZXJhdGUgYnl0ZWNv
ZGUgaW5mb3JtYXRpb24gZm9yIGJ5dGVjb2RlIHBhcnNlciBhbmQgTExJbnQKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAJKHJldmlzaW9uIDE2
NDY5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzIsNDEgKzMyLDU2IEBACiAjaW5jbHVkZSAiREZHQ29tbW9uLmgi
CiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5j
bHVkZSAiT3B0aW9ucy5oIgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKK2Jv
b2wgaXNTdXBwb3J0ZWQoQ29kZUJsb2NrKiBjb2RlQmxvY2spCit7CisgICAgcmV0dXJuIE9wdGlv
bnM6OnVzZURGR0pJVCgpCisgICAgICAgICYmIE1hY3JvQXNzZW1ibGVyOjpzdXBwb3J0c0Zsb2F0
aW5nUG9pbnQoKQorICAgICAgICAmJiBPcHRpb25zOjpieXRlY29kZVJhbmdlVG9ERkdDb21waWxl
KCkuaXNJblJhbmdlKGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25Db3VudCgpKTsKK30KKwogYm9vbCBt
aWdodENvbXBpbGVFdmFsKENvZGVCbG9jayogY29kZUJsb2NrKQogewotICAgIHJldHVybiBjb2Rl
QmxvY2stPmluc3RydWN0aW9uQ291bnQoKSA8PSBPcHRpb25zOjptYXhpbXVtT3B0aW1pemF0aW9u
Q2FuZGlkYXRlSW5zdHJ1Y3Rpb25Db3VudCgpOworICAgIHJldHVybiBpc1N1cHBvcnRlZChjb2Rl
QmxvY2spCisgICAgICAgICYmIGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25Db3VudCgpIDw9IE9wdGlv
bnM6Om1heGltdW1PcHRpbWl6YXRpb25DYW5kaWRhdGVJbnN0cnVjdGlvbkNvdW50KCk7CiB9CiBi
b29sIG1pZ2h0Q29tcGlsZVByb2dyYW0oQ29kZUJsb2NrKiBjb2RlQmxvY2spCiB7Ci0gICAgcmV0
dXJuIGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25Db3VudCgpIDw9IE9wdGlvbnM6Om1heGltdW1PcHRp
bWl6YXRpb25DYW5kaWRhdGVJbnN0cnVjdGlvbkNvdW50KCk7CisgICAgcmV0dXJuIGlzU3VwcG9y
dGVkKGNvZGVCbG9jaykKKyAgICAgICAgJiYgY29kZUJsb2NrLT5pbnN0cnVjdGlvbkNvdW50KCkg
PD0gT3B0aW9uczo6bWF4aW11bU9wdGltaXphdGlvbkNhbmRpZGF0ZUluc3RydWN0aW9uQ291bnQo
KTsKIH0KIGJvb2wgbWlnaHRDb21waWxlRnVuY3Rpb25Gb3JDYWxsKENvZGVCbG9jayogY29kZUJs
b2NrKQogewotICAgIHJldHVybiBjb2RlQmxvY2stPmluc3RydWN0aW9uQ291bnQoKSA8PSBPcHRp
b25zOjptYXhpbXVtT3B0aW1pemF0aW9uQ2FuZGlkYXRlSW5zdHJ1Y3Rpb25Db3VudCgpOworICAg
IHJldHVybiBpc1N1cHBvcnRlZChjb2RlQmxvY2spCisgICAgICAgICYmIGNvZGVCbG9jay0+aW5z
dHJ1Y3Rpb25Db3VudCgpIDw9IE9wdGlvbnM6Om1heGltdW1PcHRpbWl6YXRpb25DYW5kaWRhdGVJ
bnN0cnVjdGlvbkNvdW50KCk7CiB9CiBib29sIG1pZ2h0Q29tcGlsZUZ1bmN0aW9uRm9yQ29uc3Ry
dWN0KENvZGVCbG9jayogY29kZUJsb2NrKQogewotICAgIHJldHVybiBjb2RlQmxvY2stPmluc3Ry
dWN0aW9uQ291bnQoKSA8PSBPcHRpb25zOjptYXhpbXVtT3B0aW1pemF0aW9uQ2FuZGlkYXRlSW5z
dHJ1Y3Rpb25Db3VudCgpOworICAgIHJldHVybiBpc1N1cHBvcnRlZChjb2RlQmxvY2spCisgICAg
ICAgICYmIGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25Db3VudCgpIDw9IE9wdGlvbnM6Om1heGltdW1P
cHRpbWl6YXRpb25DYW5kaWRhdGVJbnN0cnVjdGlvbkNvdW50KCk7CiB9CiAKIGJvb2wgbWlnaHRJ
bmxpbmVGdW5jdGlvbkZvckNhbGwoQ29kZUJsb2NrKiBjb2RlQmxvY2spCiB7Ci0gICAgcmV0dXJu
IGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25Db3VudCgpIDw9IE9wdGlvbnM6Om1heGltdW1GdW5jdGlv
bkZvckNhbGxJbmxpbmVDYW5kaWRhdGVJbnN0cnVjdGlvbkNvdW50KCkKKyAgICByZXR1cm4gaXNT
dXBwb3J0ZWQoY29kZUJsb2NrKSAKKyAgICAgICAgJiYgY29kZUJsb2NrLT5pbnN0cnVjdGlvbkNv
dW50KCkgPD0gT3B0aW9uczo6bWF4aW11bUZ1bmN0aW9uRm9yQ2FsbElubGluZUNhbmRpZGF0ZUlu
c3RydWN0aW9uQ291bnQoKQogICAgICAgICAmJiAhY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUo
KS0+bmVlZHNBY3RpdmF0aW9uKCkKICAgICAgICAgJiYgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFi
bGUoKS0+aXNJbmxpbmluZ0NhbmRpZGF0ZSgpOwogfQogYm9vbCBtaWdodElubGluZUZ1bmN0aW9u
Rm9yQ2xvc3VyZUNhbGwoQ29kZUJsb2NrKiBjb2RlQmxvY2spCiB7Ci0gICAgcmV0dXJuIGNvZGVC
bG9jay0+aW5zdHJ1Y3Rpb25Db3VudCgpIDw9IE9wdGlvbnM6Om1heGltdW1GdW5jdGlvbkZvckNs
b3N1cmVDYWxsSW5saW5lQ2FuZGlkYXRlSW5zdHJ1Y3Rpb25Db3VudCgpCisgICAgcmV0dXJuIGlz
U3VwcG9ydGVkKGNvZGVCbG9jaykgCisgICAgICAgICYmIGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25D
b3VudCgpIDw9IE9wdGlvbnM6Om1heGltdW1GdW5jdGlvbkZvckNsb3N1cmVDYWxsSW5saW5lQ2Fu
ZGlkYXRlSW5zdHJ1Y3Rpb25Db3VudCgpCiAgICAgICAgICYmICFjb2RlQmxvY2stPm93bmVyRXhl
Y3V0YWJsZSgpLT5uZWVkc0FjdGl2YXRpb24oKQogICAgICAgICAmJiBjb2RlQmxvY2stPm93bmVy
RXhlY3V0YWJsZSgpLT5pc0lubGluaW5nQ2FuZGlkYXRlKCk7CiB9CiBib29sIG1pZ2h0SW5saW5l
RnVuY3Rpb25Gb3JDb25zdHJ1Y3QoQ29kZUJsb2NrKiBjb2RlQmxvY2spCiB7Ci0gICAgcmV0dXJu
IGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25Db3VudCgpIDw9IE9wdGlvbnM6Om1heGltdW1GdW5jdGlv
bkZvckNvbnN0cnVjdElubGluZUNhbmRpZGF0ZUluc3RydWN0aW9uQ291bnQoKQorICAgIHJldHVy
biBpc1N1cHBvcnRlZChjb2RlQmxvY2spIAorICAgICAgICAmJiBjb2RlQmxvY2stPmluc3RydWN0
aW9uQ291bnQoKSA8PSBPcHRpb25zOjptYXhpbXVtRnVuY3Rpb25Gb3JDb25zdHJ1Y3RJbmxpbmVD
YW5kaWRhdGVJbnN0cnVjdGlvbkNvdW50KCkKICAgICAgICAgJiYgIWNvZGVCbG9jay0+b3duZXJF
eGVjdXRhYmxlKCktPm5lZWRzQWN0aXZhdGlvbigpCiAgICAgICAgICYmIGNvZGVCbG9jay0+b3du
ZXJFeGVjdXRhYmxlKCktPmlzSW5saW5pbmdDYW5kaWRhdGUoKTsKIH0KSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuaAkocmV2aXNpb24gMTY0Njk1KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuaAkod29ya2luZyBj
b3B5KQpAQCAtMzksNiArMzksNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAj
aWYgRU5BQkxFKERGR19KSVQpCiAvLyBGYXN0IGNoZWNrIGZ1bmN0aW9uczsgaWYgdGhleSByZXR1
cm4gdHJ1ZSBpdCBpcyBzdGlsbCBuZWNlc3NhcnkgdG8KIC8vIGNoZWNrIG9wY29kZXMuCitib29s
IGlzU3VwcG9ydGVkKENvZGVCbG9jayopOwogYm9vbCBtaWdodENvbXBpbGVFdmFsKENvZGVCbG9j
ayopOwogYm9vbCBtaWdodENvbXBpbGVQcm9ncmFtKENvZGVCbG9jayopOwogYm9vbCBtaWdodENv
bXBpbGVGdW5jdGlvbkZvckNhbGwoQ29kZUJsb2NrKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0RyaXZlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdEcml2ZXIuY3BwCShyZXZpc2lvbiAxNjQ2OTUpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0RyaXZlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDcgKzM0LDYg
QEAKICNpbmNsdWRlICJERkdQbGFuLmgiCiAjaW5jbHVkZSAiREZHVGh1bmtzLmgiCiAjaW5jbHVk
ZSAiREZHV29ya2xpc3QuaCIKLSNpbmNsdWRlICJEZWJ1Z2dlci5oIgogI2luY2x1ZGUgIkpJVENv
ZGUuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiT3B0aW9ucy5oIgpAQCAt
NjksMTkgKzY4LDYgQEAgc3RhdGljIENvbXBpbGF0aW9uUmVzdWx0IGNvbXBpbGVJbXBsKAogICAg
IEFTU0VSVChjb2RlQmxvY2stPmFsdGVybmF0aXZlKCktPmppdFR5cGUoKSA9PSBKSVRDb2RlOjpC
YXNlbGluZUpJVCk7CiAgICAgQVNTRVJUKCFwcm9maWxlZERGR0NvZGVCbG9jayB8fCBwcm9maWxl
ZERGR0NvZGVCbG9jay0+aml0VHlwZSgpID09IEpJVENvZGU6OkRGR0pJVCk7CiAgICAgCi0gICAg
aWYgKCFPcHRpb25zOjp1c2VERkdKSVQoKSB8fCAhTWFjcm9Bc3NlbWJsZXI6OnN1cHBvcnRzRmxv
YXRpbmdQb2ludCgpKQotICAgICAgICByZXR1cm4gQ29tcGlsYXRpb25GYWlsZWQ7Ci0KLSAgICBp
ZiAoIU9wdGlvbnM6OmJ5dGVjb2RlUmFuZ2VUb0RGR0NvbXBpbGUoKS5pc0luUmFuZ2UoY29kZUJs
b2NrLT5pbnN0cnVjdGlvbkNvdW50KCkpKQotICAgICAgICByZXR1cm4gQ29tcGlsYXRpb25GYWls
ZWQ7Ci0gICAgCi0gICAgaWYgKHZtLmVuYWJsZWRQcm9maWxlcigpKQotICAgICAgICByZXR1cm4g
Q29tcGlsYXRpb25JbnZhbGlkYXRlZDsKLQotICAgIERlYnVnZ2VyKiBkZWJ1Z2dlciA9IGNvZGVC
bG9jay0+Z2xvYmFsT2JqZWN0KCktPmRlYnVnZ2VyKCk7Ci0gICAgaWYgKGRlYnVnZ2VyICYmIChk
ZWJ1Z2dlci0+aXNTdGVwcGluZygpIHx8IGNvZGVCbG9jay0+YmFzZWxpbmVBbHRlcm5hdGl2ZSgp
LT5oYXNEZWJ1Z2dlclJlcXVlc3RzKCkpKQotICAgICAgICByZXR1cm4gQ29tcGlsYXRpb25JbnZh
bGlkYXRlZDsKLQogICAgIGlmIChsb2dDb21waWxhdGlvbkNoYW5nZXMobW9kZSkpCiAgICAgICAg
IGRhdGFMb2coIkRGRyhEcml2ZXIpIGNvbXBpbGluZyAiLCAqY29kZUJsb2NrLCAiIHdpdGggIiwg
bW9kZSwgIiwgbnVtYmVyIG9mIGluc3RydWN0aW9ucyA9ICIsIGNvZGVCbG9jay0+aW5zdHJ1Y3Rp
b25Db3VudCgpLCAiXG4iKTsKICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3BlcmF0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGVyYXRpb25zLmNwcAkocmV2aXNpb24gMTY0Njk1KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsNiArMzUs
NyBAQAogI2luY2x1ZGUgIkRGR09TUkVudHJ5LmgiCiAjaW5jbHVkZSAiREZHVGh1bmtzLmgiCiAj
aW5jbHVkZSAiREZHV29ya2xpc3QuaCIKKyNpbmNsdWRlICJEZWJ1Z2dlci5oIgogI2luY2x1ZGUg
IkVycm9yLmgiCiAjaW5jbHVkZSAiRXJyb3JIYW5kbGluZ1Njb3BlLmgiCiAjaW5jbHVkZSAiR2V0
dGVyU2V0dGVyLmgiCkBAIC0xMDA3LDYgKzEwMDgsMTIgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbkRlYnVnKEV4ZWNTdAogfQogCiAjaWYgRU5BQkxFKERGR19KSVQpCitzdGF0aWMgdm9p
ZCB1cGRhdGVBbGxQcmVkaWN0aW9uc0FuZE9wdGltaXplQWZ0ZXJXYXJtVXAoQ29kZUJsb2NrKiBj
b2RlQmxvY2spCit7CisgICAgY29kZUJsb2NrLT51cGRhdGVBbGxQcmVkaWN0aW9ucygpOworICAg
IGNvZGVCbG9jay0+b3B0aW1pemVBZnRlcldhcm1VcCgpOworfQorCiBTbG93UGF0aFJldHVyblR5
cGUgSklUX09QRVJBVElPTiBvcGVyYXRpb25PcHRpbWl6ZShFeGVjU3RhdGUqIGV4ZWMsIGludDMy
X3QgYnl0ZWNvZGVJbmRleCkKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwpAQCAtMTA2MCw5
ICsxMDY3LDE5IEBAIFNsb3dQYXRoUmV0dXJuVHlwZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGkKICAg
ICAgICAgcmV0dXJuIGVuY29kZVJlc3VsdCgwLCAwKTsKICAgICB9CiAgICAgCisgICAgaWYgKHZt
LmVuYWJsZWRQcm9maWxlcigpKSB7CisgICAgICAgIHVwZGF0ZUFsbFByZWRpY3Rpb25zQW5kT3B0
aW1pemVBZnRlcldhcm1VcChjb2RlQmxvY2spOworICAgICAgICByZXR1cm4gZW5jb2RlUmVzdWx0
KDAsIDApOworICAgIH0KKworICAgIERlYnVnZ2VyKiBkZWJ1Z2dlciA9IGNvZGVCbG9jay0+Z2xv
YmFsT2JqZWN0KCktPmRlYnVnZ2VyKCk7CisgICAgaWYgKGRlYnVnZ2VyICYmIChkZWJ1Z2dlci0+
aXNTdGVwcGluZygpIHx8IGNvZGVCbG9jay0+YmFzZWxpbmVBbHRlcm5hdGl2ZSgpLT5oYXNEZWJ1
Z2dlclJlcXVlc3RzKCkpKSB7CisgICAgICAgIHVwZGF0ZUFsbFByZWRpY3Rpb25zQW5kT3B0aW1p
emVBZnRlcldhcm1VcChjb2RlQmxvY2spOworICAgICAgICByZXR1cm4gZW5jb2RlUmVzdWx0KDAs
IDApOworICAgIH0KKwogICAgIGlmIChjb2RlQmxvY2stPm1fc2hvdWxkQWx3YXlzQmVJbmxpbmVk
KSB7Ci0gICAgICAgIGNvZGVCbG9jay0+dXBkYXRlQWxsUHJlZGljdGlvbnMoKTsKLSAgICAgICAg
Y29kZUJsb2NrLT5vcHRpbWl6ZUFmdGVyV2FybVVwKCk7CisgICAgICAgIHVwZGF0ZUFsbFByZWRp
Y3Rpb25zQW5kT3B0aW1pemVBZnRlcldhcm1VcChjb2RlQmxvY2spOwogICAgICAgICBpZiAoT3B0
aW9uczo6dmVyYm9zZU9TUigpKQogICAgICAgICAgICAgZGF0YUxvZygiQ2hvb3Npbmcgbm90IHRv
IG9wdGltaXplICIsICpjb2RlQmxvY2ssICIgeWV0LCBiZWNhdXNlIG1fc2hvdWxkQWx3YXlzQmVJ
bmxpbmVkID09IHRydWUuXG4iKTsKICAgICAgICAgcmV0dXJuIGVuY29kZVJlc3VsdCgwLCAwKTsK
</data>
<flag name="review"
          id="249400"
          type_id="1"
          status="+"
          setter="fpizlo"
    />
          </attachment>
      

    </bug>

</bugzilla>