aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Tromey <tromey@adacore.com>2024-03-14 12:28:26 -0600
committerTom Tromey <tromey@adacore.com>2024-04-02 11:24:27 -0600
commit0298128e07b7e58f93d745b657413e41766de3cb (patch)
tree36760f4ae49e125e566cc34bc4a3fd930c36e526
parent33a03c121318b64b89f0e161bef638a7ab190e7a (diff)
downloadgdb-0298128e07b7e58f93d745b657413e41766de3cb.zip
gdb-0298128e07b7e58f93d745b657413e41766de3cb.tar.gz
gdb-0298128e07b7e58f93d745b657413e41766de3cb.tar.bz2
Remove "numbuf" global
The lexer has a "numbuf" global that is only used for temporary storage. This patch removes the global and redeclares it at the points of use.
-rw-r--r--gdb/ada-lex.l11
1 files changed, 8 insertions, 3 deletions
diff --git a/gdb/ada-lex.l b/gdb/ada-lex.l
index 1122172..4e99eaa 100644
--- a/gdb/ada-lex.l
+++ b/gdb/ada-lex.l
@@ -59,9 +59,7 @@ DIAGNOSTIC_IGNORE_DEPRECATED_REGISTER
#define NUMERAL_WIDTH 256
#define LONGEST_SIGN ((ULONGEST) 1 << (sizeof(LONGEST) * HOST_CHAR_BIT - 1))
-/* Temporary staging for numeric literals. */
-static char numbuf[NUMERAL_WIDTH];
- static void canonicalizeNumeral (char *s1, const char *);
+static void canonicalizeNumeral (char *s1, const char *);
static struct stoken processString (const char*, int);
static int processInt (struct parser_state *, const char *, const char *,
const char *);
@@ -114,6 +112,7 @@ static void rewind_to_char (int);
"--".* { yyterminate(); }
{NUM10}{POSEXP} {
+ char numbuf[NUMERAL_WIDTH];
canonicalizeNumeral (numbuf, yytext);
char *e_ptr = strrchr (numbuf, 'e');
*e_ptr = '\0';
@@ -121,11 +120,13 @@ static void rewind_to_char (int);
}
{NUM10} {
+ char numbuf[NUMERAL_WIDTH];
canonicalizeNumeral (numbuf, yytext);
return processInt (pstate, NULL, numbuf, NULL);
}
{NUM10}"#"{HEXDIG}({HEXDIG}|_)*"#"{POSEXP} {
+ char numbuf[NUMERAL_WIDTH];
canonicalizeNumeral (numbuf, yytext);
char *e_ptr = strrchr (numbuf, 'e');
*e_ptr = '\0';
@@ -139,23 +140,27 @@ static void rewind_to_char (int);
floating-point number is formed by reinterpreting the
bytes, allowing direct control over the bits. */
{NUM10}(l{0,2}f)?"#"{HEXDIG}({HEXDIG}|_)*"#" {
+ char numbuf[NUMERAL_WIDTH];
canonicalizeNumeral (numbuf, yytext);
return processInt (pstate, numbuf, strchr (numbuf, '#') + 1,
NULL);
}
"0x"{HEXDIG}+ {
+ char numbuf[NUMERAL_WIDTH];
canonicalizeNumeral (numbuf, yytext+2);
return processInt (pstate, "16#", numbuf, NULL);
}
{NUM10}"."{NUM10}{EXP} {
+ char numbuf[NUMERAL_WIDTH];
canonicalizeNumeral (numbuf, yytext);
return processReal (pstate, numbuf);
}
{NUM10}"."{NUM10} {
+ char numbuf[NUMERAL_WIDTH];
canonicalizeNumeral (numbuf, yytext);
return processReal (pstate, numbuf);
}