summaryrefslogtreecommitdiff
path: root/vcl/source/outdev
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2016-05-27 09:23:03 +0100
committerMiklos Vajna <vmiklos@collabora.co.uk>2016-05-30 08:38:04 +0000
commit91bf25bce0c8aa6c4c303fed3a127cdb611b36c2 (patch)
treea08f69aa33894544493af9bd0976b04fb619886b /vcl/source/outdev
parent79da0edfb4743ed914c67759b78b104fcde43b0d (diff)
Related: tdf#87967 valgrind reported invalid reads on 1 pixel wide bitmap
Change-Id: Iddd18280c780d8b9f5e11fcc2af80749917192c4 (cherry picked from commit a9d2302d4d0732a0c1203bbb7c0182b8de59403d) (cherry picked from commit 6fb88a0c67150a751f59ebcba5f5419b24e6f4a7) Reviewed-on: https://gerrit.libreoffice.org/25533 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Miklos Vajna <vmiklos@collabora.co.uk>
Diffstat (limited to 'vcl/source/outdev')
-rw-r--r--vcl/source/outdev/bitmap.cxx10
1 files changed, 5 insertions, 5 deletions
diff --git a/vcl/source/outdev/bitmap.cxx b/vcl/source/outdev/bitmap.cxx
index 1f0a1c6f03ee..b77c409c257e 100644
--- a/vcl/source/outdev/bitmap.cxx
+++ b/vcl/source/outdev/bitmap.cxx
@@ -804,7 +804,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;
@@ -820,7 +820,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++;
@@ -832,7 +832,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++;
@@ -844,11 +844,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;