Ignore:
Timestamp:
Mar 26, 2008, 8:35:40 PM (17 years ago)
Author:
Adam Roben
Message:

Fix Bug 18060: Assertion failure (JSLock not held) beneath JSCallbackObject<Base>::toString

<http://bugs.webkit.org/show_bug.cgi?id=18060>

Reviewed by Geoff Garen.

Bug fix:

  • API/JSCallbackObjectFunctions.h: (KJS::JSCallbackObject<Base>::toString): Make the DropAllLocks instance only be in scope while calling convertToType.

Test:

  • API/testapi.c: (MyObject_convertToType): Implement type conversion to string.
  • API/testapi.js: Add a test for type conversion to string.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/JavaScriptCore/API/JSCallbackObjectFunctions.h

    r30534 r31350  
    389389    for (JSClassRef jsClass = m_class; jsClass; jsClass = jsClass->parentClass)
    390390        if (JSObjectConvertToTypeCallback convertToType = jsClass->convertToType) {
    391             JSLock::DropAllLocks dropAllLocks;
    392             if (JSValueRef value = convertToType(ctx, thisRef, kJSTypeString, toRef(exec->exceptionSlot())))
     391            JSValueRef value;
     392            {
     393                JSLock::DropAllLocks dropAllLocks;
     394                value = convertToType(ctx, thisRef, kJSTypeString, toRef(exec->exceptionSlot()));
     395            }
     396            if (value)
    393397                return toJS(value)->getString();
    394398        }
Note: See TracChangeset for help on using the changeset viewer.