diff mbox series

[libgfortran] PR107031 - endfile truncates file at wrong position

Message ID 67280203-8877-4be7-b988-a87fb9ff6967@gmail.com
State New
Headers show
Series [libgfortran] PR107031 - endfile truncates file at wrong position | expand

Commit Message

Jerry D March 26, 2024, 3:18 a.m. UTC
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:

Comments

Harald Anlauf March 26, 2024, 5:43 p.m. UTC | #1
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
diff mbox series

Patch

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);