filter/source/graphicfilter/itiff/itiff.cxx |   11 +++++++----
 filter/source/msfilter/escherex.cxx         |   11 +++++++++--
 2 files changed, 16 insertions(+), 6 deletions(-)

New commits:
commit 4bf2b13647030d4e5a44d6a23d5570aeea70c333
Author:     Stephan Bergmann <sberg...@redhat.com>
AuthorDate: Mon Nov 12 21:22:03 2018 +0100
Commit:     Stephan Bergmann <sberg...@redhat.com>
CommitDate: Tue Nov 13 07:27:08 2018 +0100

    Clamp equation values when exporting to binary MS format
    
    CppunitTest_sw_ooxmlexport failed under
    -fsanitize=implicit-signed-integer-truncation when writing 100000 (from the
    triangle equation in 
oox/source/drawingml/customshapes/oox-drawingml-cs-presets)
    as a 16-bit value (see below), and as discussed at FreeNode 
#libreoffice-dev:
    
    Nov 12 09:12:32 <vmiklos> sberg: ah, that's custom shape equation, read from
     ooxml but then written to ms binary format; i'm not sure if there is a 
better
     option there other than just clamping the value.
    Nov 12 09:14:33 <vmiklos> sberg: i would expect that information is 1) used 
in
     general when writing drawingml+vml markup for a shape (where the vml 
fallback
     is not read by LO nor by MSO) and 2) i don't expect that our poor vml 
export
     actually reads those equations. so the vml export builds on top of the 
binary
     export, but at the end probably that information (equations) is not read by
     anyone
    
    (At least for CppunitTest_sw_ooxmlexport, equation.nPara[1] never needed 
such
    clamping, just nPara[0] and nPara[2].)
    
    > filter/source/msfilter/escherex.cxx:2929:50: runtime error: implicit 
conversion from type 'sal_Int32' (aka 'int') of value 100000 (32-bit, signed) 
to type 'sal_Int16' (aka 'short') changed the value to -31072 (16-bit, signed)
    >  #0 in EscherPropertyContainer::CreateCustomShapeProperties(MSO_SPT, 
com::sun::star::uno::Reference<com::sun::star::drawing::XShape> const&) at 
filter/source/msfilter/escherex.cxx:2929:50 (instdir/program/libmsfilterlo.so 
+0x54f1e6)
    >  #1 in ImplEESdrWriter::ImplWriteShape(ImplEESdrObject&, 
EscherSolverContainer&, bool) at filter/source/msfilter/eschesdo.cxx:283:26 
(instdir/program/libmsfilterlo.so +0x67a775)
    >  #2 in ImplEESdrWriter::ImplWriteTheShape(ImplEESdrObject&, bool) at 
filter/source/msfilter/eschesdo.cxx:932:12 (instdir/program/libmsfilterlo.so 
+0x69059d)
    >  #3 in EscherEx::AddSdrObject(SdrObject const&, bool) at 
filter/source/msfilter/eschesdo.cxx:951:35 (instdir/program/libmsfilterlo.so 
+0x691064)
    >  #4 in oox::vml::VMLExport::AddSdrObject(SdrObject const&, short, short, 
short, short, bool) at oox/source/export/vmlexport.cxx:1425:15 
(instdir/program/libooxlo.so +0x2ab3157)
    >  #5 in DocxSdrExport::writeVMLDrawing(SdrObject const*, SwFrameFormat 
const&) at sw/source/filter/ww8/docxsdrexport.cxx:772:38 
(instdir/program/libmswordlo.so +0x168bfb2)
    >  #6 in DocxSdrExport::writeDMLAndVMLDrawing(SdrObject const*, 
SwFrameFormat const&, int) at sw/source/filter/ww8/docxsdrexport.cxx:975:9 
(instdir/program/libmswordlo.so +0x16938f5)
    >  #7 in DocxAttributeOutput::OutputFlyFrame_Impl(ww8::Frame const&, Point 
const&) at sw/source/filter/ww8/docxattributeoutput.cxx:5357:57 
(instdir/program/libmswordlo.so +0x1371a67)
    >  #8 in AttributeOutputBase::OutputFlyFrame(ww8::Frame const&) at 
