aboutsummaryrefslogtreecommitdiff
path: root/tccpp.c
diff options
context:
space:
mode:
authorgrischka <grischka>2009-07-23 19:21:14 +0200
committergrischka <grischka>2009-08-24 13:30:01 +0200
commit569c20f104f7f3f661e8939fda3cd37be746655f (patch)
treeafe971448a2ff99d05857e0f6ff2cccdd02f8e5c /tccpp.c
parent1026ca58881193dfe28332036d066e44ef0b0e68 (diff)
downloadtinycc-569c20f104f7f3f661e8939fda3cd37be746655f.tar.gz
tinycc-569c20f104f7f3f661e8939fda3cd37be746655f.tar.bz2
tccpp: fix quirk with cached headers and #else
Such as with #ifndef FOO_H ... #else ... #endif
Diffstat (limited to 'tccpp.c')
-rw-r--r--tccpp.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/tccpp.c b/tccpp.c
index d03adc0..ecdaf17 100644
--- a/tccpp.c
+++ b/tccpp.c
@@ -1392,7 +1392,7 @@ include_done:
if (s1->ifdef_stack_ptr[-1] & 2)
error("#else after #else");
c = (s1->ifdef_stack_ptr[-1] ^= 3);
- goto test_skip;
+ goto test_else;
case TOK_ELIF:
if (s1->ifdef_stack_ptr == s1->ifdef_stack)
error("#elif without matching #if");
@@ -1404,6 +1404,9 @@ include_done:
goto skip;
c = expr_preprocess();
s1->ifdef_stack_ptr[-1] = c;
+ test_else:
+ if (s1->ifdef_stack_ptr == file->ifdef_stack_ptr + 1)
+ file->ifndef_macro = 0;
test_skip:
if (!(c & 1)) {
skip: