Ignore:
Timestamp:
Dec 3, 2007, 2:56:42 PM (17 years ago)
Author:
Darin Adler
Message:

JavaScriptCore:

Reviewed by Geoff.

Test: fast/js/recursion-limit-equal.html

  • kjs/operations.cpp: (KJS::equal): Check the exception from toPrimitive.

LayoutTests:

Reviewed by Geoff.

  • fast/js/recursion-limit-equal-expected.txt: Added.
  • fast/js/recursion-limit-equal.html: Added.
  • fast/js/resources/recursion-limit-equal.js: Added.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/JavaScriptCore/kjs/operations.cpp

    r27471 r28370  
    5959            // use toNumber
    6060        else {
    61             if ((t1 == StringType || t1 == NumberType) && t2 >= ObjectType)
    62                 return equal(exec, v1, v2->toPrimitive(exec));
     61            if ((t1 == StringType || t1 == NumberType) && t2 == ObjectType) {
     62                v2 = v2->toPrimitive(exec);
     63                if (exec->hadException())
     64                    return false;
     65                return equal(exec, v1, v2);
     66            }
    6367            if (t1 == NullType && t2 == ObjectType)
    6468                return static_cast<JSObject *>(v2)->masqueradeAsUndefined();
    65             if (t1 >= ObjectType && (t2 == StringType || t2 == NumberType))
    66                 return equal(exec, v1->toPrimitive(exec), v2);
     69            if (t1 == ObjectType && (t2 == StringType || t2 == NumberType)) {
     70                v1 = v1->toPrimitive(exec);
     71                if (exec->hadException())
     72                    return false;
     73                return equal(exec, v1, v2);
     74            }
    6775            if (t1 == ObjectType && t2 == NullType)
    6876                return static_cast<JSObject *>(v1)->masqueradeAsUndefined();
Note: See TracChangeset for help on using the changeset viewer.