<?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>71071</bug_id>
          
          <creation_ts>2011-10-27 15:49:27 -0700</creation_ts>
          <short_desc>If the bytecode generator emits code after the return in the first basic block, DFG&apos;s inliner crashes</short_desc>
          <delta_ts>2011-10-27 16:36:40 -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>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></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="Nobody">webkit-unassigned</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>492041</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-10-27 15:49:27 -0700</bug_when>
    <thetext>The bytecode generator will emit some code after a return in the first basic block in some cases.  One silly case is:

function foo(a) {
    {
        return a;
    }
}

The bytecode will be something like:

op_enter
op_ret arg1
op_ret undefined

The DFG bytecode parser will then crash when inlining this function because it thinks that an early return (i.e. a return prior to the end position in the bytecode stream) implies that multiple basic blocks have been created prior to reaching that return.  This is clearly not the case here.  The DFG bytecode parser should be smart enough to realize that an early return in the first basic block means that subsequent basic blocks are dead and should not be parsed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>492074</commentid>
    <comment_count>1</comment_count>
      <attachid>112777</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-10-27 16:24:08 -0700</bug_when>
    <thetext>Created attachment 112777
the patch

Looks like it&apos;s neutral, as it should be, since it just fixes a bug and doesn&apos;t change functionality.  SunSpider seems to be minutely slower (which is likely a fluke) and V8 seems to be minutely faster (which is also likely a fluke).



Benchmark report for SunSpider, V8, and Kraken.

VMs tested:
&quot;TipOfTree&quot; at /Volumes/Data/pizlo/tertiary/OpenSource/WebKitBuild/Release/jsc
&quot;FixInline&quot; at /Volumes/Data/pizlo/secondary/OpenSource/WebKitBuild/Release/jsc

Collected 30 samples per benchmark/VM, with 10 VM invocations per benchmark. Used 1 benchmark iteration per VM
invocation for warm-up. Used the jsc-specific preciseTime() function to get microsecond-level timing. Reporting
benchmark execution times with 95% confidence intervals in milliseconds.

                                            TipOfTree               FixInline                                    
SunSpider:
   3d-cube                                7.9344+-0.0320          7.8820+-0.0225       
   3d-morph                               8.5841+-0.0860          8.4711+-0.0500         might be 1.0133x faster
   3d-raytrace                            8.2999+-0.0640          8.2174+-0.0586         might be 1.0100x faster
   access-binary-trees                    1.6960+-0.0093          1.6945+-0.0072       
   access-fannkuch                        7.7455+-0.0103    ?     7.7500+-0.0076       ?
   access-nbody                           4.5338+-0.0142          4.5296+-0.0044       
   access-nsieve                          3.1827+-0.0098    ?     3.1951+-0.0147       ?
   bitops-3bit-bits-in-byte               1.3242+-0.0113          1.3106+-0.0043         might be 1.0104x faster
   bitops-bits-in-byte                    5.2605+-0.0161    ?     5.2806+-0.0234       ?
   bitops-bitwise-and                     3.4436+-0.0341    ?     3.4595+-0.0364       ?
   bitops-nsieve-bits                     5.6491+-0.0274    ?     5.6611+-0.0202       ?
   controlflow-recursive                  2.3468+-0.0148          2.3281+-0.0039       
   crypto-aes                             7.6320+-0.0476          7.6013+-0.0347       
   crypto-md5                             2.8600+-0.0106          2.8524+-0.0106       
   crypto-sha1                            2.6321+-0.0060          2.6287+-0.0093       
   date-format-tofte                     10.7093+-0.1242    ?    10.7880+-0.0720       ?
   date-format-xparb                     10.0605+-0.0794    ?    10.1817+-0.0950       ? might be 1.0120x slower
   math-cordic                            7.6231+-0.1588    ?     7.8671+-0.1592       ? might be 1.0320x slower
   math-partial-sums                     10.5893+-0.0261    ?    10.5935+-0.0235       ?
   math-spectral-norm                     2.8851+-0.0047          2.8787+-0.0037       
   regexp-dna                            13.3672+-0.0932    ?    13.3794+-0.1069       ?
   string-base64                          4.4312+-0.0183    ?     4.4355+-0.0156       ?
   string-fasta                           7.1090+-0.0185    ?     7.1505+-0.0273       ?
   string-tagcloud                       13.3075+-0.0916         13.2323+-0.0913       
   string-unpack-code                    22.8460+-0.1244    !    23.5282+-0.1190       ! definitely 1.0299x slower
   string-validate-input                  5.5839+-0.0196    !     5.6866+-0.0335       ! definitely 1.0184x slower

   &lt;arithmetic&gt; *                         6.9860+-0.0156    !     7.0224+-0.0147       ! definitely 1.0052x slower
   &lt;geometric&gt;                            5.6452+-0.0098    ?     5.6575+-0.0094       ?
   &lt;harmonic&gt;                             4.4661+-0.0088          4.4638+-0.0071       

                                            TipOfTree               FixInline                                    
