On Sat, Nov 06, 2021 at 02:32:26AM +0100, Bernhard Reutner-Fischer wrote:
> 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..

No, I want q to point into the copy of the string, since I'm about
to modify it.  And I'd prefer a single call to xstrdup rather than
two.

Marek

Reply via email to