[Webkit-unassigned] [Bug 117735] [curl] Improve multipart response handling

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Wed Aug 14 04:28:36 PDT 2013


https://bugs.webkit.org/show_bug.cgi?id=117735





--- Comment #10 from Christophe Dumez <dchris at gmail.com>  2013-08-14 04:28:11 PST ---
(From update of attachment 208710)
View in context: https://bugs.webkit.org/attachment.cgi?id=208710&action=review

> Source/WebCore/platform/network/curl/MultipartHandle.cpp:63
> +        boundaryEnd = contentType.find(";", boundaryStart);

';'

> Source/WebCore/platform/network/curl/MultipartHandle.cpp:77
> +bool MultipartHandle::matchForBoundary(const char* data, size_t pos, size_t& matchedLength)

We don't use abbreviations in WebKit: pos -> position

> Source/WebCore/platform/network/curl/MultipartHandle.cpp:82
> +        if (data[pos + i] != m_boundary[i]) {

how do we know data[pos + i] does not go out of bounds?

> Source/WebCore/platform/network/curl/MultipartHandle.cpp:92
> +bool MultipartHandle::checkForBoundary(size_t& boundaryStartPos, size_t& lastPartialMatchPos)

"Pos" -> "Position'

> Source/WebCore/platform/network/curl/MultipartHandle.cpp:99
> +    lastPartialMatchPos = contentLength;

Ditto.

> Source/WebCore/platform/network/curl/MultipartHandle.cpp:117
> +    const char* content = m_buffer.data();

This can be moved after the if check for contentLength.

> Source/WebCore/platform/network/curl/MultipartHandle.cpp:135
> +    char* end = const_cast<char*>(content) + contentLength;

Cannot this one be const?

> Source/WebCore/platform/network/curl/MultipartHandle.cpp:249
> +        if (!m_buffer.size())

m_buffer.isEmpty()

> Source/WebCore/platform/network/curl/MultipartHandle.h:77
> +    Vector<char> m_buffer;

Considering the operations you are doing (append and remove from beginning), a Vector may not be the best data structure. You might want to take a look at StreamBuffer (or Deque)

> Source/WebCore/platform/network/curl/ResourceHandleManager.cpp:406
> +                d->m_multipartHandle = adoptPtr(new MultipartHandle(job, boundary));

We usually use static factory functions such as PassOwnPtr<MultipartHandle> MultipartHandle::create() for such cases so that we never deal with raw pointers externally.

-- 
Configure bugmail: https://bugs.webkit.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.


More information about the webkit-unassigned mailing list