sw/source/filter/ww8/wrtw8nds.cxx:3173:5 (instdir/program/libmswordlo.so 
+0x1befe5a)
    >  #9 in SwWW8AttrIter::OutFlys(int) at 
sw/source/filter/ww8/wrtw8nds.cxx:667:41 (instdir/program/libmswordlo.so 
+0x1beeb70)
    >  #10 in MSWordExportBase::OutputTextNode(SwTextNode&) at 
sw/source/filter/ww8/wrtw8nds.cxx:2275:42 (instdir/program/libmswordlo.so 
+0x1c32e4d)
    >  #11 in MSWordExportBase::OutputContentNode(SwContentNode&) at 
sw/source/filter/ww8/wrtw8nds.cxx:3237:13 (instdir/program/libmswordlo.so 
+0x1c5c7e4)
    >  #12 in MSWordExportBase::WriteText() at 
sw/source/filter/ww8/wrtww8.cxx:2725:13 (instdir/program/libmswordlo.so 
+0x1efcdc2)
    >  #13 in DocxExport::WriteMainText() at 
sw/source/filter/ww8/docxexport.cxx:1453:5 (instdir/program/libmswordlo.so 
+0x1607d1f)
    >  #14 in DocxExport::ExportDocument_Impl() at 
sw/source/filter/ww8/docxexport.cxx:514:5 (instdir/program/libmswordlo.so 
+0x1604baf)
    >  #15 in MSWordExportBase::ExportDocument(bool) at 
sw/source/filter/ww8/wrtww8.cxx:3206:19 (instdir/program/libmswordlo.so 
+0x1f3f022)
    >  #16 in DocxExportFilter::exportDocument() at 
sw/source/filter/ww8/docxexportfilter.cxx:86:17 (instdir/program/libmswordlo.so 
+0x166b5e3)
    >  #17 in 
oox::core::FilterBase::filter(com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue>
 const&) at oox/source/core/filterbase.cxx:489:55 (instdir/program/libooxlo.so 
+0x1bc3880)
    >  #18 in 
WriterFilter::filter(com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue>
 const&) at writerfilter/source/filter/WriterFilter.cxx:144:23 
(instdir/program/libwriterfilterlo.so +0x1a250bf)
    >  #19 in SfxObjectShell::ExportTo(SfxMedium&) at 
sfx2/source/doc/objstor.cxx:2441:25 (instdir/program/libsfxlo.so +0x38d1352)
    >  #20 in SfxObjectShell::SaveTo_Impl(SfxMedium&, SfxItemSet const*) at 
sfx2/source/doc/objstor.cxx:1535:19 (instdir/program/libsfxlo.so +0x38c1818)
    >  #21 in SfxObjectShell::PreDoSaveAs_Impl(rtl::OUString const&, 
rtl::OUString const&, SfxItemSet const&) at sfx2/source/doc/objstor.cxx:2848:39 
(instdir/program/libsfxlo.so +0x38f0e90)
    >  #22 in SfxObjectShell::CommonSaveAs_Impl(INetURLObject const&, 
rtl::OUString const&, SfxItemSet&) at sfx2/source/doc/objstor.cxx:2705:9 
(instdir/program/libsfxlo.so +0x38ea470)
    >  #23 in SfxObjectShell::APISaveAs_Impl(rtl::OUString const&, SfxItemSet&) 
at sfx2/source/doc/objserv.cxx:308:19 (instdir/program/libsfxlo.so +0x38667e3)
    >  #24 in SfxBaseModel::impl_store(rtl::OUString const&, 
com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&, 
bool) at sfx2/source/doc/sfxbasemodel.cxx:2969:46 (instdir/program/libsfxlo.so 
+0x3a3c48e)
    >  #25 in SfxBaseModel::storeToURL(rtl::OUString const&, 
com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) at 
sfx2/source/doc/sfxbasemodel.cxx:1639:13 (instdir/program/libsfxlo.so 
+0x3a425d5)
    >  #26 in SwModelTestBase::reload(char const*, char const*, char const*) at 
sw/qa/extras/inc/swmodeltestbase.hxx:797:20 
(workdir/LinkTarget/CppunitTest/libtest_sw_ooxmlexport.so +0x364711)
    >  #27 in SwModelTestBase::executeImportExportImportTest(char const*, char 
