mirror of
https://github.com/bminor/binutils-gdb.git
synced 2025-12-26 09:08:59 +00:00
Remove some alloca uses
A few spots (mostly in the parsers) use alloca to ensure that a string is terminated before passing it to a printf-like function (mostly 'error'). However, this isn't needed as the "%.*s" format can be used instead. This patch makes this change. In one spot the alloca is dead code and is simply removed. Regression tested on x86-64 Fedora 38. Approved-By: John Baldwin <jhb@FreeBSD.org>
This commit is contained in:
19
gdb/c-exp.y
19
gdb/c-exp.y
@@ -2784,13 +2784,8 @@ lex_one_token (struct parser_state *par_state, bool *is_quoted_name)
|
||||
toktype = parse_number (par_state, tokstart, p - tokstart,
|
||||
got_dot | got_e | got_p, &yylval);
|
||||
if (toktype == ERROR)
|
||||
{
|
||||
char *err_copy = (char *) alloca (p - tokstart + 1);
|
||||
|
||||
memcpy (err_copy, tokstart, p - tokstart);
|
||||
err_copy[p - tokstart] = 0;
|
||||
error (_("Invalid number \"%s\"."), err_copy);
|
||||
}
|
||||
error (_("Invalid number \"%.*s\"."), (int) (p - tokstart),
|
||||
tokstart);
|
||||
pstate->lexptr = p;
|
||||
return toktype;
|
||||
}
|
||||
@@ -3434,14 +3429,8 @@ c_print_token (FILE *file, int type, YYSTYPE value)
|
||||
|
||||
case CHAR:
|
||||
case STRING:
|
||||
{
|
||||
char *copy = (char *) alloca (value.tsval.length + 1);
|
||||
|
||||
memcpy (copy, value.tsval.ptr, value.tsval.length);
|
||||
copy[value.tsval.length] = '\0';
|
||||
|
||||
parser_fprintf (file, "tsval<type=%d, %s>", value.tsval.type, copy);
|
||||
}
|
||||
parser_fprintf (file, "tsval<type=%d, %.*s>", value.tsval.type,
|
||||
value.tsval.length, val.tsval.ptr);
|
||||
break;
|
||||
|
||||
case NSSTRING:
|
||||
|
||||
@@ -1702,10 +1702,6 @@ yylex (YYSTYPE *lvalp, cpname_state *state)
|
||||
lvalp);
|
||||
if (toktype == ERROR)
|
||||
{
|
||||
char *err_copy = (char *) alloca (p - tokstart + 1);
|
||||
|
||||
memcpy (err_copy, tokstart, p - tokstart);
|
||||
err_copy[p - tokstart] = 0;
|
||||
yyerror (state, _("invalid number"));
|
||||
return ERROR;
|
||||
}
|
||||
|
||||
@@ -2214,19 +2214,11 @@ test_cp_remove_params ()
|
||||
static void
|
||||
first_component_command (const char *arg, int from_tty)
|
||||
{
|
||||
int len;
|
||||
char *prefix;
|
||||
|
||||
if (!arg)
|
||||
return;
|
||||
|
||||
len = cp_find_first_component (arg);
|
||||
prefix = (char *) alloca (len + 1);
|
||||
|
||||
memcpy (prefix, arg, len);
|
||||
prefix[len] = '\0';
|
||||
|
||||
gdb_printf ("%s\n", prefix);
|
||||
int len = cp_find_first_component (arg);
|
||||
gdb_printf ("%.*s\n", len, arg);
|
||||
}
|
||||
|
||||
/* Implement "info vtbl". */
|
||||
|
||||
@@ -1154,13 +1154,8 @@ lex_one_token (struct parser_state *par_state)
|
||||
toktype = parse_number (par_state, tokstart, p - tokstart,
|
||||
got_dot|got_e, &yylval);
|
||||
if (toktype == ERROR)
|
||||
{
|
||||
char *err_copy = (char *) alloca (p - tokstart + 1);
|
||||
|
||||
memcpy (err_copy, tokstart, p - tokstart);
|
||||
err_copy[p - tokstart] = 0;
|
||||
error (_("Invalid number \"%s\"."), err_copy);
|
||||
}
|
||||
error (_("Invalid number \"%.*s\"."), (int) (p - tokstart),
|
||||
tokstart);
|
||||
pstate->lexptr = p;
|
||||
return toktype;
|
||||
}
|
||||
|
||||
@@ -1557,13 +1557,8 @@ yylex (void)
|
||||
got_dot|got_e|got_d,
|
||||
&yylval);
|
||||
if (toktype == ERROR)
|
||||
{
|
||||
char *err_copy = (char *) alloca (p - tokstart + 1);
|
||||
|
||||
memcpy (err_copy, tokstart, p - tokstart);
|
||||
err_copy[p - tokstart] = 0;
|
||||
error (_("Invalid number \"%s\"."), err_copy);
|
||||
}
|
||||
error (_("Invalid number \"%.*s\"."), (int) (p - tokstart),
|
||||
tokstart);
|
||||
pstate->lexptr = p;
|
||||
return toktype;
|
||||
}
|
||||
|
||||
@@ -1103,13 +1103,8 @@ lex_one_token (struct parser_state *par_state)
|
||||
toktype = parse_number (par_state, tokstart, p - tokstart,
|
||||
got_dot|got_e, &yylval);
|
||||
if (toktype == ERROR)
|
||||
{
|
||||
char *err_copy = (char *) alloca (p - tokstart + 1);
|
||||
|
||||
memcpy (err_copy, tokstart, p - tokstart);
|
||||
err_copy[p - tokstart] = 0;
|
||||
error (_("Invalid number \"%s\"."), err_copy);
|
||||
}
|
||||
error (_("Invalid number \"%.*s\"."), (int) (p - tokstart),
|
||||
tokstart);
|
||||
par_state->lexptr = p;
|
||||
return toktype;
|
||||
}
|
||||
|
||||
@@ -869,13 +869,8 @@ yylex (void)
|
||||
}
|
||||
toktype = parse_number (p - tokstart);
|
||||
if (toktype == ERROR)
|
||||
{
|
||||
char *err_copy = (char *) alloca (p - tokstart + 1);
|
||||
|
||||
memcpy (err_copy, tokstart, p - tokstart);
|
||||
err_copy[p - tokstart] = 0;
|
||||
error (_("Invalid number \"%s\"."), err_copy);
|
||||
}
|
||||
error (_("Invalid number \"%.*s\"."), (int) (p - tokstart),
|
||||
tokstart);
|
||||
pstate->lexptr = p;
|
||||
return toktype;
|
||||
}
|
||||
|
||||
@@ -1239,13 +1239,8 @@ yylex (void)
|
||||
toktype = parse_number (pstate, tokstart,
|
||||
p - tokstart, got_dot | got_e, &yylval);
|
||||
if (toktype == ERROR)
|
||||
{
|
||||
char *err_copy = (char *) alloca (p - tokstart + 1);
|
||||
|
||||
memcpy (err_copy, tokstart, p - tokstart);
|
||||
err_copy[p - tokstart] = 0;
|
||||
error (_("Invalid number \"%s\"."), err_copy);
|
||||
}
|
||||
error (_("Invalid number \"%.*s\"."), (int) (p - tokstart),
|
||||
tokstart);
|
||||
pstate->lexptr = p;
|
||||
return toktype;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user