<?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>11529</bug_id>
          
          <creation_ts>2006-11-06 09:22:46 -0800</creation_ts>
          <short_desc>under js1.2, Array object should pop the last element as Number object&apos;s argument</short_desc>
          <delta_ts>2007-09-30 03:40:25 -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>420+</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</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>0</everconfirmed>
          <reporter>digdog</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>46860</commentid>
    <comment_count>0</comment_count>
    <who name="">digdog</who>
    <bug_when>2006-11-06 09:22:46 -0800</bug_when>
    <thetext>Currently, the result will be correct if Number object uses Array object as argument, and the Array object has only one element.

If array length is larger than one, the argument will become NaN. This is due to Array object will be first converted into ValueOf and later ToString, e.g. &quot;element1, element2&quot;.

The correct way based on js1.2 is to pop the last element if Array elements if more than one.

Reference:
/WebKit/JavaScriptCore/tests/mozilla/js1_2/function/Number.js Ln65</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>46861</commentid>
    <comment_count>1</comment_count>
      <attachid>11398</attachid>
    <who name="">digdog</who>
    <bug_when>2006-11-06 09:26:17 -0800</bug_when>
    <thetext>Created attachment 11398
identifier.h</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>46862</commentid>
    <comment_count>2</comment_count>
      <attachid>11399</attachid>
    <who name="">digdog</who>
    <bug_when>2006-11-06 09:26:54 -0800</bug_when>
    <thetext>Created attachment 11399
object.cpp</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>46863</commentid>
    <comment_count>3</comment_count>
    <who name="">digdog</who>
    <bug_when>2006-11-06 09:27:29 -0800</bug_when>
    <thetext>I try to fix it by added &quot;pop&quot; as Identifier&apos;s special prototype property name, and use it in *JSObject::defaultValue()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>46864</commentid>
    <comment_count>4</comment_count>
    <who name="">digdog</who>
    <bug_when>2006-11-06 09:31:55 -0800</bug_when>
    <thetext>Should open for review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>46738</commentid>
    <comment_count>5</comment_count>
      <attachid>11408</attachid>
    <who name="">digdog</who>
    <bug_when>2006-11-06 17:08:24 -0800</bug_when>
    <thetext>Created attachment 11408
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>46740</commentid>
    <comment_count>6</comment_count>
    <who name="">digdog</who>
    <bug_when>2006-11-06 17:24:05 -0800</bug_when>
    <thetext>However, this proposal seems conflict with ECMA-262v3 specs 9.3.1 &amp; 8.6.2.6. 

Cause Object should call ToPrimitive first then ToNumber later after, and ToPrimitive was calling valueOf and toString. However, the Array prototype does not have valueOf, so it inherits the property from Object prototype.

I am not sure if the valueOf [1,2,3] should be &quot;1,2,3&quot; or [object Array], and it will be &quot;1,2,3&quot; before this patch, and &quot;3&quot; after the patch applied. </thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>46697</commentid>
    <comment_count>7</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2006-11-06 20:43:05 -0800</bug_when>
    <thetext>If this change would result in violating the spec, I&apos;d like to know:

a) Do other major browsers (IE, Opera) also have this nonstandard behavior?
b) Are there any sites that depend on the nonstandard behavior?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>46645</commentid>
    <comment_count>8</comment_count>
    <who name="">digdog</who>
    <bug_when>2006-11-07 05:08:39 -0800</bug_when>
    <thetext>No and no. 

Mozilla SpiderMonkey (ES3) / Rinho (ES3), IE7 JScript.NET (ES4) and Opera (ES1) don&apos;t act like this, they all return NaN when array elements are greater than one. 

And since this is based on js1.2 and gone after that, I don&apos;t see any website using scripts in this way for a while.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>46587</commentid>
    <comment_count>9</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2006-11-07 15:37:09 -0800</bug_when>
    <thetext>If none of the other browsers do this, no websites depend on the behavior and it violates the current specification, what is the rationale for making the change?  If it&apos;s just to satisfy the test you mentioned, perhaps a better solution would be to change the test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>46591</commentid>
    <comment_count>10</comment_count>
      <attachid>11408</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2006-11-07 21:15:53 -0800</bug_when>
    <thetext>Comment on attachment 11408