const*) at sw/qa/extras/inc/swmodeltestbase.hxx:283:9 
(workdir/LinkTarget/CppunitTest/libtest_sw_ooxmlexport.so +0x362d08)
    >  #28 in testTextboxTable::Import_Export_Import() at 
sw/qa/extras/ooxmlexport/ooxmlexport.cxx:559:1 
(workdir/LinkTarget/CppunitTest/libtest_sw_ooxmlexport.so +0x43c8dd)
    [...]
    
    Change-Id: I21d028af121691d51b053c1bf9e49c656be62b77
    Reviewed-on: https://gerrit.libreoffice.org/63309
    Tested-by: Jenkins
    Reviewed-by: Stephan Bergmann <sberg...@redhat.com>

diff --git a/filter/source/msfilter/escherex.cxx 
b/filter/source/msfilter/escherex.cxx
index ecffc34b4cb0..a41f5c1d9be9 100644
--- a/filter/source/msfilter/escherex.cxx
+++ b/filter/source/msfilter/escherex.cxx
@@ -19,6 +19,7 @@
 
 #include "eschesdo.hxx"
 #include <o3tl/any.hxx>
+#include <o3tl/clamp.hxx>
 #include <o3tl/make_unique.hxx>
 #include <svx/svdxcgv.hxx>
 #include <svx/svdomedia.hxx>
@@ -2926,9 +2927,15 @@ void 
EscherPropertyContainer::CreateCustomShapeProperties( const MSO_SPT eShapeT
                             for (auto const& equation : aEquations)
                             {
                                 aMemStrm.WriteUInt16( equation.nOperation )
-                                    .WriteInt16( equation.nPara[ 0 ] )
+                                    .WriteInt16(
+                                        o3tl::clamp(
+                                            equation.nPara[ 0 ], 
sal_Int32(SAL_MIN_INT16),
+                                            sal_Int32(SAL_MAX_INT16)) )
                                     .WriteInt16( equation.nPara[ 1 ] )
-                                    .WriteInt16( equation.nPara[ 2 ] );
+                                    .WriteInt16(
+                                        o3tl::clamp(
+                                            equation.nPara[ 2 ], 
sal_Int32(SAL_MIN_INT16),
+                                            sal_Int32(SAL_MAX_INT16)) );
                             }
 
                             AddOpt(DFF_Prop_pFormulas, true, 6, aMemStrm);
commit f4f3e7919de9d632881e3bca5eba9499450bfaf4
Author:     Stephan Bergmann <sberg...@redhat.com>
AuthorDate: Mon Nov 12 21:18:16 2018 +0100
Commit:     Stephan Bergmann <sberg...@redhat.com>
CommitDate: Tue Nov 13 07:26:57 2018 +0100

    Silence -fsanitize=implicit-signed-integer-truncation
    
    ...as happens during CppunitTest_sw_ooxmlimport2:
    
    > filter/source/graphicfilter/itiff/itiff.cxx:866:29: runtime error: 
implicit conversion from type 'int' of value 498 (32-bit, signed) to type 
'sal_uInt8' (aka 'unsigned char') changed the value to 242 (8-bit, unsigned)
    >  #0 in TIFFReader::ConvertScanline(int) at 
filter/source/graphicfilter/itiff/itiff.cxx:866:29 (instdir/program/libgielo.so 
+0x294419)
    >  #1 in TIFFReader::ReadMap() at 
filter/source/graphicfilter/itiff/itiff.cxx:695:19 (instdir/program/libgielo.so 
+0x292291)
    >  #2 in TIFFReader::ReadTIFF(SvStream&, Graphic&) at 
filter/source/graphicfilter/itiff/itiff.cxx:1597:32 
(instdir/program/libgielo.so +0x2ac5c5)
    >  #3 in itiGraphicImport at 
filter/source/graphicfilter/itiff/itiff.cxx:1673:28 
(instdir/program/libgielo.so +0x2af1ed)
    >  #4 in GraphicFilter::ImportGraphic(Graphic&, rtl::OUString const&, 
SvStream&, unsigned short, unsigned short*, GraphicFilterImportFlags, 
com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue>*, 
WmfExternal const*) at vcl/source/filter/graphicfilter.cxx:2031:22 
(instdir/program/libvcllo.so +0x684e246)
    >  #5 in GraphicFilter::ImportGraphic(Graphic&, rtl::OUString const&, 
