| Index: src/images/bmpdecoderhelper.cpp
|
| ===================================================================
|
| --- src/images/bmpdecoderhelper.cpp (revision 12322)
|
| +++ src/images/bmpdecoderhelper.cpp (working copy)
|
| @@ -18,7 +18,7 @@
|
| static const int kMaxDim = SHRT_MAX / 2;
|
|
|
| bool BmpDecoderHelper::DecodeImage(const char* p,
|
| - int len,
|
| + size_t len,
|
| int max_pixels,
|
| BmpDecoderCallback* callback) {
|
| data_ = reinterpret_cast<const uint8*>(p);
|
| @@ -153,7 +153,7 @@
|
| rowLen += rowPad_;
|
| }
|
|
|
| - if (offset > 0 && offset > pos_ && offset < len_) {
|
| + if (offset > 0 && (size_t)offset > pos_ && (size_t)offset < len_) {
|
| pos_ = offset;
|
| }
|
| // Deliberately off-by-one; a load of BMPs seem to have their last byte
|
| @@ -182,7 +182,7 @@
|
| static const uint8 RLE_DELTA = 2;
|
| int x = 0;
|
| int y = height_ - 1;
|
| - while (pos_ < len_ - 1) {
|
| + while (pos_ + 1 < len_) {
|
| uint8 cmd = GetByte();
|
| if (cmd != RLE_ESCAPE) {
|
| uint8 pixels = GetByte();
|
| @@ -210,7 +210,7 @@
|
| return;
|
| }
|
| } else if (cmd == RLE_DELTA) {
|
| - if (pos_ < len_ - 1) {
|
| + if (pos_ + 1 < len_) {
|
| uint8 dx = GetByte();
|
| uint8 dy = GetByte();
|
| x += dx;
|
| @@ -336,7 +336,7 @@
|
| }
|
|
|
| uint8 BmpDecoderHelper::GetByte() {
|
| - CHECK(pos_ >= 0 && pos_ <= len_);
|
| + CHECK(pos_ <= len_);
|
| // We deliberately allow this off-by-one access to cater for BMPs with their
|
| // last byte missing.
|
| if (pos_ == len_) {
|
|
|