summaryrefslogtreecommitdiff
path: root/Build/source/texk/web2c/cwebdir/ctangle.w
diff options
context:
space:
mode:
authorAndreas Scherer <andreas_tex@freenet.de>2022-02-18 15:05:01 +0000
committerAndreas Scherer <andreas_tex@freenet.de>2022-02-18 15:05:01 +0000
commita08701547a59868dd82bab32735f7c56d2636370 (patch)
tree62fb36019157e66b07ebe7c4bf9f953811911cf6 /Build/source/texk/web2c/cwebdir/ctangle.w
parent316ad31f72ca37c485f1261b13d3fee400359163 (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.w11
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 {