mirror of
https://github.com/samba-team/samba.git
synced 2025-01-08 21:18:16 +03:00
PIDL: fix parsing linemarkers in preprocessor output
When PIDL calls out to C preprocessor to expand IDL files and parse the output, it filters out linemarkers and line control information as described in http://gcc.gnu.org/onlinedocs/cpp/Preprocessor-Output.html and http://gcc.gnu.org/onlinedocs/cpp/Line-Control.html#Line-Control With gcc 4.8 stdc-predef.h is included automatically and linemarker for the file has extended flags that PIDL couldn't parse ('system header that needs to be extern "C" protected for C++') Thanks to Jakub Jelinek <jakub@redhat.com> for explanation of the linemarker format. Fixes https://bugzilla.redhat.com/show_bug.cgi?id=906517 Reviewed-by: Andreas Schneider <asn@samba.org>
This commit is contained in:
parent
1aa1d658c8
commit
6ba7ab5c14
@ -610,7 +610,9 @@ again:
|
||||
|
||||
for ($parser->YYData->{INPUT}) {
|
||||
if (/^\#/) {
|
||||
if (s/^\# (\d+) \"(.*?)\"( \d+|)//) {
|
||||
# Linemarker format is described at
|
||||
# http://gcc.gnu.org/onlinedocs/cpp/Preprocessor-Output.html
|
||||
if (s/^\# (\d+) \"(.*?)\"(( \d+){1,4}|)//) {
|
||||
$parser->YYData->{LINE} = $1-1;
|
||||
$parser->YYData->{FILE} = $2;
|
||||
goto again;
|
||||
|
@ -2576,7 +2576,9 @@ again:
|
||||
|
||||
for ($parser->YYData->{INPUT}) {
|
||||
if (/^\#/) {
|
||||
if (s/^\# (\d+) \"(.*?)\"( \d+|)//) {
|
||||
# Linemarker format is described at
|
||||
# http://gcc.gnu.org/onlinedocs/cpp/Preprocessor-Output.html
|
||||
if (s/^\# (\d+) \"(.*?)\"(( \d+){1,4}|)//) {
|
||||
$parser->YYData->{LINE} = $1-1;
|
||||
$parser->YYData->{FILE} = $2;
|
||||
goto again;
|
||||
|
Loading…
Reference in New Issue
Block a user