Ignore:
Timestamp:
Aug 9, 2018, 2:43:48 PM (7 years ago)
Author:
[email protected]
Message:

WKURLSchemeHandler crashes when sent errors with sync XHR
https://bugs.webkit.org/show_bug.cgi?id=188358

Patch by Alex Christensen <[email protected]> on 2018-08-09
Reviewed by Chris Dumez.

Source/WebKit:

  • UIProcess/WebURLSchemeTask.cpp:

(WebKit::WebURLSchemeTask::didReceiveData):
(WebKit::WebURLSchemeTask::didComplete):

  • UIProcess/WebURLSchemeTask.h:

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/WKURLSchemeHandler-1.mm:

(-[SyncErrorScheme webView:startURLSchemeTask:]):
(-[SyncErrorScheme webView:stopURLSchemeTask:]):
(-[SyncErrorScheme webView:runJavaScriptAlertPanelWithMessage:initiatedByFrame:completionHandler:]):

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit/UIProcess/WebURLSchemeTask.cpp

    r233113 r234735  
    9797}
    9898
    99 auto WebURLSchemeTask::didReceiveData(Ref<SharedBuffer> buffer) -> ExceptionType
     99auto WebURLSchemeTask::didReceiveData(Ref<SharedBuffer>&& buffer) -> ExceptionType
    100100{
    101101    if (m_stopped)
     
    111111
    112112    if (isSync()) {
    113         if (!m_syncData)
    114             m_syncData = SharedBuffer::create();
    115         m_syncData->append(buffer);
     113        if (m_syncData)
     114            m_syncData->append(buffer);
     115        else
     116            m_syncData = WTFMove(buffer);
    116117    }
    117118
     
    134135   
    135136    if (isSync()) {
    136         m_syncCompletionHandler(m_syncResponse, error, IPC::DataReference { (const uint8_t*)m_syncData->data(), m_syncData->size() });
     137        IPC::DataReference data;
     138        if (m_syncData)
     139            data = { reinterpret_cast<const uint8_t*>(m_syncData->data()), m_syncData->size() };
     140        m_syncCompletionHandler(m_syncResponse, error, data);
    137141        m_syncData = nullptr;
    138142    }
Note: See TracChangeset for help on using the changeset viewer.