diff options
author | Caolán McNamara <caolanm@redhat.com> | 2016-05-27 09:23:03 +0100 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2016-05-27 09:23:32 +0100 |
commit | a9d2302d4d0732a0c1203bbb7c0182b8de59403d (patch) | |
tree | 12ea6ec231f6a47c5b440bcdc6293b86d05b21da /vcl | |
parent | 23172fc9337c7f0928de0d938de31a0341c32e89 (diff) |
Related: tdf#87967 valgrind reported invalid reads on 1 pixel wide bitmap
Change-Id: Iddd18280c780d8b9f5e11fcc2af80749917192c4
Diffstat (limited to 'vcl')
-rw-r--r-- | vcl/source/outdev/bitmap.cxx | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/vcl/source/outdev/bitmap.cxx b/vcl/source/outdev/bitmap.cxx index a3e05715b239..a07b32cfa054 100644 --- a/vcl/source/outdev/bitmap.cxx +++ b/vcl/source/outdev/bitmap.cxx @@ -811,7 +811,7 @@ public: const long nMapY = mpMapY[nY]; const long nMapFY = mpMapYOffset[nY]; - pLine0 = pSource->GetScanline(nMapY); + pLine0 = pSource->GetScanline(nMapY); // tdf#95481 guard nMapY + 1 to be within bounds pLine1 = (nMapY + 1 < pSource->Height()) ? pSource->GetScanline(nMapY + 1) : pLine0; @@ -827,7 +827,7 @@ public: const long nMapFX = mpMapXOffset[nX]; pColorSample1 = pLine0 + 3L * nMapX; - pColorSample2 = pColorSample1 + 3L; + pColorSample2 = (nMapX + 1 < pSource->Width()) ? pColorSample1 + 3L : pColorSample1; nColor1Line1 = (static_cast<long>(*pColorSample1) << 7) + nMapFX * (static_cast<long>(*pColorSample2) - *pColorSample1); pColorSample1++; @@ -839,7 +839,7 @@ public: nColor3Line1 = (static_cast<long>(*pColorSample1) << 7) + nMapFX * (static_cast<long>(*pColorSample2) - *pColorSample1); pColorSample1 = pLine1 + 3L * nMapX; - pColorSample2 = pColorSample1 + 3L; + pColorSample2 = (nMapX + 1 < pSource->Width()) ? pColorSample1 + 3L : pColorSample1; nColor1Line2 = (static_cast<long>(*pColorSample1) << 7) + nMapFX * (static_cast<long>(*pColorSample2) - *pColorSample1); pColorSample1++; @@ -851,11 +851,11 @@ public: nColor3Line2 = (static_cast<long>(*pColorSample1) << 7) + nMapFX * (static_cast<long>(*pColorSample2) - *pColorSample1); pColorSample1 = pLineAlpha0 + nMapX; - pColorSample2 = pColorSample1 + 1L; + pColorSample2 = (nMapX + 1 < pSourceAlpha->Width()) ? pColorSample1 + 1L : pColorSample1; nAlphaLine1 = (static_cast<long>(*pColorSample1) << 7) + nMapFX * (static_cast<long>(*pColorSample2) - *pColorSample1); pColorSample1 = pLineAlpha1 + nMapX; - pColorSample2 = pColorSample1 + 1L; + pColorSample2 = (nMapX + 1 < pSourceAlpha->Width()) ? pColorSample1 + 1L : pColorSample1; nAlphaLine2 = (static_cast<long>(*pColorSample1) << 7) + nMapFX * (static_cast<long>(*pColorSample2) - *pColorSample1); nColor1 = (nColor1Line1 + nMapFY * ((nColor1Line2 >> 7) - (nColor1Line1 >> 7))) >> 7; |