diff options
-rw-r--r-- | filter/source/graphicfilter/itiff/ccidecom.cxx | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/filter/source/graphicfilter/itiff/ccidecom.cxx b/filter/source/graphicfilter/itiff/ccidecom.cxx index 1cb7d7d53448..125d9c85d5e4 100644 --- a/filter/source/graphicfilter/itiff/ccidecom.cxx +++ b/filter/source/graphicfilter/itiff/ccidecom.cxx @@ -995,10 +995,14 @@ void CCIDecompressor::Read1DScanlineData(sal_uInt8 * pTarget, sal_uInt16 nTarget nDataBits = nDataBits - nTgtFreeByteBits; pTarget++; nTgtFreeByteBits=8; - while (nDataBits>=8) { - *(pTarget++)=nBlackOrWhite; - nDataBits-=8; + if (nDataBits >= 8) + { + const sal_uInt16 nDataBytes = nDataBits / 8; + memset(pTarget, nBlackOrWhite, nDataBytes); + pTarget += nDataBytes; + nDataBits -= nDataBytes * 8; } + if (nDataBits>0) { *pTarget=nBlackOrWhite; nTgtFreeByteBits = nTgtFreeByteBits - nDataBits; |