shithub: scc

Download patch

ref: 0aee0027b0ae4f745250ca8ca90e7d5c6017151d
parent: f82124efc20c2976037f821cfa502b03f11bd2a6
author: Roberto E. Vargas Caballero <k0ga@shike2.com>
date: Mon Apr 4 10:26:09 EDT 2022

cc1: Improve readline() readbility

Having readline() and cpp() in the same if was a bit confusing
because it seemed like there was some relation between them, but
they are totally independent. In the same way, at EOF there was
an implicit condition of having an empty string pointed by p
but it was really obsucre how it was happening.

--- a/src/cmd/cc/cc1/lex.c
+++ b/src/cmd/cc/cc1/lex.c
@@ -204,6 +204,7 @@
 
 	if (feof(input->fp)) {
 		input->flags |= IEOF;
+		*input->p = '\0';
 		return 0;
 	}
 
@@ -284,7 +285,11 @@
 			delinput();
 			goto repeat;
 		}
-		if (!readline() || cpp()) {
+		if (!readline()) {
+			*input->p = '\0';
+			goto repeat;
+		}
+		if (cpp()) {
 			*input->p = '\0';
 			goto repeat;
 		}