Chromium Code Reviews| Index: net/websockets/websocket_frame_parser.cc |
| diff --git a/net/websockets/websocket_frame_parser.cc b/net/websockets/websocket_frame_parser.cc |
| index 1acc64ce42af9825499e9c42a9e0147d8855b34c..505a30b6b10af3bc28d63db64cdee02e2a170bce 100644 |
| --- a/net/websockets/websocket_frame_parser.cc |
| +++ b/net/websockets/websocket_frame_parser.cc |
| @@ -12,6 +12,7 @@ |
| #include "base/memory/scoped_ptr.h" |
| #include "base/memory/scoped_vector.h" |
| #include "net/base/big_endian.h" |
| +#include "net/base/io_buffer.h" |
| #include "net/websockets/websocket_frame.h" |
| namespace { |
| @@ -184,14 +185,17 @@ scoped_ptr<WebSocketFrameChunk> WebSocketFrameParser::DecodeFramePayload( |
| frame_chunk->header.reset(new WebSocketFrameHeader(*current_frame_header_)); |
| } |
| frame_chunk->final_chunk = false; |
| - frame_chunk->data.assign(current, current + next_size); |
| + frame_chunk->data = new IOBufferWithSize(next_size); |
|
mmenke
2012/07/27 14:25:55
This doesn't give a warning without casting next_s
Takashi Toyoshima
2012/07/27 16:08:30
Humm... my local linux build passes it without any
|
| + DCHECK(frame_chunk->data); |
|
mmenke
2012/07/27 14:25:55
Not needed. We crash on any allocation failure.
Takashi Toyoshima
2012/07/27 16:08:30
Done.
|
| + char* io_data = frame_chunk->data->data(); |
| + memcpy(io_data, current, next_size); |
| if (current_frame_header_->masked) { |
| // Unmask the payload. |
| // TODO(yutak): This could be faster by doing unmasking for each |
| // machine word (instead of each byte). |
| size_t key_offset = frame_offset_ % kMaskingKeyLength; |
| for (uint64 i = 0; i < next_size; ++i) { |
| - frame_chunk->data[i] ^= masking_key_[key_offset]; |
| + io_data[i] ^= masking_key_[key_offset]; |
| key_offset = (key_offset + 1) % kMaskingKeyLength; |
| } |
| } |