aboutsummaryrefslogtreecommitdiff
path: root/libgfortran
diff options
context:
space:
mode:
authorjvdelisle <jvdelisle@138bc75d-0d04-0410-961f-82ee72b054a4>2008-10-14 01:49:51 +0000
committerjvdelisle <jvdelisle@138bc75d-0d04-0410-961f-82ee72b054a4>2008-10-14 01:49:51 +0000
commitfc4cb70cb424ba4b2875e69ad65ebc3cc2f1ddcd (patch)
tree98ce6c33b70a0f91ec650b18a08e95344f3c7190 /libgfortran
parent8bacbcbeb47b66f30358285eb70078b3ce877ab8 (diff)
2008-10-13 Jerry DeLisle <jvdelisle@gcc.gnu.org
PR libfortran/37083 * io/list_read.c (next_char): Simplify EOF tests and set endfile flag. (finish_list_read): Add EOF check. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@141101 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libgfortran')
-rw-r--r--libgfortran/ChangeLog6
-rw-r--r--libgfortran/io/list_read.c18
2 files changed, 16 insertions, 8 deletions
diff --git a/libgfortran/ChangeLog b/libgfortran/ChangeLog
index 8332fea3522..4e72cb8bfc7 100644
--- a/libgfortran/ChangeLog
+++ b/libgfortran/ChangeLog
@@ -1,3 +1,9 @@
+2008-10-13 Jerry DeLisle <jvdelisle@gcc.gnu.org
+
+ PR libfortran/37083
+ * io/list_read.c (next_char): Simplify EOF tests and set endfile flag.
+ (finish_list_read): Add EOF check.
+
2008-10-09 Thomas Koenig <tkoenig@gcc.gnu.org>
PR libfortran/37753
diff --git a/libgfortran/io/list_read.c b/libgfortran/io/list_read.c
index 76634a3ee25..00cd841df24 100644
--- a/libgfortran/io/list_read.c
+++ b/libgfortran/io/list_read.c
@@ -242,15 +242,10 @@ next_char (st_parameter_dt *dtp)
{
if (length == 0)
{
- if (dtp->u.p.advance_status == ADVANCE_NO)
- {
- if (dtp->u.p.current_unit->endfile == AT_ENDFILE)
- longjmp (*dtp->u.p.eof_jump, 1);
- dtp->u.p.current_unit->endfile = AT_ENDFILE;
- c = '\n';
- }
- else
+ if (dtp->u.p.current_unit->endfile == AT_ENDFILE)
longjmp (*dtp->u.p.eof_jump, 1);
+ dtp->u.p.current_unit->endfile = AT_ENDFILE;
+ c = '\n';
}
}
done:
@@ -1913,6 +1908,13 @@ finish_list_read (st_parameter_dt *dtp)
c = next_char (dtp);
}
while (c != '\n');
+
+ if (dtp->u.p.current_unit->endfile != NO_ENDFILE)
+ {
+ generate_error (&dtp->common, LIBERROR_END, NULL);
+ dtp->u.p.current_unit->endfile = AFTER_ENDFILE;
+ dtp->u.p.current_unit->current_record = 0;
+ }
}
/* NAMELIST INPUT