From 43e0224a586befa508ad3cd9d8e8e56cb52f1645 Mon Sep 17 00:00:00 2001 From: Jerry DeLisle Date: Wed, 5 Jan 2011 03:53:15 +0000 Subject: re PR libfortran/47154 (END= does not work in namelist read) 2011-01-04 Jerry DeLisle PR libgfortran/47154 * io/list_read.c (namelist_read): Remove calls to hit_eof to avoid the duplicate calls via next_record. From-SVN: r168502 --- libgfortran/ChangeLog | 6 ++++++ libgfortran/io/list_read.c | 20 ++++++++------------ 2 files changed, 14 insertions(+), 12 deletions(-) (limited to 'libgfortran') diff --git a/libgfortran/ChangeLog b/libgfortran/ChangeLog index a3aa49d..6f116bd 100644 --- a/libgfortran/ChangeLog +++ b/libgfortran/ChangeLog @@ -1,3 +1,9 @@ +2011-01-04 Jerry DeLisle + + PR libgfortran/47154 + * io/list_read.c (namelist_read): Remove calls to hit_eof to avoid the + duplicate calls via next_record. + Copyright (C) 2011 Free Software Foundation, Inc. diff --git a/libgfortran/io/list_read.c b/libgfortran/io/list_read.c index 5203bb7..9f8555a 100644 --- a/libgfortran/io/list_read.c +++ b/libgfortran/io/list_read.c @@ -2984,8 +2984,7 @@ namelist_read (st_parameter_dt *dtp) node names or namelist on stdout. */ find_nml_name: - if ((c = next_char (dtp)) == EOF) - goto nml_err_eof; + c = next_char (dtp); switch (c) { case '$': @@ -2993,13 +2992,11 @@ find_nml_name: break; case '!': - if (eat_line (dtp)) - goto nml_err_eof; + eat_line (dtp); goto find_nml_name; case '=': - if ((c = next_char (dtp)) == EOF) - goto nml_err_eof; + c = next_char (dtp); if (c == '?') nml_query (dtp, '='); else @@ -3009,6 +3006,9 @@ find_nml_name: case '?': nml_query (dtp, '?'); + case EOF: + return; + default: goto find_nml_name; } @@ -3021,8 +3021,7 @@ find_nml_name: goto find_nml_name; /* A trailing space is required, we give a little lattitude here, 10.9.1. */ - if ((c = next_char (dtp)) == EOF) - goto nml_err_eof; + c = next_char (dtp); if (!is_separator(c) && c != '!') { unget_char (dtp, c); @@ -3050,13 +3049,10 @@ find_nml_name: free_line (dtp); return; - /* All namelist error calls return from here */ - -nml_err_eof: - hit_eof (dtp); nml_err_ret: + /* All namelist error calls return from here */ free_saved (dtp); free_line (dtp); generate_error (&dtp->common, LIBERROR_READ_VALUE, nml_err_msg); -- cgit v1.1