| Index: webkit/glue/multipart_response_delegate.cc
|
| diff --git a/webkit/glue/multipart_response_delegate.cc b/webkit/glue/multipart_response_delegate.cc
|
| index 1b68064831a96f3313bc065e548f8d05c962285b..d7c8c295c739b68ac9ed70d4bce96f885e1a674f 100644
|
| --- a/webkit/glue/multipart_response_delegate.cc
|
| +++ b/webkit/glue/multipart_response_delegate.cc
|
| @@ -125,7 +125,7 @@ void MultipartResponseDelegate::OnReceivedData(const char* data,
|
|
|
| size_t boundary_pos;
|
| while ((boundary_pos = FindBoundary()) != std::string::npos) {
|
| - if (boundary_pos > 0) {
|
| + if (boundary_pos > 0 && client_) {
|
| // Send the last data chunk.
|
| client_->didReceiveData(loader_,
|
| data_.data(),
|
| @@ -158,7 +158,8 @@ void MultipartResponseDelegate::OnReceivedData(const char* data,
|
| int send_length = data_.length() - boundary_.length();
|
| if (data_[data_.length() - 1] == '\n')
|
| send_length = data_.length();
|
| - client_->didReceiveData(loader_, data_.data(), send_length);
|
| + if (client_)
|
| + client_->didReceiveData(loader_, data_.data(), send_length);
|
| data_ = data_.substr(send_length);
|
| }
|
| }
|
| @@ -166,7 +167,7 @@ void MultipartResponseDelegate::OnReceivedData(const char* data,
|
| void MultipartResponseDelegate::OnCompletedRequest() {
|
| // If we have any pending data and we're not in a header, go ahead and send
|
| // it to WebCore.
|
| - if (!processing_headers_ && !data_.empty()) {
|
| + if (!processing_headers_ && !data_.empty() && !stop_sending_ && client_) {
|
| client_->didReceiveData(loader_,
|
| data_.data(),
|
| static_cast<int>(data_.length()));
|
| @@ -247,7 +248,8 @@ bool MultipartResponseDelegate::ParseHeaders() {
|
| response.setIsMultipartPayload(has_sent_first_response_);
|
| has_sent_first_response_ = true;
|
| // Send the response!
|
| - client_->didReceiveResponse(loader_, response);
|
| + if (client_)
|
| + client_->didReceiveResponse(loader_, response);
|
|
|
| return true;
|
| }
|
|
|