Message ID | 67280203-8877-4be7-b988-a87fb9ff6967@gmail.com |
---|---|
State | New |
Headers | show |
Series | [libgfortran] PR107031 - endfile truncates file at wrong position | expand |
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 --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);