V8:
   crypto                                81.2127+-0.1841    ?    81.2527+-0.1860       ?
   deltablue                            199.1947+-0.6705    ^   196.8202+-0.4793       ^ definitely 1.0121x faster
   earley-boyer                         112.0324+-0.4968    ?   112.5080+-0.4266       ?
   raytrace                              69.9737+-0.3062         69.9153+-0.3008       
   regexp                               123.7585+-0.3561    ?   124.3841+-0.3320       ?
   richards                             145.9443+-0.5814    ?   147.5387+-1.0848       ? might be 1.0109x slower
   splay                                125.0304+-0.3685    ^   120.4484+-0.3863       ^ definitely 1.0380x faster

   &lt;arithmetic&gt;                         122.4495+-0.1382    ^   121.8382+-0.2280       ^ definitely 1.0050x faster
   &lt;geometric&gt; *                        116.2151+-0.1299    ^   115.7251+-0.1967       ^ definitely 1.0042x faster
   &lt;harmonic&gt;                           110.2609+-0.1421    ^   109.8818+-0.1792       ^ definitely 1.0035x faster

                                            TipOfTree               FixInline                                    
Kraken:
   ai-astar                             819.5233+-7.1237    ?   827.2304+-5.6091       ?
   audio-beat-detection                 212.2996+-0.5437    ?   213.4709+-1.0935       ?
   audio-dft                            262.5330+-1.3032        260.5046+-2.6966       
   audio-fft                            133.2512+-0.4026    ?   133.2666+-0.5060       ?
   audio-oscillator                     291.3085+-0.6306        291.2467+-0.6328       
   imaging-darkroom                     459.5202+-10.8254       450.0512+-1.7868         might be 1.0210x faster
   imaging-desaturate                   245.4631+-0.2857        245.2796+-0.0991       
   imaging-gaussian-blur                621.0583+-0.2760    ?   621.1637+-0.2007       ?
   json-parse-financial                  69.8446+-0.1768    !    72.5795+-0.0612       ! definitely 1.0392x slower
   json-stringify-tinderbox              80.0725+-0.2529    ^    79.4883+-0.2136       ^ definitely 1.0074x faster
   stanford-crypto-aes                  153.4442+-1.0282        151.6245+-0.9526         might be 1.0120x faster
   stanford-crypto-ccm                  116.9021+-1.1085        115.6602+-0.6819         might be 1.0107x faster
   stanford-crypto-pbkdf2               237.2313+-1.4347        235.1331+-0.8966       
   stanford-crypto-sha256-iterative      85.2637+-0.1620    ^    84.8783+-0.1208       ^ definitely 1.0045x faster

   &lt;arithmetic&gt; *                       270.5511+-0.7269        270.1127+-0.5107       
   &lt;geometric&gt;                          206.2089+-0.3840        205.9494+-0.2818       
   &lt;harmonic&gt;                           162.0812+-0.2498    ?   162.3720+-0.1838       ?

                                            TipOfTree               FixInline                                    
All benchmarks:
   &lt;arithmetic&gt;                         102.6915+-0.2210        102.4900+-0.1484       
   &lt;geometric&gt;                           25.8690+-0.0327    ?    25.8742+-0.0310       ?
   &lt;harmonic&gt;                             7.8707+-0.0152          7.8667+-0.0122       

                                            TipOfTree               FixInline                                    
