From 2ba7b2f128372d90d520092e6bf1eb03e8b4be0d Mon Sep 17 00:00:00 2001 From: Nick Clifton Date: Wed, 17 Nov 2010 11:15:21 +0000 Subject: [PATCH] * input-file.c (input_file_open): Check for empty input files. (input_file_get): Check for end of file before reading any more data. (input_file_give_next_buffer): Likewise. --- gas/ChangeLog | 7 +++++++ gas/input-file.c | 22 ++++++++++++++++++++-- 2 files changed, 27 insertions(+), 2 deletions(-) diff --git a/gas/ChangeLog b/gas/ChangeLog index 550f38e92..e3d35b68a 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,10 @@ +2010-11-17 Nick Clifton + + * input-file.c (input_file_open): Check for empty input files. + (input_file_get): Check for end of file before reading any more + data. + (input_file_give_next_buffer): Likewise. + 2010-11-15 H.J. Lu * config/obj-elf.c (elf_process_stab): Mark parameters as diff --git a/gas/input-file.c b/gas/input-file.c index d3fa6ad8a..709c972c9 100644 --- a/gas/input-file.c +++ b/gas/input-file.c @@ -157,6 +157,15 @@ input_file_open (char *filename, /* "" means use stdin. Must not be 0. */ return; } + /* Check for an empty input file. */ + if (feof (f_in)) + { + fclose (f_in); + f_in = NULL; + return; + } + gas_assert (c != EOF); + if (c == '#') { /* Begins with comment, may not want to preprocess. */ @@ -209,6 +218,9 @@ input_file_get (char *buf, int buflen) { int size; + if (feof (f_in)) + return 0; + size = fread (buf, sizeof (char), buflen, f_in); if (size < 0) { @@ -224,7 +236,7 @@ char * input_file_give_next_buffer (char *where /* Where to place 1st character of new buffer. */) { char *return_value; /* -> Last char of what we read, + 1. */ - register int size; + int size; if (f_in == (FILE *) 0) return 0; @@ -235,7 +247,13 @@ input_file_give_next_buffer (char *where /* Where to place 1st character of new if (preprocess) size = do_scrub_chars (input_file_get, where, BUFFER_SIZE); else - size = fread (where, sizeof (char), BUFFER_SIZE, f_in); + { + if (feof (f_in)) + size = 0; + else + size = fread (where, sizeof (char), BUFFER_SIZE, f_in); + } + if (size < 0) { as_bad (_("can't read from %s: %s"), file_name, xstrerror (errno)); -- 2.11.4.GIT