]> xenbits.xensource.com Git - people/julieng/freebsd.git/commitdiff
Correct handling of enum attributes with g++
authorpfg <pfg@FreeBSD.org>
Sun, 11 Oct 2015 19:58:57 +0000 (19:58 +0000)
committerpfg <pfg@FreeBSD.org>
Sun, 11 Oct 2015 19:58:57 +0000 (19:58 +0000)
From OpenBSD's commit log:

This was responsible for memory corruption with recent versions
of Mesa where c and c++ code share a header with a packed enum type.

Reference:
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=39219

Obtained from: OpenBSD (CVS rev. 1.2)
MFC after: 1 week

contrib/gcc/cp/parser.c

index 25cc2250f9f07f0d9025b004651bc5b0b1ee2dff..895d0eeed1117b21cbaaa2509cdf24eee2e62fde 100644 (file)
@@ -10906,6 +10906,7 @@ cp_parser_enum_specifier (cp_parser* parser)
   if (cp_parser_allow_gnu_extensions_p (parser))
     {
       tree trailing_attr = cp_parser_attributes_opt (parser);
+      trailing_attr = chainon (trailing_attr, attributes);
       cplus_decl_attributes (&type,
                             trailing_attr,
                             (int) ATTR_FLAG_TYPE_IN_PLACE);