[patch, libgfortran] PR107031 - endfile truncates file at wrong position

Harald Anlauf anlauf@gmx.de
Tue Mar 26 17:43:02 GMT 2024


Hi Jerry,

Am 26.03.24 um 04:18 schrieb Jerry D:
> Hi all,
>
> There has been a bit of discussio on which way to go on this.
>
> I took a look today and this trivial patch gives the behavior concluded
> on Fortran Discourse. See the bugzilla for all the relevant information.
>
> Regresion tested on x86-64.
>
> I will do the appropriate changelog.
>
> OK for trunk?
>
> Attached is a new test case and the patch here:
>
> diff --git a/libgfortran/io/file_pos.c b/libgfortran/io/file_pos.c
> index 2bc05b293f8..d169961f997 100644
> --- a/libgfortran/io/file_pos.c
> +++ b/libgfortran/io/file_pos.c
> @@ -352,7 +352,6 @@ st_endfile (st_parameter_filepos *fpp)
>            dtp.common = fpp->common;
>            memset (&dtp.u.p, 0, sizeof (dtp.u.p));
>            dtp.u.p.current_unit = u;
> -         next_record (&dtp, 1);
>          }
>
>         unit_truncate (u, stell (u->s), &fpp->common);

this is OK from my side.

Given the discussion on "dg-do  run", wouldn't this be a perfect
example where it is sufficient to run the testcase just once?

The change is in libgfortran, not in the frontend or middle-end.

Thanks for the patch!

Harald



More information about the Fortran mailing list