Geomean of preferred means:
   &lt;scaled-result&gt;                       60.3360+-0.0807         60.3230+-0.0684</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>492089</commentid>
    <comment_count>2</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-10-27 16:36:40 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/98658.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>112777</attachid>
            <date>2011-10-27 16:24:08 -0700</date>
            <delta_ts>2011-10-27 16:31:42 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>earlyreturn_patch_1.diff</filename>
            <type>text/plain</type>
            <size>8953</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTg2NTEpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjEgQEAK
KzIwMTEtMTAtMjcgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAgICBJ
ZiB0aGUgYnl0ZWNvZGUgZ2VuZXJhdG9yIGVtaXRzIGNvZGUgYWZ0ZXIgdGhlIHJldHVybiBpbiB0
aGUgZmlyc3QgYmFzaWMgYmxvY2ssCisgICAgICAgIERGRydzIGlubGluZXIgY3Jhc2hlcworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzEwNzEKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIFJlbW92
ZWQgc29tZSBjcnVmdCBkZWFsaW5nIHdpdGggcGFyc2luZyBmYWlsdXJlcyBkdWUgdG8gdW5zdXBw
b3J0ZWQgZnVuY3Rpb25hbGl0eQorICAgICAgICAodGhhdCdzIG5ldmVyIHJlYWNoZWQgYW55bW9y
ZSBkdWUgdG8gaXQgYmVpbmcgY2F1Z2h0IGluIERGR0NhcGFiaWxpdGllcykuIFRoaXMKKyAgICAg
ICAgYWxsb3dlZCBtZSB0byByZXB1cnBvc2UgdGhlIGJvb2wgcmV0dXJuIGZyb20gcGFyc2VCbG9j
aygpIHRvIG1lYW46IHRydWUgaWYgd2UKKyAgICAgICAgc2hvdWxkIGNvbnRpbnVlIHRvIHBhcnNl
LCBvciBmYWxzZSBpZiB3ZSd2ZSBhbHJlYWR5IHBhcnNlZCBhbGwgbGl2ZSBjb2RlLgorCisgICAg
ICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRl
Q29kZVBhcnNlcjo6Qnl0ZUNvZGVQYXJzZXIpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2Rl
UGFyc2VyOjpwYXJzZUJsb2NrKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6
cGFyc2VDb2RlQmxvY2spOgorCiAyMDExLTEwLTI3ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBs
ZS5jb20+CiAKICAgICAgICAgQ3Jhc2ggaW4gSlNDOjpTdHJ1Y3R1cmU6Om1hdGVyaWFsaXplUHJv
cGVydHlNYXAgd2hlbiB2aWV3aW5nIEdhcmRlbi1PLU1hdGljCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkocmV2aXNpb24gOTg2NDcp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNDcsNyArNDcsNiBAQCBwdWJsaWM6CiAgICAgICAgICwgbV9ncmFwaChn
cmFwaCkKICAgICAgICAgLCBtX2N1cnJlbnRCbG9jaygwKQogICAgICAgICAsIG1fY3VycmVudElu
ZGV4KDApCi0gICAgICAgICwgbV9wYXJzZUZhaWxlZChmYWxzZSkKICAgICAgICAgLCBtX2NvbnN0
YW50VW5kZWZpbmVkKFVJTlRfTUFYKQogICAgICAgICAsIG1fY29uc3RhbnROdWxsKFVJTlRfTUFY
KQogICAgICAgICAsIG1fY29uc3RhbnROYU4oVUlOVF9NQVgpCkBAIC03Myw3ICs3Miw3IEBAIHB1
YmxpYzoKICAgICAKIHByaXZhdGU6CiAgICAgLy8gSnVzdCBwYXJzZSBmcm9tIG1fY3VycmVudElu
ZGV4IHRvIHRoZSBlbmQgb2YgdGhlIGN1cnJlbnQgQ29kZUJsb2NrLgotICAgIGJvb2wgcGFyc2VD
b2RlQmxvY2soKTsKKyAgICB2b2lkIHBhcnNlQ29kZUJsb2NrKCk7CiAKICAgICAvLyBIZWxwZXIg
Zm9yIG1pbiBhbmQgbWF4LgogICAgIGJvb2wgaGFuZGxlTWluTWF4KGJvb2wgdXNlc1Jlc3VsdCwg
aW50IHJlc3VsdE9wZXJhbmQsIE5vZGVUeXBlIG9wLCBpbnQgZmlyc3RBcmcsIGludCBsYXN0QXJn
KTsKQEAgLTY4MSw5ICs2ODAsNiBAQCBwcml2YXRlOgogICAgIC8vIFRoZSBieXRlY29kZSBpbmRl
eCBvZiB0aGUgY3VycmVudCBpbnN0cnVjdGlvbiBiZWluZyBnZW5lcmF0ZWQuCiAgICAgdW5zaWdu
ZWQgbV9jdXJyZW50SW5kZXg7CiAKLSAgICAvLyBSZWNvcmQgZmFpbHVyZXMgZHVlIHRvIHVuaW1w
bGVtZW50ZWQgZnVuY3Rpb25hbGl0eSBvciByZWdyZXNzaW9ucy4KLSAgICBib29sIG1fcGFyc2VG
YWlsZWQ7Ci0KICAgICAvLyBXZSB1c2UgdGhlc2UgdmFsdWVzIGR1cmluZyBjb2RlIGdlbmVyYXRp
b24sIGFuZCB0byBhdm9pZCB0aGUgbmVlZCBmb3IKICAgICAvLyBzcGVjaWFsIGhhbmRsaW5nIHdl
IG1ha2Ugc3VyZSB0aGV5IGFyZSBhdmFpbGFibGUgYXMgY29uc3RhbnRzIGluIHRoZQogICAgIC8v
IENvZGVCbG9jaydzIGNvbnN0YW50IHBvb2wuIFRoZXNlIHZhcmlhYmxlcyBhcmUgaW5pdGlhbGl6
ZWQgdG8KQEAgLTgzNyw3ICs4MzMsNyBAQCBwcml2YXRlOgogCiAjZGVmaW5lIExBU1RfT1BDT0RF
KG5hbWUpIFwKICAgICBtX2N1cnJlbnRJbmRleCArPSBPUENPREVfTEVOR1RIKG5hbWUpOyBcCi0g
ICAgcmV0dXJuICFtX3BhcnNlRmFpbGVkCisgICAgcmV0dXJuIHNob3VsZENvbnRpbnVlUGFyc2lu
ZwogCiB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVDYWxsKEludGVycHJldGVyKiBpbnRlcnBy
ZXRlciwgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgTm9kZVR5cGUgb3AsIENvZGVT
cGVjaWFsaXphdGlvbktpbmQga2luZCkKIHsKQEAgLTEyMDcsNiArMTIwMyw4IEBAIHZvaWQgQnl0
ZUNvZGVQYXJzZXI6OnByZXBhcmVUb1BhcnNlQmxvY2sKIAogYm9vbCBCeXRlQ29kZVBhcnNlcjo6
cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKIHsKKyAgICBib29sIHNob3VsZENvbnRpbnVlUGFy
c2luZyA9IHRydWU7CisgICAgCiAgICAgLy8gSWYgd2UgYXJlIHRoZSBmaXJzdCBiYXNpYyBibG9j
aywgaW50cm9kdWNlIG1hcmtlcnMgZm9yIGFyZ3VtZW50cy4gVGhpcyBhbGxvd3MKICAgICAvLyB1
cyB0byB0cmFjayBpZiBhIHVzZSBvZiBhbiBhcmd1bWVudCBtYXkgdXNlIHRoZSBhY3R1YWwgYXJn
dW1lbnQgcGFzc2VkLCBhcwogICAgIC8vIG9wcG9zZWQgdG8gdXNpbmcgYSB2YWx1ZSB3ZSBzZXQg
ZXhwbGljaXRseS4KQEAgLTEyNDAsNyArMTIzOCw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBh
cnNlQmxvY2sodW5zaWduZWQKICAgICAgICAgICAgICAgICBwcmludGYoIlJlZnVzaW5nIHRvIHBs
YW50IGp1bXAgYXQgbGltaXQgJXUgYmVjYXVzZSBibG9jayAlcCBpcyBlbXB0eS5cbiIsIGxpbWl0
LCBtX2N1cnJlbnRCbG9jayk7CiAjZW5kaWYKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJl
dHVybiAhbV9wYXJzZUZhaWxlZDsKKyAgICAgICAgICAgIHJldHVybiBzaG91bGRDb250aW51ZVBh
cnNpbmc7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIC8vIFN3aXRjaCBvbiB0aGUgY3Vy
cmVudCBieXRlY29kZSBvcGNvZGUuCkBAIC0yMDAxLDcgKzE5OTksMTIgQEAgYm9vbCBCeXRlQ29k
ZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICAgICAgICAgIGlmIChtX2lubGlu
ZVN0YWNrVG9wLT5tX3JldHVyblZhbHVlICE9IEludmFsaWRWaXJ0dWFsUmVnaXN0ZXIpCiAgICAg
ICAgICAgICAgICAgICAgIHNldERpcmVjdChtX2lubGluZVN0YWNrVG9wLT5tX3JldHVyblZhbHVl
LCBnZXQoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCkpOwogICAgICAgICAgICAgICAg
IG1faW5saW5lU3RhY2tUb3AtPm1fZGlkUmV0dXJuID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICBp
ZiAoIW1faW5saW5lU3RhY2tUb3AtPm1fdW5saW5rZWRCbG9ja3MuaXNFbXB0eSgpKSB7CisgICAg
ICAgICAgICAgICAgaWYgKG1faW5saW5lU3RhY2tUb3AtPm1fdW5saW5rZWRCbG9ja3MuaXNFbXB0
eSgpKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIElmIHdlJ3JlIHJldHVybmluZyBmcm9tIHRo
ZSBmaXJzdCBibG9jaywgdGhlbiB3ZSdyZSBkb25lIHBhcnNpbmcuCisgICAgICAgICAgICAgICAg
ICAgIEFTU0VSVChtX2lubGluZVN0YWNrVG9wLT5tX2NhbGxzaXRlQmxvY2tIZWFkID09IG1fZ3Jh
cGgubV9ibG9ja3Muc2l6ZSgpIC0gMSk7CisgICAgICAgICAgICAgICAgICAgIHNob3VsZENvbnRp
bnVlUGFyc2luZyA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICBMQVNUX09QQ09ERShvcF9y
ZXQpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgIC8vIElm
IGlubGluaW5nIGNyZWF0ZWQgYmxvY2tzLCBhbmQgd2UncmUgZG9pbmcgYSByZXR1cm4sIHRoZW4g
d2UgbmVlZCBzb21lCiAgICAgICAgICAgICAgICAgICAgIC8vIHNwZWNpYWwgbGlua2luZy4KICAg
ICAgICAgICAgICAgICAgICAgQVNTRVJUKG1faW5saW5lU3RhY2tUb3AtPm1fdW5saW5rZWRCbG9j
a3MubGFzdCgpLm1fYmxvY2tJbmRleCA9PSBtX2dyYXBoLm1fYmxvY2tzLnNpemUoKSAtIDEpOwpA
QCAtMjM1NSw3ICsyMzU4LDcgQEAgQnl0ZUNvZGVQYXJzZXI6OklubGluZVN0YWNrRW50cnk6Oklu
bGluZQogICAgIGJ5dGVDb2RlUGFyc2VyLT5tX2lubGluZVN0YWNrVG9wID0gdGhpczsKIH0KIAot
Ym9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VDb2RlQmxvY2soKQordm9pZCBCeXRlQ29kZVBhcnNl
cjo6cGFyc2VDb2RlQmxvY2soKQogewogICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gbV9pbmxp
bmVTdGFja1RvcC0+bV9jb2RlQmxvY2s7CiAgICAgCkBAIC0yNDAyLDI1ICsyNDA1LDI5IEBAIGJv
b2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQ29kZUJsb2NrKCkKICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGlmICghcGFyc2VCbG9jayhsaW1pdCkpCi0gICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgYm9vbCBzaG91bGRDb250aW51
ZVBhcnNpbmcgPSBwYXJzZUJsb2NrKGxpbWl0KTsKKwogICAgICAgICAgICAgLy8gV2Ugc2hvdWxk
IG5vdCBoYXZlIGdvbmUgYmV5b25kIHRoZSBsaW1pdC4KICAgICAgICAgICAgIEFTU0VSVChtX2N1
cnJlbnRJbmRleCA8PSBsaW1pdCk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIC8vIFdlIHNo
b3VsZCBoYXZlIHBsYW50ZWQgYSB0ZXJtaW5hbCwgb3Igd2UganVzdCBnYXZlIHVwIGJlY2F1c2UK
ICAgICAgICAgICAgIC8vIHdlIHJlYWxpemVkIHRoYXQgdGhlIGp1bXAgdGFyZ2V0IGluZm9ybWF0
aW9uIGlzIGltcHJlY2lzZSwgb3Igd2UKLSAgICAgICAgICAgIC8vIGFyZSBhdCB0aGUgZW5kIG9m
IGFuIGlubGluZSBmdW5jdGlvbi4KLSAgICAgICAgICAgIEFTU0VSVChtX2N1cnJlbnRCbG9jay0+
YmVnaW4gPT0gbV9ncmFwaC5zaXplKCkgfHwgbV9ncmFwaC5sYXN0KCkuaXNUZXJtaW5hbCgpIHx8
IChtX2N1cnJlbnRJbmRleCA9PSBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLnNpemUoKSAmJiBt
X2lubGluZVN0YWNrVG9wLT5tX2lubGluZUNhbGxGcmFtZSkpOworICAgICAgICAgICAgLy8gYXJl
IGF0IHRoZSBlbmQgb2YgYW4gaW5saW5lIGZ1bmN0aW9uLCBvciB3ZSByZWFsaXplZCB0aGF0IHdl
CisgICAgICAgICAgICAvLyBzaG91bGQgc3RvcCBwYXJzaW5nIGJlY2F1c2UgdGhlcmUgd2FzIGEg
cmV0dXJuIGluIHRoZSBmaXJzdAorICAgICAgICAgICAgLy8gYmFzaWMgYmxvY2suCisgICAgICAg
ICAgICBBU1NFUlQobV9jdXJyZW50QmxvY2stPmJlZ2luID09IG1fZ3JhcGguc2l6ZSgpIHx8IG1f
Z3JhcGgubGFzdCgpLmlzVGVybWluYWwoKSB8fCAobV9jdXJyZW50SW5kZXggPT0gY29kZUJsb2Nr
LT5pbnN0cnVjdGlvbnMoKS5zaXplKCkgJiYgbV9pbmxpbmVTdGFja1RvcC0+bV9pbmxpbmVDYWxs
RnJhbWUpIHx8ICFzaG91bGRDb250aW51ZVBhcnNpbmcpOwogCiAgICAgICAgICAgICBtX2N1cnJl
bnRCbG9jay0+ZW5kID0gbV9ncmFwaC5zaXplKCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAg
IGlmICghc2hvdWxkQ29udGludWVQYXJzaW5nKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgICAgIAogICAgICAgICAgICAgbV9jdXJyZW50QmxvY2sgPSAwOwogICAgICAgICB9IHdo
aWxlIChtX2N1cnJlbnRJbmRleCA8IGxpbWl0KTsKICAgICB9CiAKICAgICAvLyBTaG91bGQgaGF2
ZSByZWFjaGVkIHRoZSBlbmQgb2YgdGhlIGluc3RydWN0aW9ucy4KICAgICBBU1NFUlQobV9jdXJy
ZW50SW5kZXggPT0gY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5zaXplKCkpOwotICAgIAotICAg
IHJldHVybiB0cnVlOwogfQogCiBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZSgpCkluZGV4OiBM
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiA5ODY1MikKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDE3IEBACisyMDExLTEwLTI3ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBs
ZS5jb20+CisKKyAgICAgICAgSWYgdGhlIGJ5dGVjb2RlIGdlbmVyYXRvciBlbWl0cyBjb2RlIGFm
dGVyIHRoZSByZXR1cm4gaW4gdGhlIGZpcnN0IGJhc2ljIGJsb2NrLAorICAgICAgICBERkcncyBp
bmxpbmVyIGNyYXNoZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTcxMDcxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBmYXN0L2pzL2RmZy1pbmxpbmUtZWFybHktcmV0dXJuLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogZmFzdC9qcy9kZmctaW5saW5lLWVhcmx5LXJldHVybi5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L2pzL3NjcmlwdC10ZXN0cy9kZmctaW5saW5lLWVhcmx5LXJldHVy
bi5qczogQWRkZWQuCisgICAgICAgIChmb28pOgorICAgICAgICAoYmFyKToKKwogMjAxMS0xMC0y
NyAgQW5uYSBDYXZlbmRlciAgPGFubmFjY0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgSW5kaXZp
ZHVhbGx5IFNraXAgdHJhY2stcmVsYXRlZCBMYXlvdXRUZXN0cyByYXRoZXIgdGhhbiBibG9jay1T
a2lwcGluZyB0aGVtLgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9kZmctaW5saW5lLWVhcmx5
LXJldHVybi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9k
ZmctaW5saW5lLWVhcmx5LXJldHVybi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2pzL2RmZy1pbmxpbmUtZWFybHktcmV0dXJuLWV4cGVjdGVkLnR4dAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSwxMSBAQAorVGhpcyB0ZXN0cyB0aGF0IGFuIGVhcmx5IHJldHVy
biBpbiB0aGUgZmlyc3QgYmFzaWMgYmxvY2sgZG9lcyBub3QgY3Jhc2ggdGhlIERGRydzIGJ5dGVj
b2RlIHBhcnNlciB3aGlsc3QgaW5saW5pbmcuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBh
IHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4K
KworCitQQVNTIGZvbyg0MikgaXMgNDIKK1BBU1MgYmFyKDQyKSBpcyA0MgorUEFTUyBzdWNjZXNz
ZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvanMvZGZnLWlubGluZS1lYXJseS1yZXR1cm4uaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2pzL2RmZy1pbmxpbmUtZWFybHktcmV0dXJuLmh0bWwJKHJldmlzaW9uIDAp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL2RmZy1pbmxpbmUtZWFybHktcmV0dXJuLmh0bWwJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsMTAgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVU
Ri8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2Vz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9
InNjcmlwdC10ZXN0cy9kZmctaW5saW5lLWVhcmx5LXJldHVybi5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0icmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8
L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL3NjcmlwdC10ZXN0cy9kZmctaW5saW5l
LWVhcmx5LXJldHVybi5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL3Njcmlw
dC10ZXN0cy9kZmctaW5saW5lLWVhcmx5LXJldHVybi5qcwkocmV2aXNpb24gMCkKKysrIExheW91
dFRlc3RzL2Zhc3QvanMvc2NyaXB0LXRlc3RzL2RmZy1pbmxpbmUtZWFybHktcmV0dXJuLmpzCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIxIEBACitkZXNjcmlwdGlvbigKKyJUaGlzIHRlc3RzIHRo
YXQgYW4gZWFybHkgcmV0dXJuIGluIHRoZSBmaXJzdCBiYXNpYyBibG9jayBkb2VzIG5vdCBjcmFz
aCB0aGUgREZHJ3MgYnl0ZWNvZGUgcGFyc2VyIHdoaWxzdCBpbmxpbmluZy4iCispOworCitmdW5j
dGlvbiBmb28oYSkgeworICAgIHsKKyAgICAgICAgcmV0dXJuIGE7CisgICAgfQorfQorCitmdW5j
dGlvbiBiYXIoYSkgeworICAgIHJldHVybiBmb28oYSk7Cit9CisKK2ZvciAodmFyIGkgPSAwOyBp
IDwgMTAwOyArK2kpCisgICAgYmFyKGkpOworCitzaG91bGRCZSgiZm9vKDQyKSIsICI0MiIpOwor
c2hvdWxkQmUoImJhcig0MikiLCAiNDIiKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRy
dWU7Cg==
</data>
<flag name="review"
          id="110932"
          type_id="1"
          status="+"
          setter="barraclough"
    />
          </attachment>
      

    </bug>

</bugzilla>