diff options
author | Andreas Scherer <andreas_tex@freenet.de> | 2022-02-18 15:05:01 +0000 |
---|---|---|
committer | Andreas Scherer <andreas_tex@freenet.de> | 2022-02-18 15:05:01 +0000 |
commit | a08701547a59868dd82bab32735f7c56d2636370 (patch) | |
tree | 62fb36019157e66b07ebe7c4bf9f953811911cf6 /Build/source/texk/web2c/cwebdir/ctangle.w | |
parent | 316ad31f72ca37c485f1261b13d3fee400359163 (diff) |
[CWEB] Avoid preprocessor calamities.
Trying to fix all loopholes in weird stuff like
https://github.com/ascherer/cweb/blob/cweb-4.8-dev/if.w
by repeating '#line' directives after all '#elif', '#else',
and '#endif' preprocessor statements. In almost all cases
this information is redundant, but in the past years people
have come up with the idea to jump to '@<code sections@>'
in '#if' blocks.
git-svn-id: svn://tug.org/texlive/trunk@62066 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build/source/texk/web2c/cwebdir/ctangle.w')
-rw-r--r-- | Build/source/texk/web2c/cwebdir/ctangle.w | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/Build/source/texk/web2c/cwebdir/ctangle.w b/Build/source/texk/web2c/cwebdir/ctangle.w index a49869b4dc6..cd462961e24 100644 --- a/Build/source/texk/web2c/cwebdir/ctangle.w +++ b/Build/source/texk/web2c/cwebdir/ctangle.w @@ -1243,9 +1243,14 @@ file name. @ @<In cases that |a| is...@>=@t\1\quad@> case identifier: store_id(a); - if (*buffer=='#' && id_first==buffer+1 && id_loc-id_first==5 - && strncmp("endif",id_first,5)==0) - @<Insert the line number into |tok_mem|@>@; + if (*buffer=='#' && @| ( + ( id_first==buffer+1 && id_loc-id_first==5 + && strncmp("endif",id_first,5)==0 ) || @| + ( id_first==buffer+1 && id_loc-id_first==4 + && strncmp("else",id_first,4)==0 ) || @| + ( id_first==buffer+1 && id_loc-id_first==4 + && strncmp("elif",id_first,4)==0 ) ) ) + print_where=true; /* Avoid preprocessor calamities */ break; case section_name: if (t!=section_name) goto done; else { |