diff options
author | pfg <pfg@FreeBSD.org> | 2014-01-12 21:16:26 +0000 |
---|---|---|
committer | pfg <pfg@FreeBSD.org> | 2014-01-12 21:16:26 +0000 |
commit | f630f6f40f740cb8f2ee6f8b7ca4b87afe4549ed (patch) | |
tree | 1583542d675d7245df1abbe37fe4624d8013d8b1 /contrib/gcclibs/libcpp/directives.c | |
parent | d54137712a89d020593dfb73ef2e0814051f5387 (diff) | |
download | FreeBSD-src-f630f6f40f740cb8f2ee6f8b7ca4b87afe4549ed.zip FreeBSD-src-f630f6f40f740cb8f2ee6f8b7ca4b87afe4549ed.tar.gz |
MFC r260310:
libcpp: misc fixes from Apple's GCC.
Fixes some bugs detected by Apple:
#error with unmatched quotes
pragma mark
Obtained from: Apple GCC 4.2 - 5553
Diffstat (limited to 'contrib/gcclibs/libcpp/directives.c')
-rw-r--r-- | contrib/gcclibs/libcpp/directives.c | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/contrib/gcclibs/libcpp/directives.c b/contrib/gcclibs/libcpp/directives.c index 7011842..bf781b6 100644 --- a/contrib/gcclibs/libcpp/directives.c +++ b/contrib/gcclibs/libcpp/directives.c @@ -991,7 +991,11 @@ do_diagnostic (cpp_reader *pfile, int code, int print_dir) if (print_dir) fprintf (stderr, "#%s ", pfile->directive->name); pfile->state.prevent_expansion++; + /* APPLE LOCAL #error with unmatched quotes 5607574 */ + pfile->state.in_diagnostic++; cpp_output_line (pfile, stderr); + /* APPLE LOCAL #error with unmatched quotes 5607574 */ + pfile->state.in_diagnostic--; pfile->state.prevent_expansion--; } } @@ -1173,12 +1177,25 @@ cpp_register_deferred_pragma (cpp_reader *pfile, const char *space, } } +/* APPLE LOCAL begin pragma mark 5614511 */ +/* Handle #pragma mark. */ +static void +do_pragma_mark (cpp_reader *pfile) +{ + ++pfile->state.skipping; + skip_rest_of_line (pfile); + --pfile->state.skipping; +} +/* APPLE LOCAL end pragma mark 5614511 */ + /* Register the pragmas the preprocessor itself handles. */ void _cpp_init_internal_pragmas (cpp_reader *pfile) { /* Pragmas in the global namespace. */ register_pragma_internal (pfile, 0, "once", do_pragma_once); + /* APPLE LOCAL pragma mark 5614511 */ + register_pragma_internal (pfile, 0, "mark", do_pragma_mark); /* New GCC-specific pragmas should be put in the GCC namespace. */ register_pragma_internal (pfile, "GCC", "poison", do_pragma_poison); |