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. |