From cf4fe9994cba2ad14650b88041f4512be7cf4b3f Mon Sep 17 00:00:00 2001 From: CUB3D Date: Wed, 11 Mar 2026 15:16:42 +0000 Subject: [PATCH] Changes from review --- .../javacc/ghidra/app/util/cparser/C/C.jj | 35 +++++++++++-------- 1 file changed, 21 insertions(+), 14 deletions(-) diff --git a/Ghidra/Features/Base/src/main/javacc/ghidra/app/util/cparser/C/C.jj b/Ghidra/Features/Base/src/main/javacc/ghidra/app/util/cparser/C/C.jj index d990cff022..2f77357ae0 100644 --- a/Ghidra/Features/Base/src/main/javacc/ghidra/app/util/cparser/C/C.jj +++ b/Ghidra/Features/Base/src/main/javacc/ghidra/app/util/cparser/C/C.jj @@ -1079,11 +1079,11 @@ SKIP : TOKEN : { ( "ull" | "ULL" | "ul" | "UL" | "ll" | "LL" | "l" | "L" | "U" | "u" | "i64" | "I64")? ("i")? ( ["0"-"9"] )* + ("u"|"U")? ("ll"|"LL"|"l"|"L")? (("i"|"I") ("8"|"16"|"32"|"64"|"128"))? | - ( "ull" | "ULL" | "ul" | "UL" | "ll" | "LL" | "l" | "L" | "U" | "u" | "i64" | "I64")? ("i")? ( ["0"-"9"] )* + ("u"|"U")? ("ll"|"LL"|"l"|"L")? (("i"|"I") ("8"|"16"|"32"|"64"|"128"))? | - ( "ull" | "ULL" | "ul" | "UL" | "ll" | "LL" | "l" | "L" | "U" | "u" | "i64" | "I64")? ("i")? ( ["0"-"9"] )* + ("u"|"U")? ("ll"|"LL"|"l"|"L")? (("i"|"I") ("8"|"16"|"32"|"64"|"128"))? > | <#DECIMAL_LITERAL : [ "1"-"9" ] ( [ "0"-"9" ] )*> @@ -3079,39 +3079,46 @@ Object Constant() : { ( t = { - String sval = t.image; - if (sval.endsWith("i8") || sval.endsWith("I8")) { + String sval = t.image.toLowerCase(); + if (sval.endsWith("i8")) { sval = sval.substring(0,sval.length()-2); } - else if (sval.endsWith("i16") || sval.endsWith("I16")) { + else if (sval.endsWith("i16")) { sval = sval.substring(0,sval.length()-3); } - else if (sval.endsWith("i32") || sval.endsWith("I32")) { + else if (sval.endsWith("i32")) { sval = sval.substring(0,sval.length()-3); } - else if (sval.endsWith("i64") || sval.endsWith("I64")) { + else if (sval.endsWith("i64")) { sval = sval.substring(0,sval.length()-3); } + else if (sval.endsWith("i128")) { + sval = sval.substring(0,sval.length()-4); + } - if (sval.endsWith("ull") || sval.endsWith("ULL")) { + if (sval.endsWith("ull")) { sval = sval.substring(0,sval.length()-3); } - else if (sval.endsWith("ll") || sval.endsWith("LL")) { + else if (sval.endsWith("ll")) { sval = sval.substring(0,sval.length()-2); } - else if (sval.endsWith("ul") || sval.endsWith("UL")) { + else if (sval.endsWith("ul")) { sval = sval.substring(0,sval.length()-2); } - else if (sval.endsWith("l") || sval.endsWith("L")) { + else if (sval.endsWith("l")) { sval = sval.substring(0,sval.length()-1); } - else if (sval.endsWith("u") || sval.endsWith("U")) { + else if (sval.endsWith("u")) { sval = sval.substring(0,sval.length()-1); } - if (sval.startsWith("0x") || sval.startsWith("0X")) { + if (sval.startsWith("0x")) { BigInteger bigConst = new BigInteger(sval.substring(2), 16); obj = Long.valueOf(bigConst.longValue()); } + else if (sval.startsWith("0") && sval.length() > 1) { + BigInteger bigConst = new BigInteger(sval.substring(1), 8); + obj = Long.valueOf(bigConst.longValue()); + } else { BigInteger bigConst = new BigInteger(sval); obj = Long.valueOf(bigConst.longValue());