diff options
author | Nick Clifton <nickc@redhat.com> | 2010-11-17 11:15:21 +0000 |
---|---|---|
committer | Nick Clifton <nickc@redhat.com> | 2010-11-17 11:15:21 +0000 |
commit | 47e8018d71f9ebc3c2e40af48ace59ac23d7d6db (patch) | |
tree | 01d4f0ccef21cc47f26980bd55ba23a673b9ff0d | |
parent | 79520e0d2db9481b1f2d06645d291a7da92cab22 (diff) | |
download | gdb-47e8018d71f9ebc3c2e40af48ace59ac23d7d6db.zip gdb-47e8018d71f9ebc3c2e40af48ace59ac23d7d6db.tar.gz gdb-47e8018d71f9ebc3c2e40af48ace59ac23d7d6db.tar.bz2 |
* 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.
-rw-r--r-- | gas/ChangeLog | 7 | ||||
-rw-r--r-- | gas/input-file.c | 22 |
2 files changed, 27 insertions, 2 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog index 550f38e..e3d35b6 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,10 @@ +2010-11-17 Nick Clifton <nickc@redhat.com> + + * 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 <hongjiu.lu@intel.com> * config/obj-elf.c (elf_process_stab): Mark parameters as diff --git a/gas/input-file.c b/gas/input-file.c index d3fa6ad..709c972 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)); |