From: Harald Anlauf Date: Thu, 28 May 2020 19:53:17 +0000 (+0200) Subject: PR fortran/95104 - Segfault on a legal WAIT statement X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=6ce3d791dfcba469e709935aba5743640f7d4959;p=gcc.git PR fortran/95104 - Segfault on a legal WAIT statement The initial commit for this PR uncovered a latent issue with unit locking in the Fortran run-time library. Add check for valid unit. 2020-05-28 Harald Anlauf libgfortran/ PR libfortran/95104 * io/unit.c (unlock_unit): Guard by check for NULL pointer. --- diff --git a/libgfortran/io/unit.c b/libgfortran/io/unit.c index 0030d7e8701..a3b0656cb90 100644 --- a/libgfortran/io/unit.c +++ b/libgfortran/io/unit.c @@ -767,9 +767,12 @@ close_unit_1 (gfc_unit *u, int locked) void unlock_unit (gfc_unit *u) { - NOTE ("unlock_unit = %d", u->unit_number); - UNLOCK (&u->lock); - NOTE ("unlock_unit done"); + if (u) + { + NOTE ("unlock_unit = %d", u->unit_number); + UNLOCK (&u->lock); + NOTE ("unlock_unit done"); + } } /* close_unit()-- Close a unit. The stream is closed, and any memory