aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libgfortran/ChangeLog6
-rw-r--r--libgfortran/io/unit.c9
2 files changed, 15 insertions, 0 deletions
diff --git a/libgfortran/ChangeLog b/libgfortran/ChangeLog
index bd1aecb..8517cae 100644
--- a/libgfortran/ChangeLog
+++ b/libgfortran/ChangeLog
@@ -1,3 +1,9 @@
+2006-06-18 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
+
+ PR libgomp/27254
+ * io/unit.c (get_internal_unit): Initialize and lock thread mutex
+ for internal units.
+
2006-06-06 Janne Blomqvist <jb@gcc.gnu.org>
* m4/in_pack.m4: Add TODO comment about detecting temporaries,
diff --git a/libgfortran/io/unit.c b/libgfortran/io/unit.c
index 14438f8..0b7dee1 100644
--- a/libgfortran/io/unit.c
+++ b/libgfortran/io/unit.c
@@ -376,6 +376,15 @@ get_internal_unit (st_parameter_dt *dtp)
}
memset (iunit, '\0', sizeof (gfc_unit));
+#ifdef __GTHREAD_MUTEX_INIT
+ {
+ __gthread_mutex_t tmp = __GTHREAD_MUTEX_INIT;
+ iunit->lock = tmp;
+ }
+#else
+ __GTHREAD_MUTEX_INIT_FUNCTION (&iunit->lock);
+#endif
+ __gthread_mutex_lock (&iunit->lock);
iunit->recl = dtp->internal_unit_len;