]> git.sur5r.net Git - cc65/commitdiff
Work around a problem with the #if hack in the preprocessor
authorcuz <cuz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Sat, 14 Jul 2001 15:56:17 +0000 (15:56 +0000)
committercuz <cuz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Sat, 14 Jul 2001 15:56:17 +0000 (15:56 +0000)
git-svn-id: svn://svn.cc65.org/cc65/trunk@787 b7a2c559-68d2-44c3-8de9-860c34a00d81

src/cc65/preproc.c

index 5c652aad4a037af99b09b387da89d9f4484aaeb2..1ea8cb81da4d1d1be768ab055a89af3af8a6cffe 100644 (file)
@@ -19,6 +19,7 @@
 #include "ident.h"
 #include "incpath.h"
 #include "input.h"
+#include "lineinfo.h"
 #include "macrotab.h"
 #include "scanner.h"
 #include "util.h"
@@ -620,10 +621,20 @@ static int doiff (int skip)
 
     /* We're about to abuse the compiler expression parser to evaluate the
      * #if expression. Save the current tokens to come back here later.
+     * NOTE: Yes, this is a hack, but it saves a complete separate expression
+     * evaluation for the preprocessor.
      */
     Token sv1 = CurTok;
     Token sv2 = NextTok;
 
+    /* Make sure the line infos for the tokens won't get removed */
+    if (sv1.LI) {
+       UseLineInfo (sv1.LI);
+    }
+    if (sv2.LI) {
+       UseLineInfo (sv2.LI);
+    }
+
     /* Remove the #if from the line and add two semicolons as sentinels */
     SkipBlank ();
     S = line;