From: Jerry DeLisle Date: Thu, 4 Nov 2010 00:34:16 +0000 (+0000) Subject: re PR fortran/46010 (I/O: Namelist-reading bug) X-Git-Tag: releases/gcc-4.4.6~283 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=74a16ffe4a14d27620a86cdbaf1024e3dd626a75;p=thirdparty%2Fgcc.git re PR fortran/46010 (I/O: Namelist-reading bug) 2010-11-03 Jerry DeLisle PR libgfortran/46010 Backport from mainline: * io/list_read.c (nml_parse_qualifier): Add additional conditions for setting the end index for loop specification. Fix some whitespace. From-SVN: r166294 --- diff --git a/libgfortran/ChangeLog b/libgfortran/ChangeLog index 100645678f28..78fef049284a 100644 --- a/libgfortran/ChangeLog +++ b/libgfortran/ChangeLog @@ -1,3 +1,10 @@ +2010-11-03 Jerry DeLisle + + PR libgfortran/46010 + Backport from mainline: + * io/list_read.c (nml_parse_qualifier): Add additional conditions for + setting the end index for loop specification. Fix some whitespace. + 2010-10-16 John David Anglin Backport from mainline: diff --git a/libgfortran/io/list_read.c b/libgfortran/io/list_read.c index a52278ede8ea..e560f1209b92 100644 --- a/libgfortran/io/list_read.c +++ b/libgfortran/io/list_read.c @@ -2077,8 +2077,10 @@ nml_parse_qualifier (st_parameter_dt *dtp, descriptor_dimension *ad, /* If -std=f95/2003 or an array section is specified, do not allow excess data to be processed. */ - if (is_array_section == 1 - || compile_options.allow_std < GFC_STD_GNU) + if (is_array_section == 1 + || !(compile_options.allow_std & GFC_STD_GNU) + || !dtp->u.p.ionml->touched + || dtp->u.p.ionml->type == GFC_DTYPE_DERIVED) ls[dim].end = ls[dim].start; else dtp->u.p.expanded_read = 1; @@ -2093,12 +2095,12 @@ nml_parse_qualifier (st_parameter_dt *dtp, descriptor_dimension *ad, } if (is_array_section == 1 && dtp->u.p.expanded_read == 1) - { + { int i; dtp->u.p.expanded_read = 0; for (i = 0; i < dim; i++) ls[i].end = ls[i].start; - } + } /* Check the values of the triplet indices. */ if ((ls[dim].start > (ssize_t)ad[dim].ubound)