diff options
Diffstat (limited to 'sc/source/filter/excel')
-rw-r--r-- | sc/source/filter/excel/xltools.cxx | 14 |
1 files changed, 8 insertions, 6 deletions
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<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; } |