Patch

Since this is against the spec and no other browsers do this, we should not make this change. It would be better to change or disable the test. Mozilla probably tests this because their JS interpreter has modes to request legacy behavior of old JS versions - we don&apos;t implement that and don&apos;t plan to.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>46599</commentid>
    <comment_count>11</comment_count>
    <who name="">digdog</who>
    <bug_when>2006-11-08 02:21:52 -0800</bug_when>
    <thetext>I see. I will try to identify the failed testcases (of previous version, e.g. js1_2) that violate current spec, and see if we should close these tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>57437</commentid>
    <comment_count>12</comment_count>
    <who name="Andrew Wellington">andrew</who>
    <bug_when>2007-09-30 03:40:25 -0700</bug_when>
    <thetext>This was fixed by r18071 fixing bug #11545</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>11398</attachid>
            <date>2006-11-06 09:26:17 -0800</date>
            <delta_ts>2006-11-06 17:07:01 -0800</delta_ts>
            <desc>identifier.h</desc>
            <filename>identifier.h.diff</filename>
            <type>text/plain</type>
            <size>703</size>
            <attacher>digdog</attacher>
            
              <data encoding="base64">KioqIC90bXAvUEIuMjU0L1hDU0NNVG9wT2ZUcnVua1JldmlzaW9uLWlkZW50aWZpZXIuaC9pZGVu
dGlmaWVyLmgJVHVlIE5vdiAgNyAwMDo1MjoyOCAyMDA2Ci0tLSBpZGVudGlmaWVyLmgJVHVlIE5v
diAgNyAwMDozNzo0MSAyMDA2CioqKioqKioqKioqKioqKiBuYW1lc3BhY2UgS0pTIHsKKioqIDEx
NCwxMjAgKioqKgogICAgICAgICAgbWFjcm8odG9GaXhlZCkgXAogICAgICAgICAgbWFjcm8odG9F
eHBvbmVudGlhbCkgXAogICAgICAgICAgbWFjcm8odG9QcmVjaXNpb24pIFwKISAgICAgICAgIG1h
Y3JvKHZhbHVlT2YpCiAgCiAgICAgIC8vIERlZmluZSBleHRlcm5hbCBnbG9iYWwgdmFyaWFibGVz
IGZvciBhbGwgcHJvcGVydHkgbmFtZXMgYWJvdmUgKGFuZCBvbmUgbW9yZSkuCiAgI2lmbmRlZiBL
SlNfSURFTlRJRklFUl9ISURFX0dMT0JBTFMKLS0tIDExNCwxMjEgLS0tLQogICAgICAgICAgbWFj
cm8odG9GaXhlZCkgXAogICAgICAgICAgbWFjcm8odG9FeHBvbmVudGlhbCkgXAogICAgICAgICAg
bWFjcm8odG9QcmVjaXNpb24pIFwKISAgICAgICAgIG1hY3JvKHZhbHVlT2YpIFwKISAJbWFjcm8o
cG9wKQogIAogICAgICAvLyBEZWZpbmUgZXh0ZXJuYWwgZ2xvYmFsIHZhcmlhYmxlcyBmb3IgYWxs
IHByb3BlcnR5IG5hbWVzIGFib3ZlIChhbmQgb25lIG1vcmUpLgogICNpZm5kZWYgS0pTX0lERU5U
SUZJRVJfSElERV9HTE9CQUxTCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>11399</attachid>
            <date>2006-11-06 09:26:54 -0800</date>
            <delta_ts>2006-11-06 17:07:23 -0800</delta_ts>
            <desc>object.cpp</desc>
            <filename>object.cpp.diff</filename>
            <type>text/plain</type>
            <size>863</size>
            <attacher>digdog</attacher>
            
              <data encoding="base64">KioqIC90bXAvUEIuMjU0L1hDU0NNVG9wT2ZUcnVua1JldmlzaW9uLW9iamVjdC5jcHAvb2JqZWN0
LmNwcAlUdWUgTm92ICA3IDAwOjUxOjQzIDIwMDYKLS0tIG9iamVjdC5jcHAJVHVlIE5vdiAgNyAw
MDo1MToyMSAyMDA2CioqKioqKioqKioqKioqKiBKU1ZhbHVlICpKU09iamVjdDo6ZGVmYXVsdFZh
bHVlKEV4ZWNTdGF0CioqKiAzNDcsMzUyICoqKioKLS0tIDM0NywzNTYgLS0tLQogICAgaWYgKCho
aW50ID09IFN0cmluZ1R5cGUpIHx8IChoaW50ICE9IFN0cmluZ1R5cGUpICYmIChoaW50ICE9IE51
bWJlclR5cGUpICYmIChfcHJvdG8gPT0gZXhlYy0+bGV4aWNhbEludGVycHJldGVyKCktPmJ1aWx0
aW5EYXRlUHJvdG90eXBlKCkpKSB7CiAgICAgIGZpcnN0UHJvcGVydHlOYW1lID0gdG9TdHJpbmdQ
cm9wZXJ0eU5hbWU7CiAgICAgIHNlY29uZFByb3BlcnR5TmFtZSA9IHZhbHVlT2ZQcm9wZXJ0eU5h
bWU7CisgICB9IGVsc2UgaWYgKChoaW50ID09IE51bWJlclR5cGUpICYmIChfcHJvdG8gPT0gZXhl
Yy0+bGV4aWNhbEludGVycHJldGVyKCktPmJ1aWx0aW5BcnJheVByb3RvdHlwZSgpKSkgeworICAg
ICAvKiBOZWVkIHRvIHBvcCB0aGUgbGFzdCBlbGVtZW50IHdoZW4gdGhlIEFycmF5IG9iamVjdCBp
cyB0aGUgYXJndW1lbnQgb2YgTnVtYmVyIG9iamVjdCAqLworICAgICBmaXJzdFByb3BlcnR5TmFt
ZSA9IHBvcFByb3BlcnR5TmFtZTsKKyAgICAgc2Vjb25kUHJvcGVydHlOYW1lID0gdG9TdHJpbmdQ
cm9wZXJ0eU5hbWU7CiAgICB9IGVsc2UgewogICAgICBmaXJzdFByb3BlcnR5TmFtZSA9IHZhbHVl
T2ZQcm9wZXJ0eU5hbWU7CiAgICAgIHNlY29uZFByb3BlcnR5TmFtZSA9IHRvU3RyaW5nUHJvcGVy
dHlOYW1lOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>11408</attachid>
            <date>2006-11-06 17:08:24 -0800</date>
            <delta_ts>2006-11-07 21:15:53 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>2035</size>
            <attacher>digdog</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE3NjIxKQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMDYtMTEtMDcgIEtldmluIEZ5
