Skip to content

Commit bb229d8

Browse files
committed
Fix handling of EOF in lsh_read_line() (brenns10#25)
1 parent fdf0716 commit bb229d8

File tree

1 file changed

+8
-3
lines changed

1 file changed

+8
-3
lines changed

src/main.c

+8-3
Original file line numberDiff line numberDiff line change
@@ -181,14 +181,19 @@ char *lsh_read_line(void)
181181
// Read a character
182182
c = getchar();
183183

184-
if (c == EOF) {
184+
if (c == EOF && feof(stdin)) {
185+
free(buffer);
185186
exit(EXIT_SUCCESS);
187+
} else if (c == EOF && ferror(stdin)) {
188+
perror("getchar (EOF)");
189+
free(buffer);
190+
exit(EXIT_FAILURE);
186191
} else if (c == '\n') {
187192
buffer[position] = '\0';
188193
return buffer;
189-
} else {
190-
buffer[position] = c;
191194
}
195+
196+
buffer[position] = c;
192197
position++;
193198

194199
// If we have exceeded the buffer, reallocate.

0 commit comments

Comments
 (0)