On 6 November 2021 01:21:43 CET, Marek Polacek via Gcc-patches <gcc-patches@gcc.gnu.org> wrote:
> >Thanks, so like this? I'm including an incremental diff so that it's >clear what changed: > >diff --git a/gcc/attribs.c b/gcc/attribs.c >index d5fba7f4bbb..addfe6f6c80 100644 >--- a/gcc/attribs.c >+++ b/gcc/attribs.c >@@ -237,7 +237,7 @@ check_attribute_tables (void) > the end of parsing of all TUs. */ > static vec<attribute_spec *> ignored_attributes_table; > >-/* Parse arguments ARGS of -Wno-attributes=. >+/* Parse arguments V of -Wno-attributes=. > Currently we accept: > vendor::attr > vendor:: >@@ -252,12 +252,15 @@ handle_ignored_attributes_option (vec<char *> *v) > > for (auto opt : v) > { >+ /* We're going to be modifying the string. */ >+ opt = xstrdup (opt); > char *q = strstr (opt, "::"); > /* We don't accept '::attr'. */ > if (q == nullptr || q == opt) > { > error ("wrong argument to ignored attributes"); > inform (input_location, "valid format is %<ns::attr%> or %<ns::%>"); >+ free (opt); > continue; > } Only xstrdup here, after the strstr check? Should maybe strdup the rest here, not full opt.. thanks, > /* Cut off the vendor part. */ >@@ -274,6 +277,7 @@ handle_ignored_attributes_option (vec<char *> *v) > if (!valid_p (vendor) || !valid_p (attr)) > { > error ("wrong argument to ignored attributes"); >+ free (opt); > continue; > } > /* Turn "__attr__" into "attr" so that we have a canonical form of