sc/source/filter/excel/xltools.cxx | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-)
New commits: commit 413210a5036486dc1777565c3c69b2eda68b3f93 Author: Stephan Bergmann <sberg...@redhat.com> Date: Thu Oct 23 15:27:37 2014 +0200 Avoid left shift of negative values (ubsan) Change-Id: Ie4f6a4e3e54770c00741cc268ed9e27ecafac500 diff --git a/sc/source/filter/excel/xltools.cxx b/sc/source/filter/excel/xltools.cxx index 38b6dd0..3c6d0f2 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<sal_Int32>( + static_cast<sal_uInt32>(static_cast<sal_Int32>(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<sal_Int32>( + static_cast<sal_uInt32>(static_cast<sal_Int32>(fInt)) << 2) + | EXC_RK_INT100; return true; } _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits