From 9d6cd8b210677d426371defea57013edd4206c6a Mon Sep 17 00:00:00 2001 From: Rene Gollent Date: Thu, 11 Dec 2014 22:09:37 -0500 Subject: [PATCH] Debugger: Minor fix to CLanguageTokenizer. - Properly differentiate the size of a parsed hex constant in order to return a correspondingly sized primitive, rather than always returning as 64-bit. --- .../source_language/c_family/CLanguageTokenizer.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/apps/debugger/source_language/c_family/CLanguageTokenizer.cpp b/src/apps/debugger/source_language/c_family/CLanguageTokenizer.cpp index c8398272be..d5e15ef2ec 100644 --- a/src/apps/debugger/source_language/c_family/CLanguageTokenizer.cpp +++ b/src/apps/debugger/source_language/c_family/CLanguageTokenizer.cpp @@ -441,8 +441,15 @@ Tokenizer::_ParseHexOperand() fCurrentToken = Token(begin, length, _CurrentPos() - length, TOKEN_CONSTANT); - fCurrentToken.value.SetTo((int64)strtoull( + if (length <= 10) { + // including the leading 0x, a 32-bit constant will be at most + // 10 characters. Anything larger, and 64 is necessary. + fCurrentToken.value.SetTo((uint32)strtoul( fCurrentToken.string.String(), NULL, 16)); + } else { + fCurrentToken.value.SetTo((uint64)strtoull( + fCurrentToken.string.String(), NULL, 16)); + } return fCurrentToken; }