summaryrefslogtreecommitdiff
path: root/basic/source
diff options
context:
space:
mode:
authorNoel Power <noel.power@suse.com>2013-08-19 16:58:07 +0100
committerNoel Power <noel.power@suse.com>2013-08-20 08:59:54 +0100
commit4c9a08e78b6e2c5d19628281bd4141c268299bea (patch)
tree4262ec84b904c49a878f12bed16a01ba12f7c5b4 /basic/source
parent2d95a1bfd6e0adff791d9e381f0ec37470312522 (diff)
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 ) Change-Id: I1d0fcc55ed0eda636da1445329737d1684e69f33
Diffstat (limited to 'basic/source')
-rw-r--r--basic/source/comp/scanner.cxx4
1 files changed, 3 insertions, 1 deletions
diff --git a/basic/source/comp/scanner.cxx b/basic/source/comp/scanner.cxx
index 728187ce0fda..b59e22ac263c 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))