Changeset 101825 in webkit


Ignore:
Timestamp:
Dec 2, 2011 10:34:37 AM (12 years ago)
Author:
Darin Adler
Message:

[Mac] Form stream data structures still not threadsafe
https://bugs.webkit.org/show_bug.cgi?id=73674

Reviewed by Anders Carlsson.

  • platform/network/mac/FormDataStreamMac.mm:

(WebCore::streamFieldsMapMutex): Added.
(WebCore::associateStreamWithResourceHandle): Use streamFieldsMapMutex.
(WebCore::formCreate): Ditto.
(WebCore::formFinalize): Ditto.
(WebCore::httpBodyFromStream): Ditto.

Location:
trunk/Source/WebCore
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r101824 r101825  
     12011-12-02  Darin Adler  <darin@apple.com>
     2
     3        [Mac] Form stream data structures still not threadsafe
     4        https://bugs.webkit.org/show_bug.cgi?id=73674
     5
     6        Reviewed by Anders Carlsson.
     7
     8        * platform/network/mac/FormDataStreamMac.mm:
     9        (WebCore::streamFieldsMapMutex): Added.
     10        (WebCore::associateStreamWithResourceHandle): Use streamFieldsMapMutex.
     11        (WebCore::formCreate): Ditto.
     12        (WebCore::formFinalize): Ditto.
     13        (WebCore::httpBodyFromStream): Ditto.
     14
    1152011-12-02  Joshua Bell  <jsbell@chromium.org>
    216
  • trunk/Source/WebCore/platform/network/mac/FormDataStreamMac.mm

    r101813 r101825  
    5757namespace WebCore {
    5858
    59 // We need to use NSMapTable instead of HashMap since this needs to be accessed from more than one thread.
     59static Mutex& streamFieldsMapMutex()
     60{
     61    DEFINE_STATIC_LOCAL(Mutex, staticMutex, ());
     62    return staticMutex;
     63}
     64
    6065static NSMapTable *streamFieldsMap()
    6166{
     
    8085        return;
    8186
    82     if (!NSMapGet(streamFieldsMap(), stream))
    83         return;
     87    {
     88        MutexLocker locker(streamFieldsMapMutex());
     89        if (!NSMapGet(streamFieldsMap(), stream))
     90            return;
     91    }
    8492
    8593    ASSERT(!getStreamResourceHandleMap().contains((CFReadStreamRef)stream));
     
    248256        newInfo->remainingElements.append(newInfo->formData->elements()[size - i - 1]);
    249257
     258    MutexLocker locker(streamFieldsMapMutex());
    250259    ASSERT(!NSMapGet(streamFieldsMap(), stream));
    251260    NSMapInsertKnownAbsent(streamFieldsMap(), stream, newInfo);
     
    264273{
    265274    FormStreamFields* form = static_cast<FormStreamFields*>(context);
     275
     276    MutexLocker locker(streamFieldsMapMutex());
    266277
    267278    ASSERT(form->formStream == stream);
     
    497508FormData* httpBodyFromStream(NSInputStream* stream)
    498509{
     510    MutexLocker locker(streamFieldsMapMutex());
    499511    FormStreamFields* formStream = static_cast<FormStreamFields*>(NSMapGet(streamFieldsMap(), stream));
    500512    if (!formStream)
Note: See TracChangeset for help on using the changeset viewer.