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

Reply via email to