basic/qa/basic_coverage/test_cdbl_method.bas |   42 +++++++++++++++++----------
 basic/qa/vba_tests/cdbl.vb                   |    5 +++
 basic/source/sbx/sbxscan.cxx                 |    3 +
 3 files changed, 35 insertions(+), 15 deletions(-)

New commits:
commit c3d14dcbd83c96610f1c9acd1bfb95c8dbd05be1
Author:     Andreas Heinisch <andreas.heini...@yahoo.de>
AuthorDate: Mon Feb 7 22:02:30 2022 +0100
Commit:     Xisco Fauli <xiscofa...@libreoffice.org>
CommitDate: Wed Feb 9 12:49:01 2022 +0100

    tdf#146672 - CDbl: skip spaces and tabs at the end of the scanned string
    
    Change-Id: Ib7a4e8c7145b549a5327de23549d39d11f8590cf
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/129648
    Tested-by: Jenkins
    Reviewed-by: Andreas Heinisch <andreas.heini...@yahoo.de>
    (cherry picked from commit a79e7dc9e8097c199e91288027861e3883e14d1b)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/129620
    Reviewed-by: Xisco Fauli <xiscofa...@libreoffice.org>

diff --git a/basic/qa/basic_coverage/test_cdbl_method.bas 
b/basic/qa/basic_coverage/test_cdbl_method.bas
index 1c7837fcaa4b..e44c23456ff1 100644
--- a/basic/qa/basic_coverage/test_cdbl_method.bas
+++ b/basic/qa/basic_coverage/test_cdbl_method.bas
@@ -1,18 +1,30 @@
-'
-' This file is part of the LibreOffice project.
-'
-' This Source Code Form is subject to the terms of the Mozilla Public
-' License, v. 2.0. If a copy of the MPL was not distributed with this
-' file, You can obtain one at http://mozilla.org/MPL/2.0/.
-'
+'
+' This file is part of the LibreOffice project.
+'
+' This Source Code Form is subject to the terms of the Mozilla Public
+' License, v. 2.0. If a copy of the MPL was not distributed with this
+' file, You can obtain one at http://mozilla.org/MPL/2.0/.
+'
+
+Option Explicit
 
-Option Explicit
+Function doUnitTest() As String
+    TestUtil.TestInit
+    verify_testCdbl
+    doUnitTest = TestUtil.GetResult()
+End Function
+
+Sub verify_testCdbl
+    On Error GoTo errorHandler
 
-Function doUnitTest as String
     ' CDBL
-    If (CDbl("100") <> 100) Then
-        doUnitTest = "FAIL"
-    Else
-        doUnitTest = "OK"
-    End If
-End Function
+    TestUtil.AssertEqual(CDbl("100"), 100, "CDbl(""100"")")
+
+    ' tdf#146672 - skip spaces and tabs at the end of the scanned string
+    TestUtil.AssertEqual(CDbl("28.8 "), 28.8, "CDbl(""28.8 "")")
+    TestUtil.AssertEqual(CDbl("28.8    "), 28.8, "CDbl(""28.8  "")")
+
+    Exit Sub
+errorHandler:
+    TestUtil.ReportErrorHandler("verify_testCdbl", Err, Error$, Erl)
+End Sub
diff --git a/basic/qa/vba_tests/cdbl.vb b/basic/qa/vba_tests/cdbl.vb
index f29271f082d6..8a7d09cd5a2e 100644
--- a/basic/qa/vba_tests/cdbl.vb
+++ b/basic/qa/vba_tests/cdbl.vb
@@ -23,6 +23,11 @@ Sub verify_testCdbl()
     TestUtil.AssertEqual(CDbl(0.005 * 0.01),      0.00005,         "CDbl(0.005 
* 0.01)")
     TestUtil.AssertEqual(CDbl("20"),             20,               
"CDbl(""20"")")
 
+
+    ' tdf#146672 - skip spaces and tabs at the end of the scanned string
+    TestUtil.AssertEqual(CDbl("28.8 "), 28.8, "CDbl(""28.8 "")")
+    TestUtil.AssertEqual(CDbl("28.8    "), 28.8, "CDbl(""28.8  "")")
+
     Exit Sub
 errorHandler:
     TestUtil.ReportErrorHandler("verify_testCdbl", Err, Error$, Erl)
diff --git a/basic/source/sbx/sbxscan.cxx b/basic/source/sbx/sbxscan.cxx
index a496a51d6ccb..5fb56ba1d8fd 100644
--- a/basic/source/sbx/sbxscan.cxx
+++ b/basic/source/sbx/sbxscan.cxx
@@ -268,6 +268,9 @@ ErrCode ImpScan( const OUString& rWSrc, double& nVal, 
SbxDataType& rType,
         return ERRCODE_BASIC_CONVERSION;
     }
 #endif
+    // tdf#146672 - skip whitespaces and tabs at the end of the scanned string
+    while (*p == ' ' || *p == '\t')
+        p++;
     if( pLen )
         *pLen = static_cast<sal_uInt16>( p - pStart );
     if( !bRes )

Reply via email to