diff options
author | Noel Power <noel.power@suse.com> | 2013-08-19 16:58:07 +0100 |
---|---|---|
committer | Noel Power <noel.power@suse.com> | 2013-08-20 08:59:54 +0100 |
commit | 4c9a08e78b6e2c5d19628281bd4141c268299bea (patch) | |
tree | 4262ec84b904c49a878f12bed16a01ba12f7c5b4 /basic/source/comp/scanner.cxx | |
parent | 2d95a1bfd6e0adff791d9e381f0ec37470312522 (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/comp/scanner.cxx')
-rw-r--r-- | basic/source/comp/scanner.cxx | 4 |
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)) |