From: Simon Marchi Date: Thu, 31 Aug 2023 19:56:10 +0000 (-0400) Subject: gdb: remove uses of alloca in gdbtypes.c X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=8ba212f8933df0560d600d14c032be251aa21a71;p=binutils-gdb.git gdb: remove uses of alloca in gdbtypes.c Replace two uses of alloca with std::string. Change-Id: I970ae3f450da407494d95668a57bba8796d6292b Approved-by: Kevin Buettner --- diff --git a/gdb/gdbtypes.c b/gdb/gdbtypes.c index 59ddd75ab79..5e15ec64c41 100644 --- a/gdb/gdbtypes.c +++ b/gdb/gdbtypes.c @@ -1670,11 +1670,12 @@ struct type * lookup_unsigned_typename (const struct language_defn *language, const char *name) { - char *uns = (char *) alloca (strlen (name) + 10); + std::string uns; + uns.reserve (strlen (name) + strlen ("unsigned ")); + uns = "unsigned "; + uns += name; - strcpy (uns, "unsigned "); - strcpy (uns + 9, name); - return lookup_typename (language, uns, NULL, 0); + return lookup_typename (language, uns.c_str (), NULL, 0); } struct type * @@ -1760,16 +1761,14 @@ struct type * lookup_template_type (const char *name, struct type *type, const struct block *block) { - struct symbol *sym; - char *nam = (char *) - alloca (strlen (name) + strlen (type->name ()) + 4); - - strcpy (nam, name); - strcat (nam, "<"); - strcat (nam, type->name ()); - strcat (nam, " >"); /* FIXME, extra space still introduced in gcc? */ + std::string nam; + nam.reserve (strlen (name) + strlen (type->name ()) + strlen ("< >")); + nam = name; + nam += "<"; + nam += type->name (); + nam += " >"; /* FIXME, extra space still introduced in gcc? */ - sym = lookup_symbol (nam, block, VAR_DOMAIN, 0).symbol; + symbol *sym = lookup_symbol (nam.c_str (), block, VAR_DOMAIN, 0).symbol; if (sym == NULL) {