[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