Browse Source

Fixed bug in '#ifdef FALSE || 1 (garbage)

ceriel 32 years ago
parent
commit
5639e6b55c
2 changed files with 9 additions and 4 deletions
  1. 4 2
      lang/cem/cemcom.ansi/domacro.c
  2. 5 2
      lang/cem/cpp.ansi/domacro.c

+ 4 - 2
lang/cem/cemcom.ansi/domacro.c

@@ -441,14 +441,16 @@ do_ifdef(how)
 	push_if();
 	if (!(id = GetIdentifier(1)))
 		lexerror("illegal #ifdef construction");
+	else if (SkipToNewLine())
+		if (!options['o'])
+			lexstrict("garbage following #%s <identifier>",
+				  how ? "ifdef" : "ifndef");
 
 	/* The next test is a shorthand for:
 		(how && !id->id_macro) || (!how && id->id_macro)
 	*/
 	if (how ^ (id && id->id_macro != 0))
 		skip_block(0);
-	else if (id)
-		SkipToNewLine();
 }
 
 /* argidf != NULL when the undef came from a -U option */

+ 5 - 2
lang/cem/cpp.ansi/domacro.c

@@ -448,14 +448,17 @@ do_ifdef(how)
 		id = findidf(str);
 		free(str);
 	}
+	if (SkipToNewLine()) {
+		if (str && !options['o'])
+			strict("garbage following #%s <identifier>",
+				how ? "ifdef" : "ifndef");
+	}
 
 	/* The next test is a shorthand for:
 		(how && !id->id_macro) || (!how && id->id_macro)
 	*/
 	if (how ^ (id && id->id_macro != 0))
 		skip_block(0);
-	else
-		SkipToNewLine();
 }
 
 /* argstr != NULL when the undef came from a -U option */