From: Jerry DeLisle Date: Mon, 7 Mar 2011 02:06:27 +0000 (+0000) Subject: re PR fortran/47778 (reading two arrays of structures from namelist fails) X-Git-Tag: releases/gcc-4.5.3~176 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=355c7af0459f118ef6085b5ac636c5d9bb936937;p=thirdparty%2Fgcc.git re PR fortran/47778 (reading two arrays of structures from namelist fails) 2011-03-06 Jerry DeLisle PR libgfortran/47778 * io/list_read.c (namelist_read): Intialize the error string buffere. If pprev_nl was used during the previous namelist read and the rank was zero, reset the pointer to NULL for the next namelist read. From-SVN: r170726 --- diff --git a/libgfortran/ChangeLog b/libgfortran/ChangeLog index 4b2629b43039..dfa19716549d 100644 --- a/libgfortran/ChangeLog +++ b/libgfortran/ChangeLog @@ -1,3 +1,10 @@ +2011-03-06 Jerry DeLisle + + PR libgfortran/47778 + * io/list_read.c (namelist_read): Intialize the error string buffere. + If pprev_nl was used during the previous namelist read and the rank + was zero, reset the pointer to NULL for the next namelist read. + 2011-03-04 Jakub Jelinek Backport from mainline diff --git a/libgfortran/io/list_read.c b/libgfortran/io/list_read.c index d27e372098a2..36e955b3458f 100644 --- a/libgfortran/io/list_read.c +++ b/libgfortran/io/list_read.c @@ -2863,6 +2863,11 @@ namelist_read (st_parameter_dt *dtp) char c; jmp_buf eof_jump; char nml_err_msg[200]; + + /* Initialize the error string buffer just in case we get an unexpected fail + somewhere and end up at nml_err_ret. */ + strcpy (nml_err_msg, "Internal namelist read error"); + /* Pointer to the previously read object, in case attempt is made to read new object name. Should this fail, error message can give previous name. */ @@ -2950,7 +2955,11 @@ find_nml_name: } } - } + /* Reset the previous namelist pointer if we know we are not going + to be doing multiple reads within a single namelist object. */ + if (prev_nl && prev_nl->var_rank == 0) + prev_nl = NULL; + } dtp->u.p.eof_jump = NULL; free_saved (dtp);