diff options
author | Tobias Burnus <tobias@codesourcery.com> | 2021-03-12 16:31:32 +0100 |
---|---|---|
committer | Tobias Burnus <tobias@codesourcery.com> | 2021-03-12 16:31:32 +0100 |
commit | a6e9633ccb593937fceec67fafc2afe5d518d735 (patch) | |
tree | 1d356aacf223cd2702f38474e74191764f217cec /libgfortran/io/unit.c | |
parent | 3bb345c9313ad8f6a6c24abd7d5eaa11413bbe22 (diff) | |
download | gcc-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.c | 1 |
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; |