dXJlICA8ZGlnZG9nQG1hY3BvcnRzLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIGtqcy9pZGVudGlmaWVyLmg6CisgICAgICAgICoga2pzL29i
amVjdC5jcHA6CisgICAgICAgIChLSlM6OkpTT2JqZWN0OjpkZWZhdWx0VmFsdWUpOgorCisgICAg
ICAgIEJ1ZyAxMTUyOTogVW5kZXIganMxLjIsIEFycmF5IG9iamVjdCBzaG91bGQgcG9wIHRoZSBs
YXN0IGVsZW1lbnQgYXMKKyAgICAgICAgYXJndW1lbnQgZm9yIE51bWJlciBvYmplY3QKKyAgICAg
ICAgCiAyMDA2LTExLTA2ICBNYXJrIFJvd2UgIDxiZGFzaEB3ZWJraXQub3JnPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IHRoZSB3b25kZXJmdWwgTWl0eiBQZXR0ZWwuCkluZGV4OiBKYXZhU2NyaXB0
Q29yZS9ranMvaWRlbnRpZmllci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL2tqcy9p
ZGVudGlmaWVyLmgJKHJldmlzaW9uIDE3NjE0KQorKysgSmF2YVNjcmlwdENvcmUva2pzL2lkZW50
aWZpZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTE0LDcgKzExNCw4IEBAIG5hbWVzcGFjZSBLSlMg
ewogICAgICAgICBtYWNybyh0b0ZpeGVkKSBcCiAgICAgICAgIG1hY3JvKHRvRXhwb25lbnRpYWwp
IFwKICAgICAgICAgbWFjcm8odG9QcmVjaXNpb24pIFwKLSAgICAgICAgbWFjcm8odmFsdWVPZikK
KyAgICAgICAgbWFjcm8odmFsdWVPZikgXAorCW1hY3JvKHBvcCkKIAogICAgIC8vIERlZmluZSBl
eHRlcm5hbCBnbG9iYWwgdmFyaWFibGVzIGZvciBhbGwgcHJvcGVydHkgbmFtZXMgYWJvdmUgKGFu
ZCBvbmUgbW9yZSkuCiAjaWZuZGVmIEtKU19JREVOVElGSUVSX0hJREVfR0xPQkFMUwpJbmRleDog
SmF2YVNjcmlwdENvcmUva2pzL29iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENv
cmUva2pzL29iamVjdC5jcHAJKHJldmlzaW9uIDE3NjE0KQorKysgSmF2YVNjcmlwdENvcmUva2pz
L29iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0Nyw2ICszNDcsMTAgQEAgSlNWYWx1ZSAq
SlNPYmplY3Q6OmRlZmF1bHRWYWx1ZShFeGVjU3RhdAogICBpZiAoKGhpbnQgPT0gU3RyaW5nVHlw
ZSkgfHwgKGhpbnQgIT0gU3RyaW5nVHlwZSkgJiYgKGhpbnQgIT0gTnVtYmVyVHlwZSkgJiYgKF9w
cm90byA9PSBleGVjLT5sZXhpY2FsSW50ZXJwcmV0ZXIoKS0+YnVpbHRpbkRhdGVQcm90b3R5cGUo
KSkpIHsKICAgICBmaXJzdFByb3BlcnR5TmFtZSA9IHRvU3RyaW5nUHJvcGVydHlOYW1lOwogICAg
IHNlY29uZFByb3BlcnR5TmFtZSA9IHZhbHVlT2ZQcm9wZXJ0eU5hbWU7CisgIH0gZWxzZSBpZiAo
KGhpbnQgPT0gTnVtYmVyVHlwZSkgJiYgKF9wcm90byA9PSBleGVjLT5sZXhpY2FsSW50ZXJwcmV0
ZXIoKS0+YnVpbHRpbkFycmF5UHJvdG90eXBlKCkpKSB7CisgICAgLyogTmVlZCB0byBwb3AgdGhl
IGxhc3QgZWxlbWVudCB3aGVuIHRoZSBBcnJheSBvYmplY3QgaXMgdGhlIGFyZ3VtZW50IG9mIE51
bWJlciBvYmplY3QgKi8KKyAgICBmaXJzdFByb3BlcnR5TmFtZSA9IHBvcFByb3BlcnR5TmFtZTsK
KyAgICBzZWNvbmRQcm9wZXJ0eU5hbWUgPSB0b1N0cmluZ1Byb3BlcnR5TmFtZTsKICAgfSBlbHNl
IHsKICAgICBmaXJzdFByb3BlcnR5TmFtZSA9IHZhbHVlT2ZQcm9wZXJ0eU5hbWU7CiAgICAgc2Vj
b25kUHJvcGVydHlOYW1lID0gdG9TdHJpbmdQcm9wZXJ0eU5hbWU7Cg==
</data>
<flag name="review"
          id="3996"
          type_id="1"
          status="-"
          setter="mjs"
    />
          </attachment>
      

    </bug>

</bugzilla>