<?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>19844</bug_id>
          
          <creation_ts>2008-07-01 07:23:29 -0700</creation_ts>
          <short_desc>JavaScript Switch statement modifies &quot;this&quot;</short_desc>
          <delta_ts>2008-07-02 01:19:50 -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>Mac</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar, Regression</keywords>
          <priority>P2</priority>
          <bug_severity>Critical</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Fabian Jakobs">fabian.jakobs</reporter>
          <assigned_to name="Cameron Zwarich (cpst)">zwarich</assigned_to>
          <cc>zwarich</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>84869</commentid>
    <comment_count>0</comment_count>
    <who name="Fabian Jakobs">fabian.jakobs</who>
    <bug_when>2008-07-01 07:23:29 -0700</bug_when>
    <thetext>I have encountered a strange error with the latest nightlys (rev. 34824).

Special switch statements seem to modifiy the function context (aka this) and set if to the value &quot;false&quot;. This can be observed in this simple example.


&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD HTML 4.01//EN&quot;
   &quot;http://www.w3.org/TR/html4/strict.dtd&quot;&gt;

&lt;html lang=&quot;en&quot;&gt;
&lt;body&gt;
&lt;script type=&quot;text/javascript&quot; charset=&quot;utf-8&quot;&gt;
    
function test() {
    alert(this == switchFunction.call(this, 12));
}

function switchFunction(val)
{
  switch (val)
  {
    case this:
      break;

    default:
      break;
  }
  return this;
}
test();

&lt;/script&gt;

&lt;/body&gt;
&lt;/html&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>84870</commentid>
    <comment_count>1</comment_count>
      <attachid>22028</attachid>
    <who name="Fabian Jakobs">fabian.jakobs</who>
    <bug_when>2008-07-01 07:25:14 -0700</bug_when>
    <thetext>Created attachment 22028
Test case for this bug

Example which shows this problem. Other browser including Safari 3.1.1 return &quot;true&quot; while the current nightly returns &quot;false&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>84914</commentid>
    <comment_count>2</comment_count>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2008-07-01 15:44:51 -0700</bug_when>
    <thetext>&lt;rdar://problem/6048093&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>84920</commentid>
    <comment_count>3</comment_count>
      <attachid>22033</attachid>
    <who name="Cameron Zwarich (cpst)">zwarich</who>
    <bug_when>2008-07-01 16:19:32 -0700</bug_when>
    <thetext>Created attachment 22033
Codegen dump

The problem is that it is writing the result of stricteq to lr2, which is &apos;this&apos;. I will fix this after dinner.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>84921</commentid>
    <comment_count>4</comment_count>
      <attachid>22034</attachid>
    <who name="Cameron Zwarich (cpst)">zwarich</who>
    <bug_when>2008-07-01 16:28:48 -0700</bug_when>
    <thetext>Created attachment 22034
Proposed patch (without tests)

Here&apos;s a patch. I will add tests to fast/js/codegen-temporaries for both the &apos;this&apos; and local variable cases.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>84923</commentid>
    <comment_count>5</comment_count>
      <attachid>22034</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-07-01 16:32:15 -0700</bug_when>
    <thetext>Comment on attachment 22034
Proposed patch (without tests)

Patch looks good. r=me

But why not include the tests with the patch next time?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>84924</commentid>
    <comment_count>6</comment_count>
    <who name="Cameron Zwarich (cpst)">zwarich</who>
    <bug_when>2008-07-01 16:32:46 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 22034 [edit])
&gt; Patch looks good. r=me
&gt; 
&gt; But why not include the tests with the patch next time?

Going out for a Canada Day dinner and didn&apos;t have the time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>84929</commentid>
    <comment_count>7</comment_count>
    <who name="Cameron Zwarich (cpst)">zwarich</who>
    <bug_when>2008-07-01 18:09:11 -0700</bug_when>
    <thetext>Landed in r34940.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>84954</commentid>
    <comment_count>8</comment_count>
    <who name="Fabian Jakobs">fabian.jakobs</who>
    <bug_when>2008-07-02 01:19:50 -0700</bug_when>
    <thetext>Awesome. This was really quick!

Works for me.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>22028</attachid>
            <date>2008-07-01 07:25:14 -0700</date>
            <delta_ts>2008-07-01 07:25:14 -0700</delta_ts>
            <desc>Test case for this bug</desc>
            <filename>webkit-switch.html</filename>
            <type>text/html</type>
            <size>405</size>
            <attacher name="Fabian Jakobs">fabian.jakobs</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEvL0VOIgogICAiaHR0
cDovL3d3dy53My5vcmcvVFIvaHRtbDQvc3RyaWN0LmR0ZCI+Cgo8aHRtbCBsYW5nPSJlbiI+Cjxi
b2R5Pgo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgY2hhcnNldD0idXRmLTgiPgogICAg
CmZ1bmN0aW9uIHRlc3QoKSB7CiAgICBhbGVydCh0aGlzID09IHN3aXRjaEZ1bmN0aW9uLmNhbGwo
dGhpcywgMTIpKTsKfQoKZnVuY3Rpb24gc3dpdGNoRnVuY3Rpb24odmFsKQp7CiAgc3dpdGNoICh2
YWwpCiAgewogICAgY2FzZSB0aGlzOgogICAgICBicmVhazsKCiAgICBkZWZhdWx0OgogICAgICBi
cmVhazsKICB9CiAgcmV0dXJuIHRoaXM7Cn0KdGVzdCgpOwoKPC9zY3JpcHQ+Cgo8L2JvZHk+Cjwv
aHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>22033</attachid>
            <date>2008-07-01 16:19:32 -0700</date>
            <delta_ts>2008-07-01 16:19:32 -0700</delta_ts>
            <desc>Codegen dump</desc>
            <filename>codegen.txt</filename>
            <type>text/plain</type>
            <size>1208</size>
            <attacher name="Cameron Zwarich (cpst)">zwarich</attacher>
            
              <data encoding="base64">ZnVuY3Rpb24gdGVzdCgpCnsKICAgIHByaW50KHRoaXMgPT0gc3dpdGNoRnVuY3Rpb24uY2FsbCh0
