basic/source/runtime/methods.cxx | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-)
New commits: commit ec5bbc9a98e5648d88524b4e5d6a2a40ba65e5cd Author: Mike Kaganski <mike.kagan...@collabora.com> AuthorDate: Sat Mar 29 16:44:15 2025 +0100 Commit: Mike Kaganski <mike.kagan...@collabora.com> CommitDate: Sat Mar 29 21:10:37 2025 +0100 Simplify Val function implementation Use o3tl::toInt64 instead of strtol, which required string conversion. Change-Id: Ie7571834e8a126963899f340230baa14e3353b4b Reviewed-on: https://gerrit.libreoffice.org/c/core/+/183489 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kagan...@collabora.com> diff --git a/basic/source/runtime/methods.cxx b/basic/source/runtime/methods.cxx index be58a5064609..688dbf64fe56 100644 --- a/basic/source/runtime/methods.cxx +++ b/basic/source/runtime/methods.cxx @@ -1527,28 +1527,20 @@ void SbRtl_Val(StarBASIC *, SbxArray & rPar, bool) return StarBASIC::Error(ERRCODE_BASIC_BAD_ARGUMENT); } double nResult = 0.0; - char* pEndPtr; OUString aStr(rPar.Get(1)->GetOUString()); FilterWhiteSpace( aStr ); if ( aStr.getLength() > 1 && aStr[0] == '&' ) { - int nRadix = 10; - char aChar = static_cast<char>(aStr[1]); + sal_Unicode aChar = aStr[1]; if ( aChar == 'h' || aChar == 'H' ) { - nRadix = 16; + nResult = static_cast<sal_Int16>(o3tl::toInt64(aStr.subView(2), 16)); } else if ( aChar == 'o' || aChar == 'O' ) { - nRadix = 8; - } - if ( nRadix != 10 ) - { - OString aByteStr(OUStringToOString(aStr, osl_getThreadTextEncoding())); - sal_Int16 nlResult = static_cast<sal_Int16>(strtol( aByteStr.getStr()+2, &pEndPtr, nRadix)); - nResult = static_cast<double>(nlResult); + nResult = static_cast<sal_Int16>(o3tl::toInt64(aStr.subView(2), 8)); } } else