SvStream&, unsigned short, unsigned short*, GraphicFilterImportFlags, 
WmfExternal const*) at vcl/source/filter/graphicfilter.cxx:1281:12 
(instdir/program/libvcllo.so +0x6845817)
    >  #6 in (anonymous 
namespace)::GraphicProvider::queryGraphic(com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue>
 const&) at vcl/source/graphic/UnoGraphicProvider.cxx:418:33 
(instdir/program/libvcllo.so +0x623ca3a)
    >  #7 in non-virtual thunk to (anonymous 
namespace)::GraphicProvider::queryGraphic(com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue>
 const&) at vcl/source/graphic/UnoGraphicProvider.cxx 
(instdir/program/libvcllo.so +0x62407e2)
    >  #8 in 
oox::GraphicHelper::importGraphic(com::sun::star::uno::Reference<com::sun::star::io::XInputStream>
 const&, WmfExternal const*) const at 
oox/source/helper/graphichelper.cxx:263:39 (instdir/program/libooxlo.so 
+0x2b33a1f)
    >  #9 in oox::GraphicHelper::importEmbeddedGraphic(rtl::OUString const&, 
WmfExternal const*) const at oox/source/helper/graphichelper.cxx:351:24 
(instdir/program/libooxlo.so +0x2b370da)
    >  #10 in 
oox::drawingml::BlipContext::BlipContext(oox::core::ContextHandler2Helper 
const&, oox::AttributeList const&, oox::drawingml::BlipFillProperties&) at 
oox/source/drawingml/misccontexts.cxx:154:72 (instdir/program/libooxlo.so 
+0x23c35e0)
    >  #11 in oox::drawingml::BlipFillContext::onCreateContext(int, 
oox::AttributeList const&) at oox/source/drawingml/misccontexts.cxx:237:24 
(instdir/program/libooxlo.so +0x23c6da4)
    >  #12 in non-virtual thunk to 
oox::drawingml::BlipFillContext::onCreateContext(int, oox::AttributeList 
const&) at oox/source/drawingml/misccontexts.cxx (instdir/program/libooxlo.so 
+0x23c8638)
    >  #13 in oox::core::ContextHandler2Helper::implCreateChildContext(int, 
com::sun::star::uno::Reference<com::sun::star::xml::sax::XFastAttributeList> 
const&) at oox/source/core/contexthandler2.cxx:94:34 
(instdir/program/libooxlo.so +0x1b877e4)
    >  #14 in oox::core::ContextHandler2::createFastChildContext(int, 
com::sun::star::uno::Reference<com::sun::star::xml::sax::XFastAttributeList> 
const&) at oox/source/core/contexthandler2.cxx:191:12 
(instdir/program/libooxlo.so +0x1b8a37c)
    >  #15 in non-virtual thunk to 
oox::core::ContextHandler2::createFastChildContext(int, 
com::sun::star::uno::Reference<com::sun::star::xml::sax::XFastAttributeList> 
const&) at oox/source/core/contexthandler2.cxx (instdir/program/libooxlo.so 
+0x1b8a3c8)
    >  #16 in 
writerfilter::ooxml::OOXMLFastContextHandlerWrapper::lcl_createFastChildContext(int,
 com::sun::star::uno::Reference<com::sun::star::xml::sax::XFastAttributeList> 
const&) at writerfilter/source/ooxml/OOXMLFastContextHandler.cxx:1908:31 
(instdir/program/libwriterfilterlo.so +0x1ade3d6)
    >  #17 in 
writerfilter::ooxml::OOXMLFastContextHandler::createFastChildContext(int, 
com::sun::star::uno::Reference<com::sun::star::xml::sax::XFastAttributeList> 
const&) at writerfilter/source/ooxml/OOXMLFastContextHandler.cxx:208:21 
(instdir/program/libwriterfilterlo.so +0x1aa7c37)
    >  #18 in non-virtual thunk to 
writerfilter::ooxml::OOXMLFastContextHandler::createFastChildContext(int, 
com::sun::star::uno::Reference<com::sun::star::xml::sax::XFastAttributeList> 
const&) at writerfilter/source/ooxml/OOXMLFastContextHandler.cxx 
(instdir/program/libwriterfilterlo.so +0x1aa7ed8)
    >  #19 in (anonymous namespace)::Entity::startElement((anonymous 
