| Index: Source/platform/image-decoders/bmp/BMPImageDecoder.cpp | 
| diff --git a/Source/platform/image-decoders/bmp/BMPImageDecoder.cpp b/Source/platform/image-decoders/bmp/BMPImageDecoder.cpp | 
| index f08295962ff2f8a2c87379fa46d3d5a2a71b6e01..17d52fbe8bd7b564342433fcdd2a4d5113d136c2 100644 | 
| --- a/Source/platform/image-decoders/bmp/BMPImageDecoder.cpp | 
| +++ b/Source/platform/image-decoders/bmp/BMPImageDecoder.cpp | 
| @@ -31,6 +31,7 @@ | 
| #include "config.h" | 
| #include "platform/image-decoders/bmp/BMPImageDecoder.h" | 
|  | 
| +#include "platform/image-decoders/FastSharedBufferReader.h" | 
| #include "wtf/PassOwnPtr.h" | 
|  | 
| namespace blink { | 
| @@ -100,8 +101,12 @@ bool BMPImageDecoder::processFileHeader(size_t& imgDataOffset) | 
| ASSERT(!m_decodedOffset); | 
| if (m_data->size() < sizeOfFileHeader) | 
| return false; | 
| -    const uint16_t fileType = (m_data->data()[0] << 8) | static_cast<uint8_t>(m_data->data()[1]); | 
| -    imgDataOffset = readUint32(10); | 
| + | 
| +    char buffer[sizeOfFileHeader]; | 
| +    FastSharedBufferReader fastReader(m_data); | 
| +    const char* fileHeader = fastReader.getConsecutiveData(0, sizeOfFileHeader, buffer); | 
| +    const uint16_t fileType = (fileHeader[0] << 8) | static_cast<uint8_t>(fileHeader[1]); | 
| +    imgDataOffset = BMPImageReader::readUint32(&fileHeader[10]); | 
| m_decodedOffset = sizeOfFileHeader; | 
|  | 
| // See if this is a bitmap filetype we understand. | 
|  |