Changeset 167819 in webkit


Ignore:
Timestamp:
Apr 25, 2014 1:34:47 PM (10 years ago)
Author:
msaboff@apple.com
Message:

Crash in platform/mac/accessibility/table-visible-rows.html
https://bugs.webkit.org/show_bug.cgi?id=132146

Reviewed by Mark Lam.

Changed to use a local JSValueRef array temporary instead of a
std::make_unique<JSValueRef[]> when making an array of JSValues so that the temporary
JSValues are visited during garbage collection when the stack is scanned. Otherwise,
the temporary values could be collected.

  • DumpRenderTree/AccessibilityUIElement.cpp:

(convertElementsToObjectArray):

  • WebKitTestRunner/InjectedBundle/EventSendingController.cpp:

(WTR::EventSendingController::contextClick):

  • WebKitTestRunner/InjectedBundle/mac/AccessibilityUIElementMac.mm:

(WTR::convertElementsToObjectArray):

Location:
trunk/Tools
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/Tools/ChangeLog

    r167769 r167819  
     12014-04-25  Michael Saboff  <msaboff@apple.com>
     2
     3        Crash in platform/mac/accessibility/table-visible-rows.html
     4        https://bugs.webkit.org/show_bug.cgi?id=132146
     5
     6        Reviewed by Mark Lam.
     7
     8        Changed to use a local JSValueRef array temporary instead of a
     9        std::make_unique<JSValueRef[]> when making an array of JSValues so that the temporary
     10        JSValues are visited during garbage collection when the stack is scanned.  Otherwise,
     11        the temporary values could be collected.
     12
     13        * DumpRenderTree/AccessibilityUIElement.cpp:
     14        (convertElementsToObjectArray):
     15        * WebKitTestRunner/InjectedBundle/EventSendingController.cpp:
     16        (WTR::EventSendingController::contextClick):
     17        * WebKitTestRunner/InjectedBundle/mac/AccessibilityUIElementMac.mm:
     18        (WTR::convertElementsToObjectArray):
     19
    1202014-04-24  Eduardo Lima Mitev  <elima@igalia.com>
    221
  • trunk/Tools/DumpRenderTree/AccessibilityUIElement.cpp

    r166513 r167819  
    520520{
    521521    size_t elementCount = elements.size();
    522     auto valueElements = std::make_unique<JSValueRef[]>(elementCount);
     522    JSValueRef valueElements[elementCount];
    523523    for (size_t i = 0; i < elementCount; ++i)
    524524        valueElements[i] = AccessibilityUIElement::makeJSAccessibilityUIElement(context, elements[i]);
    525525   
    526     return JSObjectMakeArray(context, elementCount, valueElements.get(), exception);
     526    return JSObjectMakeArray(context, elementCount, valueElements, exception);
    527527}
    528528
  • trunk/Tools/WebKitTestRunner/InjectedBundle/EventSendingController.cpp

    r164105 r167819  
    439439    WKRetainPtr<WKArrayRef> menuEntries = adoptWK(WKBundlePageCopyContextMenuItems(page));
    440440    size_t entriesSize = WKArrayGetSize(menuEntries.get());
    441     auto jsValuesArray = std::make_unique<JSValueRef[]>(entriesSize);
     441    JSValueRef jsValuesArray[entriesSize];
    442442    for (size_t i = 0; i < entriesSize; ++i) {
    443443        ASSERT(WKGetTypeID(WKArrayGetItemAtIndex(menuEntries.get(), i)) == WKContextMenuItemGetTypeID());
     
    448448    }
    449449
    450     return JSObjectMakeArray(context, entriesSize, jsValuesArray.get(), 0);
     450    return JSObjectMakeArray(context, entriesSize, jsValuesArray, 0);
    451451#else
    452452    return JSValueMakeUndefined(context);
  • trunk/Tools/WebKitTestRunner/InjectedBundle/mac/AccessibilityUIElementMac.mm

    r166513 r167819  
    180180{
    181181    size_t elementCount = elements.size();
    182     auto valueElements = std::make_unique<JSValueRef[]>(elementCount);
     182    JSValueRef valueElements[elementCount];
    183183    for (size_t i = 0; i < elementCount; ++i)
    184184        valueElements[i] = JSObjectMake(context, elements[i]->wrapperClass(), elements[i].get());
    185185   
    186     return JSObjectMakeArray(context, elementCount, valueElements.get(), nullptr);
     186    return JSObjectMakeArray(context, elementCount, valueElements, nullptr);
    187187}
    188188
Note: See TracChangeset for help on using the changeset viewer.