namespace)::Event const*) at sax/source/fastparser/fastparser.cxx:439:44 
(instdir/program/libexpwraplo.so +0x24df0c)
    >  #20 in sax_fastparser::FastSaxParserImpl::callbackStartElement(unsigned 
char const*, unsigned char const*, unsigned char const*, int, unsigned char 
const**, int, unsigned char const**) at 
sax/source/fastparser/fastparser.cxx:1254:21 (instdir/program/libexpwraplo.so 
+0x24943f)
    >  #21 in (anonymous namespace)::call_callbackStartElement(void*, unsigned 
char const*, unsigned char const*, unsigned char const*, int, unsigned char 
const**, int, int, unsigned char const**) at 
sax/source/fastparser/fastparser.cxx:310:18 (instdir/program/libexpwraplo.so 
+0x240f8e)
    >  #22 in xmlParseStartTag2 at 
workdir/UnpackedTarball/libxml2/parser.c:9583:6 (instdir/program/libxml2.so.2 
+0x6f8f90)
    >  #23 in xmlParseTryOrFinish at 
workdir/UnpackedTarball/libxml2/parser.c:11342:14 (instdir/program/libxml2.so.2 
+0x73005c)
    >  #24 in xmlParseChunk__internal_alias at 
workdir/UnpackedTarball/libxml2/parser.c:12244:13 (instdir/program/libxml2.so.2 
+0x7241ea)
    >  #25 in sax_fastparser::FastSaxParserImpl::parse() at 
sax/source/fastparser/fastparser.cxx:1061:21 (instdir/program/libexpwraplo.so 
+0x23e2e4)
    >  #26 in 
sax_fastparser::FastSaxParserImpl::parseStream(com::sun::star::xml::sax::InputSource
 const&) at sax/source/fastparser/fastparser.cxx:870:9 
(instdir/program/libexpwraplo.so +0x237beb)
    >  #27 in 
sax_fastparser::FastSaxParser::parseStream(com::sun::star::xml::sax::InputSource
 const&) at sax/source/fastparser/fastparser.cxx:1377:13 
(instdir/program/libexpwraplo.so +0x2528ab)
    >  #28 in 
writerfilter::ooxml::OOXMLDocumentImpl::resolve(writerfilter::Stream&) at 
writerfilter/source/ooxml/OOXMLDocumentImpl.cxx:503:22 
(instdir/program/libwriterfilterlo.so +0x1a69417)
    >  #29 in 
WriterFilter::filter(com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue>
 const&) at writerfilter/source/filter/WriterFilter.cxx:186:24 
(instdir/program/libwriterfilterlo.so +0x1a25e0b)
    >  #30 in SfxObjectShell::ImportFrom(SfxMedium&, 
com::sun::star::uno::Reference<com::sun::star::text::XTextRange> const&) at 
sfx2/source/doc/objstor.cxx:2251:34 (instdir/program/libsfxlo.so +0x38dc7ff)
    >  #31 in SfxObjectShell::DoLoad(SfxMedium*) at 
sfx2/source/doc/objstor.cxx:772:23 (instdir/program/libsfxlo.so +0x38a5979)
    >  #32 in 
SfxBaseModel::load(com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue>
 const&) at sfx2/source/doc/sfxbasemodel.cxx:1795:36 
(instdir/program/libsfxlo.so +0x3a47e1e)
    >  #33 in (anonymous 
namespace)::SfxFrameLoader_Impl::load(com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue>
 const&, com::sun::star::uno::Reference<com::sun::star::frame::XFrame> const&) 
at sfx2/source/view/frmload.cxx:688:28 (instdir/program/libsfxlo.so +0x40c92b0)
    >  #34 in framework::LoadEnv::impl_loadContent() at 
framework/source/loadenv/loadenv.cxx:1149:37 (instdir/program/libfwklo.so 
+0x1521191)
    >  #35 in framework::LoadEnv::startLoading() at 
framework/source/loadenv/loadenv.cxx:383:20 (instdir/program/libfwklo.so 
+0x1511b76)
    >  #36 in 
framework::LoadEnv::loadComponentFromURL(com::sun::star::uno::Reference<com::sun::star::frame::XComponentLoader>
 const&, com::sun::star::uno::Reference<com::sun::star::uno::XComponentContext> 
const&, rtl::OUString const&, rtl::OUString const&, int, 
com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) at 
framework/source/loadenv/loadenv.cxx:169:14 (instdir/program/libfwklo.so 
+0x150d828)
    >  #37 in framework::Desktop::loadComponentFromURL(rtl::OUString const&, 
rtl::OUString const&, int, 
com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) at 
framework/source/services/desktop.cxx:619:12 (instdir/program/libfwklo.so 
+0x167057e)
    >  #38 in non-virtual thunk to 
framework::Desktop::loadComponentFromURL(rtl::OUString const&, rtl::OUString 
const&, int, 
com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) at 
framework/source/services/desktop.cxx (instdir/program/libfwklo.so +0x167078a)
    >  #39 in unotest::MacrosTest::loadFromDesktop(rtl::OUString const&, 
rtl::OUString const&, 
com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) at 
unotest/source/cpp/macros_test.cxx:50:60 
(workdir/LinkTarget/CppunitTest/../Library/libunotest.so +0x8f176)
    >  #40 in SwModelTestBase::loadURL(rtl::OUString const&, char const*, char 
const*) at sw/qa/extras/inc/swmodeltestbase.hxx:762:23 
(workdir/LinkTarget/CppunitTest/libtest_sw_ooxmlimport2.so +0x1256b1)
    >  #41 in SwModelTestBase::load(rtl::OUString const&, char const*, char 
const*) at sw/qa/extras/inc/swmodeltestbase.hxx:717:16 
(workdir/LinkTarget/CppunitTest/libtest_sw_ooxmlimport2.so +0x123fd6)
    >  #42 in SwModelTestBase::executeImportTest(char const*, char const*) at 
sw/qa/extras/inc/swmodeltestbase.hxx:264:13 
(workdir/LinkTarget/CppunitTest/libtest_sw_ooxmlimport2.so +0x1236bf)
    >  #43 in testTdf115094::Import() at 
sw/qa/extras/ooxmlimport/ooxmlimport2.cxx:226:1 
(workdir/LinkTarget/CppunitTest/libtest_sw_ooxmlimport2.so +0x18e87d)
    [...]
    
    Change-Id: I04bf52ac9ee45d5bfefe2a406d9c601112baeef9
    Reviewed-on: https://gerrit.libreoffice.org/63307
    Tested-by: Jenkins
    Reviewed-by: Stephan Bergmann <sberg...@redhat.com>

diff --git a/filter/source/graphicfilter/itiff/itiff.cxx 
b/filter/source/graphicfilter/itiff/itiff.cxx
index a2b8ddb06ae8..d2bb00e3720f 100644
--- a/filter/source/graphicfilter/itiff/itiff.cxx
+++ b/filter/source/graphicfilter/itiff/itiff.cxx
@@ -863,13 +863,16 @@ bool TIFFReader::ConvertScanline(sal_Int32 nY)
                 sal_uInt8  nLAlpha = 0;
                 for (sal_Int32 nx = 0; nx < nImageWidth; nx++, pt += 
nSamplesPerPixel)
                 {
-                    nLRed = nLRed + pt[ 0 ];
-                    nLGreen = nLGreen + pt[ 1 ];
-                    nLBlue = nLBlue + pt[ 2 ];
+                    // The following computations rely on sal_uInt8 
wrap-around when adding the
+                    // (unsigned) pt deltas; the "& 0xFF" is only conceptual, 
but helps prevent
+                    // sanitizer warnings:
+                    nLRed = (nLRed + pt[ 0 ]) & 0xFF;
+                    nLGreen = (nLGreen + pt[ 1 ]) & 0xFF;
+                    nLBlue = (nLBlue + pt[ 2 ]) & 0xFF;
                     SetPixel(nY, nx, Color(nLRed, nLGreen, nLBlue));
                     if (HasAlphaChannel())
                     {
-                        nLAlpha = nLAlpha + pt[ 3 ];
+                        nLAlpha = (nLAlpha + pt[ 3 ]) & 0xFF;
                         SetPixelAlpha(nY, nx, ~nLAlpha);
                     }
                 }
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to