aGlzLCAxMikpOwp9CgpmdW5jdGlvbiBzd2l0Y2hGdW5jdGlvbih2YWwpCnsKICAgIHN3aXRjaCAo
dmFsKSB7CiAgICBjYXNlIHRoaXM6CiAgICAgICAgYnJlYWs7CiAgICBkZWZhdWx0OgogICAgICAg
IGJyZWFrOwogICAgfQogICAgCiAgICByZXR1cm4gdGhpczsKfQoKdGVzdCgpOwoKNSBpbnN0cnVj
dGlvbnM7IDY4IGJ5dGVzIGF0IDB4NjBhMjUwOyAxIGxvY2FscyAoMCBwYXJhbWV0ZXJzKTsgMTIg
dGVtcG9yYXJpZXMKClsgICAwXSBuZXdfZnVuYwkJIGxyMTYsIGYwClsgICAzXSBuZXdfZnVuYwkJ
IGxyMTcsIGYxClsgICA2XSBsb2FkCQkgdHIwLCB1bmRlZmluZWQoQGswKQkJClsgICA5XSBjYWxs
CQkgdHIwLCBscjE2LCB0cjIxNDc0ODM2NDcsIDExLCAxClsgIDE1XSBlbmQJCSB0cjAKCkNvbnN0
YW50czoKICBrMCA9IHVuZGVmaW5lZAoKMTAgaW5zdHJ1Y3Rpb25zOyAxNTYgYnl0ZXMgYXQgMHg2
MGExZDA7IDEgbG9jYWxzICgxIHBhcmFtZXRlcnMpOyAyOSB0ZW1wb3JhcmllcwoKWyAgIDBdIHJl
c29sdmVfZnVuYwkgdHIwLCB0cjEsIHByaW50KEBpZDApClsgICA0XSBnZXRfc2NvcGVkX3ZhcgkJ
IHRyMTQsIC02LCAwClsgICA4XSBnZXRfYnlfaWQJIHRyMTUsIHRyMTQsIGNhbGwoQGlkMSkKWyAg
MTJdIG1vdgkJIHRyMjcsIGxyMQpbICAxNV0gbG9hZAkJIHRyMjgsIDEyKEBrMCkJCQpbICAxOF0g
Y2FsbAkJIHRyMTQsIHRyMTUsIHRyMTQsIDI2LCAzClsgIDI0XSBlcQkJIHRyMTMsIGxyMSwgdHIx
NApbICAyOF0gY2FsbAkJIHRyMCwgdHIxLCB0cjAsIDEyLCAyClsgIDM0XSBsb2FkCQkgdHIwLCB1
bmRlZmluZWQoQGsxKQkJClsgIDM3XSByZXQJCSB0cjAKCklkZW50aWZpZXJzOgogIGlkMCA9IHBy
aW50CiAgaWQxID0gY2FsbAoKQ29uc3RhbnRzOgogIGswID0gMTIKICBrMSA9IHVuZGVmaW5lZAoK
NiBpbnN0cnVjdGlvbnM7IDYwIGJ5dGVzIGF0IDB4NjBhM2IwOyAyIGxvY2FscyAoMiBwYXJhbWV0
ZXJzKTsgMCB0ZW1wb3JhcmllcwoKWyAgIDBdIHN0cmljdGVxCQkgbHIyLCBscjIsIGxyMQpbICAg
NF0ganRydWUJCSBscjIsIDMoLT45KQpbICAgN10gam1wCQkgMygtPjExKQpbICAgOV0gam1wCQkg
MygtPjEzKQpbICAxMV0gam1wCQkgMSgtPjEzKQpbICAxM10gcmV0CQkgbHIyCgpmYWxzZQpFbmQ6
IHVuZGVmaW5lZAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>22034</attachid>
            <date>2008-07-01 16:28:48 -0700</date>
            <delta_ts>2008-07-01 16:32:15 -0700</delta_ts>
            <desc>Proposed patch (without tests)</desc>
            <filename>switch.diff</filename>
            <type>text/plain</type>
            <size>2401</size>
            <attacher name="Cameron Zwarich (cpst)">zwarich</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDM0OTM1
KQorKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMDgtMDct
MDEgIENhbWVyb24gWndhcmljaCAgPGN3endhcmljaEB1d2F0ZXJsb28uY2E+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQnVnIDE5ODQ0OiBKYXZhU2Ny
aXB0IFN3aXRjaCBzdGF0ZW1lbnQgbW9kaWZpZXMgInRoaXMiCisgICAgICAgIDxodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk4NDQ+CisKKyAgICAgICAgVXNlIGEgdGVt
cG9yYXJ5IHdoZW4gZ2VuZXJhdGluZyBjb2RlIGZvciBzd2l0Y2ggY2xhdXNlcyB0byBhdm9pZAor
ICAgICAgICBvdmVyd3JpdGluZyAndGhpcycgb3IgYSBsb2NhbCB2YXJpYWJsZS4KKworICAgICAg
ICAqIGtqcy9ub2Rlcy5jcHA6CisgICAgICAgIChLSlM6OkNhc2VCbG9ja05vZGU6OmVtaXRDb2Rl
Rm9yQmxvY2spOgorCiAyMDA4LTA3LTAxICBEYW4gQmVybnN0ZWluICA8bWl0ekBhcHBsZS5jb20+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQW5kZXJzIENhcmxzc29uLgpJbmRleDoga2pzL25vZGVz
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBranMvbm9kZXMuY3BwCShyZXZpc2lvbiAzNDkzNCkKKysrIGtq
cy9ub2Rlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1MDksMTcgKzE1MDksMTkgQEAgUmVnaXN0
ZXJJRCogQ2FzZUJsb2NrTm9kZTo6ZW1pdENvZGVGb3JCbAogCiAgICAgLy8gU2V0dXAganVtcHMK
ICAgICBmb3IgKENsYXVzZUxpc3ROb2RlKiBsaXN0ID0gbV9saXN0MS5nZXQoKTsgbGlzdDsgbGlz
dCA9IGxpc3QtPmdldE5leHQoKSkgewotICAgICAgICBSZWdpc3RlcklEKiBjbGF1c2VWYWwgPSBn
ZW5lcmF0b3IuZW1pdE5vZGUobGlzdC0+Z2V0Q2xhdXNlKCktPmV4cHIoKSk7Ci0gICAgICAgIGdl
bmVyYXRvci5lbWl0QmluYXJ5T3Aob3Bfc3RyaWN0ZXEsIGNsYXVzZVZhbCwgY2xhdXNlVmFsLCBz
d2l0Y2hFeHByZXNzaW9uKTsKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGNsYXVzZVZhbCA9
IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKGNs
YXVzZVZhbC5nZXQoKSwgbGlzdC0+Z2V0Q2xhdXNlKCktPmV4cHIoKSk7CisgICAgICAgIGdlbmVy
YXRvci5lbWl0QmluYXJ5T3Aob3Bfc3RyaWN0ZXEsIGNsYXVzZVZhbC5nZXQoKSwgY2xhdXNlVmFs
LmdldCgpLCBzd2l0Y2hFeHByZXNzaW9uKTsKICAgICAgICAgbGFiZWxWZWN0b3IuYXBwZW5kKGdl
bmVyYXRvci5uZXdMYWJlbCgpKTsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wSWZUcnVlKGNs
YXVzZVZhbCwgbGFiZWxWZWN0b3JbbGFiZWxWZWN0b3Iuc2l6ZSgpIC0gMV0uZ2V0KCkpOworICAg
ICAgICBnZW5lcmF0b3IuZW1pdEp1bXBJZlRydWUoY2xhdXNlVmFsLmdldCgpLCBsYWJlbFZlY3Rv
cltsYWJlbFZlY3Rvci5zaXplKCkgLSAxXS5nZXQoKSk7CiAgICAgfQogCiAgICAgZm9yIChDbGF1
c2VMaXN0Tm9kZSogbGlzdCA9IG1fbGlzdDIuZ2V0KCk7IGxpc3Q7IGxpc3QgPSBsaXN0LT5nZXRO
ZXh0KCkpIHsKLSAgICAgICAgUmVnaXN0ZXJJRCogY2xhdXNlVmFsID0gZ2VuZXJhdG9yLmVtaXRO
b2RlKGxpc3QtPmdldENsYXVzZSgpLT5leHByKCkpOwotICAgICAgICBnZW5lcmF0b3IuZW1pdEJp
bmFyeU9wKG9wX3N0cmljdGVxLCBjbGF1c2VWYWwsIGNsYXVzZVZhbCwgc3dpdGNoRXhwcmVzc2lv
bik7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBjbGF1c2VWYWwgPSBnZW5lcmF0b3IubmV3
VGVtcG9yYXJ5KCk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZShjbGF1c2VWYWwuZ2V0KCks
IGxpc3QtPmdldENsYXVzZSgpLT5leHByKCkpOworICAgICAgICBnZW5lcmF0b3IuZW1pdEJpbmFy
eU9wKG9wX3N0cmljdGVxLCBjbGF1c2VWYWwuZ2V0KCksIGNsYXVzZVZhbC5nZXQoKSwgc3dpdGNo
RXhwcmVzc2lvbik7CiAgICAgICAgIGxhYmVsVmVjdG9yLmFwcGVuZChnZW5lcmF0b3IubmV3TGFi
ZWwoKSk7Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcElmVHJ1ZShjbGF1c2VWYWwsIGxhYmVs
VmVjdG9yW2xhYmVsVmVjdG9yLnNpemUoKSAtIDFdLmdldCgpKTsKKyAgICAgICAgZ2VuZXJhdG9y
LmVtaXRKdW1wSWZUcnVlKGNsYXVzZVZhbC5nZXQoKSwgbGFiZWxWZWN0b3JbbGFiZWxWZWN0b3Iu
c2l6ZSgpIC0gMV0uZ2V0KCkpOwogICAgIH0KIAogICAgIFJlZlB0cjxMYWJlbElEPiBkZWZhdWx0
TGFiZWw7Cg==
</data>
<flag name="review"
          id="9698"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>