aboutsummaryrefslogtreecommitdiff
path: root/libgfortran/intrinsics/ftell.c
diff options
context:
space:
mode:
Diffstat (limited to 'libgfortran/intrinsics/ftell.c')
-rw-r--r--libgfortran/intrinsics/ftell.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/libgfortran/intrinsics/ftell.c b/libgfortran/intrinsics/ftell.c
index 16cf275..311f070 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)