diff options
Diffstat (limited to 'sax/source/tools/converter.cxx')
-rw-r--r-- | sax/source/tools/converter.cxx | 32 |
1 files changed, 17 insertions, 15 deletions
diff --git a/sax/source/tools/converter.cxx b/sax/source/tools/converter.cxx index 8c59586cea38..de2c66dc7435 100644 --- a/sax/source/tools/converter.cxx +++ b/sax/source/tools/converter.cxx @@ -899,27 +899,26 @@ void Converter::convertDouble( OUStringBuffer& rBuffer, double fNumber) bool Converter::convertDouble(double& rValue, std::u16string_view rString, sal_Int16 nSourceUnit, sal_Int16 nTargetUnit) { - rtl_math_ConversionStatus eStatus; - rValue = ::rtl::math::stringToDouble( rString, '.', ',', &eStatus ); - - if(eStatus == rtl_math_ConversionStatus_Ok) - { - OUStringBuffer sUnit; - // fdo#48969: switch source and target because factor is used to divide! - double const fFactor = - GetConversionFactor(sUnit, nTargetUnit, nSourceUnit); - if(fFactor != 1.0 && fFactor != 0.0) - rValue /= fFactor; - } + if (!convertDouble(rValue, rString)) + return false; - return ( eStatus == rtl_math_ConversionStatus_Ok ); + OUStringBuffer sUnit; + // fdo#48969: switch source and target because factor is used to divide! + double const fFactor = + GetConversionFactor(sUnit, nTargetUnit, nSourceUnit); + if(fFactor != 1.0 && fFactor != 0.0) + rValue /= fFactor; + return true; } /** convert string to double number (using ::rtl::math) */ bool Converter::convertDouble(double& rValue, std::u16string_view rString) { rtl_math_ConversionStatus eStatus; - rValue = ::rtl::math::stringToDouble( rString, '.', ',', &eStatus ); + rValue = rtl_math_uStringToDouble(rString.data(), + rString.data() + rString.size(), + /*cDecSeparator*/'.', /*cGroupSeparator*/',', + &eStatus, nullptr); return ( eStatus == rtl_math_ConversionStatus_Ok ); } @@ -927,7 +926,10 @@ bool Converter::convertDouble(double& rValue, std::u16string_view rString) bool Converter::convertDouble(double& rValue, std::string_view rString) { rtl_math_ConversionStatus eStatus; - rValue = ::rtl::math::stringToDouble( rString, '.', ',', &eStatus ); + rValue = rtl_math_stringToDouble(rString.data(), + rString.data() + rString.size(), + /*cDecSeparator*/'.', /*cGroupSeparator*/',', + &eStatus, nullptr); return ( eStatus == rtl_math_ConversionStatus_Ok ); } |