From 534d20121c387258ea46b1eab47f99fea448cad9 Mon Sep 17 00:00:00 2001 From: Brian Fiete Date: Tue, 26 May 2020 08:22:26 -0700 Subject: [PATCH] Hex long fix --- IDEHelper/Compiler/BfParser.cpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/IDEHelper/Compiler/BfParser.cpp b/IDEHelper/Compiler/BfParser.cpp index f5bdcca7..c2bb796d 100644 --- a/IDEHelper/Compiler/BfParser.cpp +++ b/IDEHelper/Compiler/BfParser.cpp @@ -2407,7 +2407,7 @@ void BfParser::NextToken(int endIdx) val = -val; if ((numberBase == 0x10) && - ((hexDigits == 16) || ((hadSeps) && (hexDigits > 8)) || ((hadLeadingHexSep) && (hexDigits == 8)))) + ((hexDigits >= 16) || ((hadSeps) && (hexDigits > 8)) || ((hadLeadingHexSep) && (hexDigits == 8)))) { if (hexDigits > 16) mPassInstance->FailAt("Too many hex digits for int64", mSourceData, mTokenStart, mSrcIdx - mTokenStart); @@ -2516,8 +2516,11 @@ void BfParser::NextToken(int endIdx) if (val != 0) signMatched = (val < 0) == wasNeg; - if (hexDigits > 16) - mPassInstance->FailAt("Too many hex digits for int64", mSourceData, mTokenStart, mSrcIdx - mTokenStart); + if (numberBase == 0x10) + { + if (hexDigits > 16) + mPassInstance->FailAt("Too many hex digits for int64", mSourceData, mTokenStart, mSrcIdx - mTokenStart); + } else if ((hadOverflow) || (!signMatched)) mPassInstance->FailAt("Value doesn't fit into int64", mSourceData, mTokenStart, mSrcIdx - mTokenStart); mSyntaxToken = BfSyntaxToken_Literal;