[Libreoffice-commits] core.git: Branch 'libreoffice-4-1' - basic/qa basic/source

Noel Power noel.power at suse.com
Tue Aug 20 04:26:41 PDT 2013


 basic/qa/basic_coverage/test_hexliteral_negIntLimit-2.vb |   18 +++++++++++++++
 basic/qa/basic_coverage/test_hexliteral_negIntLimit.vb   |   18 +++++++++++++++
 basic/qa/basic_coverage/test_hexliteral_posIntLimit.vb   |   18 +++++++++++++++
 basic/qa/basic_coverage/test_hexliteral_zeroIntLimit.vb  |   18 +++++++++++++++
 basic/source/comp/scanner.cxx                            |    4 ++-
 5 files changed, 75 insertions(+), 1 deletion(-)

New commits:
commit 3c3c0c589a5b51797c1b751c712e9fa053ad921f
Author: Noel Power <noel.power at suse.com>
Date:   Mon Aug 19 16:58:07 2013 +0100

    fix for fdo#62323 bad conversion of Hex strings for certain values
    
    Basic hex literals are basic Integer ( e.g. 4 byte ) types with
    -2,147,483,648 through 2,147,483,647 range. Interally the scanner
    was using a long to form/scan the literal, this led to bad behaviour
    on 64bit linux ( where normally long -> 8 bytes )
    
    (cherry picked from commit 4c9a08e78b6e2c5d19628281bd4141c268299bea)
    
    and squash of
    fix for fdo#62323 fix duplicated and wrong tests
    
    Change-Id: I73dc238f7de59367a0a9d00e5421ea6675b4f556
    (cherry picked from commit fbf8ae82411d56189f844f9f00ccc6cf6b0827bf)
    Reviewed-on: https://gerrit.libreoffice.org/5526
    Reviewed-by: Eike Rathke <erack at redhat.com>
    Tested-by: Eike Rathke <erack at redhat.com>

diff --git a/basic/qa/basic_coverage/test_hexliteral_negIntLimit-2.vb b/basic/qa/basic_coverage/test_hexliteral_negIntLimit-2.vb
new file mode 100644
index 0000000..c660486
--- /dev/null
+++ b/basic/qa/basic_coverage/test_hexliteral_negIntLimit-2.vb
@@ -0,0 +1,18 @@
+'
+' 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/.
+'
+
+
+Function doUnitTest as Integer
+  Dim lngDecimal as Long
+  lngDecimal = Clng(&H80000000)
+  If lngDecimal = -2147483648 Then
+     doUnitTest = 1
+  Else
+     doUnitTest = 0
+  End If
+End Function
diff --git a/basic/qa/basic_coverage/test_hexliteral_negIntLimit.vb b/basic/qa/basic_coverage/test_hexliteral_negIntLimit.vb
new file mode 100644
index 0000000..f33d74c
--- /dev/null
+++ b/basic/qa/basic_coverage/test_hexliteral_negIntLimit.vb
@@ -0,0 +1,18 @@
+'
+' 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/.
+'
+
+
+Function doUnitTest as Integer
+  Dim lngDecimal as Long
+  lngDecimal = Clng(&HFFFFFFFF)
+  If lngDecimal = -1 Then
+     doUnitTest = 1
+  Else
+     doUnitTest = 0
+  End If
+End Function
diff --git a/basic/qa/basic_coverage/test_hexliteral_posIntLimit.vb b/basic/qa/basic_coverage/test_hexliteral_posIntLimit.vb
new file mode 100644
index 0000000..a03dadc
--- /dev/null
+++ b/basic/qa/basic_coverage/test_hexliteral_posIntLimit.vb
@@ -0,0 +1,18 @@
+'
+' 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/.
+'
+
+
+Function doUnitTest as Integer
+  Dim lngDecimal as Long
+  lngDecimal = Clng(&H7FFFFFFF)
+  If lngDecimal = 2147483647 Then
+     doUnitTest = 1
+  Else
+     doUnitTest = 0
+  End If
+End Function
diff --git a/basic/qa/basic_coverage/test_hexliteral_zeroIntLimit.vb b/basic/qa/basic_coverage/test_hexliteral_zeroIntLimit.vb
new file mode 100644
index 0000000..1a02bde
--- /dev/null
+++ b/basic/qa/basic_coverage/test_hexliteral_zeroIntLimit.vb
@@ -0,0 +1,18 @@
+'
+' 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/.
+'
+
+
+Function doUnitTest as Integer
+  Dim lngDecimal as Long
+  lngDecimal = Clng(&H0)
+  If lngDecimal = 0 Then
+     doUnitTest = 1
+  Else
+     doUnitTest = 0
+  End If
+End Function
diff --git a/basic/source/comp/scanner.cxx b/basic/source/comp/scanner.cxx
index 728187c..b59e22a 100644
--- a/basic/source/comp/scanner.cxx
+++ b/basic/source/comp/scanner.cxx
@@ -413,7 +413,9 @@ bool SbiScanner::NextSym()
                 return true;
         }
         bNumber = true;
-        long l = 0;
+        // Hex literals are signed Integers ( as defined by basic
+        // e.g. -2,147,483,648 through 2,147,483,647 (signed)
+        sal_Int32 l = 0;
         int i;
         bool bBufOverflow = false;
         while(nCol < aLine.getLength() &&  theBasicCharClass::get().isAlphaNumeric(aLine[nCol] & 0xFF, bCompatible))


More information about the Libreoffice-commits mailing list