summaryrefslogtreecommitdiff
path: root/oox
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2018-03-19 16:31:38 +0000
committerCaolán McNamara <caolanm@redhat.com>2018-03-21 00:22:43 +0100
commitdfc2e9be0948ca72f858197392921f5bb27f605b (patch)
treeaef79308db2505366aa3de433861e3d59adff4f2 /oox
parent2dadf90aa7bb03d895abc05ec93ca116eb9bacbd (diff)
ofz#7012 Integer-overflow
and fix negative rounding code, which results in changing tet of from -996 to -1002 which is closer to the original -1000 Change-Id: Ie992e61bf4d14d0cd4194e773479feba96b6d68e Reviewed-on: https://gerrit.libreoffice.org/51576 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Caolán McNamara <caolanm@redhat.com> Tested-by: Caolán McNamara <caolanm@redhat.com>
Diffstat (limited to 'oox')
-rw-r--r--oox/source/drawingml/drawingmltypes.cxx10
1 files changed, 7 insertions, 3 deletions
diff --git a/oox/source/drawingml/drawingmltypes.cxx b/oox/source/drawingml/drawingmltypes.cxx
index cda9c1c61817..93c7c423330f 100644
--- a/oox/source/drawingml/drawingmltypes.cxx
+++ b/oox/source/drawingml/drawingmltypes.cxx
@@ -90,14 +90,18 @@ float GetTextSize( const OUString& sValue )
sal_Int32 GetTextSpacingPoint( const OUString& sValue )
{
sal_Int32 nRet;
- if( ::sax::Converter::convertNumber( nRet, sValue ) )
+ if( ::sax::Converter::convertNumber( nRet, sValue, (SAL_MIN_INT32 + 360) / 254, (SAL_MAX_INT32 - 360) / 254 ) )
nRet = GetTextSpacingPoint( nRet );
return nRet;
}
-sal_Int32 GetTextSpacingPoint( const sal_Int32 nValue )
+sal_Int32 GetTextSpacingPoint(sal_Int32 nValue)
{
- return ( nValue * 254 + 360 ) / 720;
+ if (nValue > 0)
+ nValue = (nValue * 254 + 360);
+ else if (nValue < 0)
+ nValue = (nValue * 254 - 360);
+ return nValue / 720;
}
float GetFontHeight( sal_Int32 nHeight )