From 7b70a6986c1342a79954771e1fc38bdce6c6c7ef Mon Sep 17 00:00:00 2001 From: jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Mon, 28 Nov 2005 07:16:33 +0000 Subject: [PATCH] * intrinsics/ftell.c (ftell, FTELL_SUB): Add unlock_unit call. * intrinsics/fget.c (fgetc, fputs): Likewise. * intrinsics/tty.c (ttynam): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@107595 138bc75d-0d04-0410-961f-82ee72b054a4 --- libgfortran/ChangeLog | 6 ++++++ libgfortran/intrinsics/fget.c | 6 +++++- libgfortran/intrinsics/ftell.c | 11 ++++++++--- libgfortran/intrinsics/tty.c | 2 ++ 4 files changed, 21 insertions(+), 4 deletions(-) diff --git a/libgfortran/ChangeLog b/libgfortran/ChangeLog index 216a0a70f5dc..b874dc57819e 100644 --- a/libgfortran/ChangeLog +++ b/libgfortran/ChangeLog @@ -1,3 +1,9 @@ +2005-11-28 Jakub Jelinek <jakub@redhat.com> + + * intrinsics/ftell.c (ftell, FTELL_SUB): Add unlock_unit call. + * intrinsics/fget.c (fgetc, fputs): Likewise. + * intrinsics/tty.c (ttynam): Likewise. + 2005-11-27 Jerry DeLisle <jvdelisle@gcc.gnu.org> PR libgfortran/25109 diff --git a/libgfortran/intrinsics/fget.c b/libgfortran/intrinsics/fget.c index 8eb96e3b98d8..5c87ae6c3c11 100644 --- a/libgfortran/intrinsics/fget.c +++ b/libgfortran/intrinsics/fget.c @@ -54,6 +54,7 @@ PREFIX(fgetc) (const int * unit, char * c, gfc_charlen_type c_len) s = 1; memset (c, ' ', c_len); ret = sread (u->s, c, &s); + unlock_unit (u); if (ret != 0) return ret; @@ -118,13 +119,16 @@ PREFIX(fputc) (const int * unit, char * c, gfc_charlen_type c_len __attribute__((unused))) { size_t s; + int ret; gfc_unit * u = find_unit (*unit); if (u == NULL) return -1; s = 1; - return swrite (u->s, c, &s); + ret = swrite (u->s, c, &s); + unlock_unit (u); + return ret; } diff --git a/libgfortran/intrinsics/ftell.c b/libgfortran/intrinsics/ftell.c index 16cf275c4dc6..311f070cd160 100644 --- a/libgfortran/intrinsics/ftell.c +++ b/libgfortran/intrinsics/ftell.c @@ -42,10 +42,12 @@ size_t PREFIX(ftell) (int * unit) { gfc_unit * u = find_unit (*unit); + size_t ret; if (u == NULL) return ((size_t) -1); - else - return ((size_t) stream_offset (u->s)); + ret = (size_t) stream_offset (u->s); + unlock_unit (u); + return ret; } #define FTELL_SUB(kind) \ @@ -58,7 +60,10 @@ PREFIX(ftell) (int * unit) if (u == NULL) \ *offset = -1; \ else \ - *offset = stream_offset (u->s); \ + { \ + *offset = stream_offset (u->s); \ + unlock_unit (u); \ + } \ } FTELL_SUB(1) diff --git a/libgfortran/intrinsics/tty.c b/libgfortran/intrinsics/tty.c index 63c2a5e6d76d..93416f9983c2 100644 --- a/libgfortran/intrinsics/tty.c +++ b/libgfortran/intrinsics/tty.c @@ -121,8 +121,10 @@ ttynam (char ** name, gfc_charlen_type * name_len, int unit) { *name_len = strlen (*name); *name = strdup (*name); + unlock_unit (u); return; } + unlock_unit (u); } *name_len = 0; -- GitLab