sd/source/filter/eppt/eppt.hxx | 2 +- sd/source/filter/eppt/epptso.cxx | 10 ++++++---- 2 files changed, 7 insertions(+), 5 deletions(-)
New commits: commit 6bca1cd1e47039878684105db537a120a39c3675 Author: Stephan Bergmann <sberg...@redhat.com> Date: Fri Jun 10 18:30:49 2016 +0200 css.presentation.PresentationOrder is of UNO type LONG ...i.e., sal_Int32, so cannot be read by casting the Any's value to sal_uInt16. When writing out to PPT format, silently clamp the sal_Int32 to the sal_uInt16 range. Change-Id: If428f54f19c347a59719bc457c28a68053b7a9ef diff --git a/sd/source/filter/eppt/eppt.hxx b/sd/source/filter/eppt/eppt.hxx index ed901c0..4f6958c 100644 --- a/sd/source/filter/eppt/eppt.hxx +++ b/sd/source/filter/eppt/eppt.hxx @@ -238,7 +238,7 @@ class PPTWriter : public PPTWriterBase, public PPTExBulletProvider void ImplWriteObjectEffect( SvStream& rSt, css::presentation::AnimationEffect eEffect, css::presentation::AnimationEffect eTextEffect, - sal_uInt16 nOrder ); + sal_Int32 nOrder ); void ImplWriteClickAction( SvStream& rSt, css::presentation::ClickAction eAction, bool bMediaClickAction ); void ImplWriteParagraphs( SvStream& rOutStrm, TextObj& rTextObj ); void ImplWritePortions( SvStream& rOutStrm, TextObj& rTextObj ); diff --git a/sd/source/filter/eppt/epptso.cxx b/sd/source/filter/eppt/epptso.cxx index 529be00..b397775 100644 --- a/sd/source/filter/eppt/epptso.cxx +++ b/sd/source/filter/eppt/epptso.cxx @@ -21,6 +21,8 @@ #include <cstdlib> +#include <basegfx/numeric/ftools.hxx> +#include <o3tl/any.hxx> #include <osl/endian.h> #include <eppt.hxx> #include "text.hxx" @@ -1380,7 +1382,7 @@ void PPTWriter::ImplWriteTextStyleAtom( SvStream& rOut, int nTextInstance, sal_u void PPTWriter::ImplWriteObjectEffect( SvStream& rSt, css::presentation::AnimationEffect eAe, css::presentation::AnimationEffect eTe, - sal_uInt16 nOrder ) + sal_Int32 nOrder ) { EscherExContainer aAnimationInfo( rSt, EPP_AnimationInfo ); EscherExAtom aAnimationInfoAtom( rSt, EPP_AnimationInfoAtom, 0, 1 ); @@ -1888,7 +1890,7 @@ void PPTWriter::ImplWriteObjectEffect( SvStream& rSt, nDimColor = EscherEx::GetColor( *static_cast<sal_uInt32 const *>(mAny.getValue()) ) | 0xfe000000; rSt.WriteUInt32( nDimColor ).WriteUInt32( nFlags ).WriteUInt32( nSoundRef ).WriteUInt32( nDelayTime ) - .WriteUInt16( nOrder ) // order of build ( 1.. ) + .WriteUInt16( basegfx::clamp<sal_Int32>(nOrder, 0, SAL_MAX_UINT16) ) // order of build ( 1.. ) .WriteUInt16( nSlideCount ).WriteUChar( nBuildType ).WriteUChar( nFlyMethod ).WriteUChar( nFlyDirection ) .WriteUChar( nAfterEffect ).WriteUChar( nSubEffect ).WriteUChar( nOleVerb ) .WriteUInt16( 0 ); // PadWord @@ -2155,7 +2157,7 @@ void PPTWriter::ImplWritePage( const PHLayout& rLayout, EscherSolverContainer& a // sal_uInt32 nGroupLevel = 0; sal_uInt32 nInstance, nGroups, nShapes, nShapeCount, nPer, nLastPer, nIndices, nOlePictureId; - sal_uInt16 nEffectCount; + sal_Int32 nEffectCount; css::awt::Point aTextRefPoint; ResetGroupTable( nShapes = mXShapes->getCount() ); @@ -2205,7 +2207,7 @@ void PPTWriter::ImplWritePage( const PHLayout& rLayout, EscherSolverContainer& a css::presentation::AnimationEffect eTe; if ( ImplGetPropertyValue( "PresentationOrder" ) ) - nEffectCount = *static_cast<sal_uInt16 const *>(mAny.getValue()); + nEffectCount = *o3tl::doAccess<sal_Int32>(mAny); bool bEffect = ImplGetEffect( mXPropSet, eAe, eTe, bIsSound ); css::presentation::ClickAction eCa = css::presentation::ClickAction_NONE; _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits