From 413210a5036486dc1777565c3c69b2eda68b3f93 Mon Sep 17 00:00:00 2001 From: Stephan Bergmann Date: Thu, 23 Oct 2014 15:27:37 +0200 Subject: Avoid left shift of negative values (ubsan) Change-Id: Ie4f6a4e3e54770c00741cc268ed9e27ecafac500 --- sc/source/filter/excel/xltools.cxx | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) (limited to 'sc/source/filter/excel') diff --git a/sc/source/filter/excel/xltools.cxx b/sc/source/filter/excel/xltools.cxx index 38b6dd07bed9..3c6d0f27e34f 100644 --- a/sc/source/filter/excel/xltools.cxx +++ b/sc/source/filter/excel/xltools.cxx @@ -135,9 +135,10 @@ bool XclTools::GetRKFromDouble( sal_Int32& rnRKValue, double fValue ) fFrac = modf( fValue, &fInt ); if( (fFrac == 0.0) && (fInt >= -536870912.0) && (fInt <= 536870911.0) ) // 2^29 { - rnRKValue = static_cast< sal_Int32 >( fInt ); - rnRKValue <<= 2; - rnRKValue |= EXC_RK_INT; + rnRKValue + = static_cast( + static_cast(static_cast(fInt)) << 2) + | EXC_RK_INT; return true; } @@ -145,9 +146,10 @@ bool XclTools::GetRKFromDouble( sal_Int32& rnRKValue, double fValue ) fFrac = modf( fValue * 100.0, &fInt ); if( (fFrac == 0.0) && (fInt >= -536870912.0) && (fInt <= 536870911.0) ) { - rnRKValue = static_cast< sal_Int32 >( fInt ); - rnRKValue <<= 2; - rnRKValue |= EXC_RK_INT100; + rnRKValue + = static_cast( + static_cast(static_cast(fInt)) << 2) + | EXC_RK_INT100; return true; } -- cgit