Changeset 208935 in webkit


Ignore:
Timestamp:
Nov 20, 2016 5:31:20 PM (7 years ago)
Author:
mark.lam@apple.com
Message:

Fix exception scope verification failures in DateConstructor.cpp and DatePrototype.cpp.
https://bugs.webkit.org/show_bug.cgi?id=164995

Reviewed by Darin Adler.

  • runtime/DateConstructor.cpp:

(JSC::millisecondsFromComponents):
(JSC::constructDate):

  • runtime/DatePrototype.cpp:

(JSC::dateProtoFuncToPrimitiveSymbol):

Location:
trunk/Source/JavaScriptCore
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/ChangeLog

    r208933 r208935  
     12016-11-20  Mark Lam  <mark.lam@apple.com>
     2
     3        Fix exception scope verification failures in DateConstructor.cpp and DatePrototype.cpp.
     4        https://bugs.webkit.org/show_bug.cgi?id=164995
     5
     6        Reviewed by Darin Adler.
     7
     8        * runtime/DateConstructor.cpp:
     9        (JSC::millisecondsFromComponents):
     10        (JSC::constructDate):
     11        * runtime/DatePrototype.cpp:
     12        (JSC::dateProtoFuncToPrimitiveSymbol):
     13
    1142016-11-20  Caitlin Potter  <caitp@igalia.com>
    215
  • trunk/Source/JavaScriptCore/runtime/DateConstructor.cpp

    r206386 r208935  
    110110static double millisecondsFromComponents(ExecState* exec, const ArgList& args, WTF::TimeType timeType)
    111111{
    112     double doubleArguments[] = {
    113         args.at(0).toNumber(exec),
    114         args.at(1).toNumber(exec),
    115         args.at(2).toNumber(exec),
    116         args.at(3).toNumber(exec),
    117         args.at(4).toNumber(exec),
    118         args.at(5).toNumber(exec),
    119         args.at(6).toNumber(exec)
    120     };
     112    VM& vm = exec->vm();
     113    auto scope = DECLARE_THROW_SCOPE(vm);
     114
     115    double doubleArguments[7];
     116    for (int i = 0; i < 7; i++) {
     117        doubleArguments[i] = args.at(i).toNumber(exec);
     118        RETURN_IF_EXCEPTION(scope, 0);
     119    }
    121120
    122121    int numArgs = args.size();
     
    141140    t.setIsDST(-1);
    142141    double ms = (numArgs >= 7) ? doubleArguments[6] : 0;
    143     return gregorianDateTimeToMS(exec->vm(), t, ms, timeType);
     142    return gregorianDateTimeToMS(vm, t, ms, timeType);
    144143}
    145144
     
    160159        else {
    161160            JSValue primitive = args.at(0).toPrimitive(exec);
     161            RETURN_IF_EXCEPTION(scope, nullptr);
    162162            if (primitive.isString())
    163163                value = parseDate(vm, primitive.getString(exec));
     
    167167    } else
    168168        value = millisecondsFromComponents(exec, args, WTF::LocalTime);
     169    RETURN_IF_EXCEPTION(scope, nullptr);
    169170
    170171    Structure* dateStructure = InternalFunction::createSubclassStructure(exec, newTarget, globalObject->dateStructure());
  • trunk/Source/JavaScriptCore/runtime/DatePrototype.cpp

    r206386 r208935  
    621621        type = PreferString;
    622622
     623    scope.release();
    623624    return JSValue::encode(thisObject->ordinaryToPrimitive(exec, type));
    624625}
Note: See TracChangeset for help on using the changeset viewer.