From: Jerry DeLisle Date: Wed, 17 May 2006 00:36:53 +0000 (+0000) Subject: re PR libfortran/27575 (gfortran - does not generate error when trying to read too... X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=cacf2b9638c2b9c32f03da60ca21d5a061927de7;p=gcc.git re PR libfortran/27575 (gfortran - does not generate error when trying to read too much data) 2006-05-16 Jerry DeLisle PR libgfortran/27575 * io/transfer.c (read_block): Add check for end file condition. (read_block_direct): Add check for end file condition. From-SVN: r113837 --- diff --git a/libgfortran/ChangeLog b/libgfortran/ChangeLog index cb8c0fd1c28..5b53e2b2541 100644 --- a/libgfortran/ChangeLog +++ b/libgfortran/ChangeLog @@ -1,3 +1,9 @@ +2006-05-16 Jerry DeLisle + + PR libgfortran/27575 + * io/transfer.c (read_block): Add check for end file condition. + (read_block_direct): Add check for end file condition. + 2006-05-05 Francois-Xavier Coudert PR libfortran/26985 diff --git a/libgfortran/io/transfer.c b/libgfortran/io/transfer.c index 43af8fbc938..054217daa79 100644 --- a/libgfortran/io/transfer.c +++ b/libgfortran/io/transfer.c @@ -272,6 +272,13 @@ read_block (st_parameter_dt *dtp, int *length) } } + if (dtp->u.p.current_unit->bytes_left == 0) + { + dtp->u.p.current_unit->endfile = AT_ENDFILE; + generate_error (&dtp->common, ERROR_END, NULL); + return; + } + *length = dtp->u.p.current_unit->bytes_left; } @@ -328,6 +335,13 @@ read_block_direct (st_parameter_dt *dtp, void *buf, size_t *nbytes) } } + if (dtp->u.p.current_unit->bytes_left == 0) + { + dtp->u.p.current_unit->endfile = AT_ENDFILE; + generate_error (&dtp->common, ERROR_END, NULL); + return; + } + *nbytes = dtp->u.p.current_unit->bytes_left; }