aboutsummaryrefslogtreecommitdiff
path: root/libgfortran/io/unit.c
diff options
context:
space:
mode:
authorTobias Burnus <tobias@codesourcery.com>2021-03-12 16:31:32 +0100
committerTobias Burnus <tobias@codesourcery.com>2021-03-12 16:31:32 +0100
commita6e9633ccb593937fceec67fafc2afe5d518d735 (patch)
tree1d356aacf223cd2702f38474e74191764f217cec /libgfortran/io/unit.c
parent3bb345c9313ad8f6a6c24abd7d5eaa11413bbe22 (diff)
downloadgcc-a6e9633ccb593937fceec67fafc2afe5d518d735.zip
gcc-a6e9633ccb593937fceec67fafc2afe5d518d735.tar.gz
gcc-a6e9633ccb593937fceec67fafc2afe5d518d735.tar.bz2
Fortran: Fix libgfortran I/O race with newunit_free [PR99529]
libgfortran/ChangeLog: * io/transfer.c (st_read_done_worker, st_write_done_worker): Call unlock_unit here, add unit_lock lock around newunit_free call. (st_read_done, st_write_done): Only call unlock_unit when not calling the worker function. * io/unit.c (set_internal_unit): Don't reset the unit_number to the same number as this cause race warnings.
Diffstat (limited to 'libgfortran/io/unit.c')
-rw-r--r--libgfortran/io/unit.c1
1 files changed, 0 insertions, 1 deletions
diff --git a/libgfortran/io/unit.c b/libgfortran/io/unit.c
index 2ea6643..b0cc6ab 100644
--- a/libgfortran/io/unit.c
+++ b/libgfortran/io/unit.c
@@ -456,7 +456,6 @@ set_internal_unit (st_parameter_dt *dtp, gfc_unit *iunit, int kind)
{
gfc_offset start_record = 0;
- iunit->unit_number = dtp->common.unit;
iunit->recl = dtp->internal_unit_len;
iunit->internal_unit = dtp->internal_unit;
iunit->internal_unit_len = dtp->internal_unit_len;