diff options
author | Janne Blomqvist <jb@gcc.gnu.org> | 2011-06-11 13:52:18 +0300 |
---|---|---|
committer | Janne Blomqvist <jb@gcc.gnu.org> | 2011-06-11 13:52:18 +0300 |
commit | 09ad57ec8fa24e40b2364d1d67218c65acedaf4d (patch) | |
tree | 52efaae296e32e1cb15ce5aac3ccf45942fdb8fe /libgfortran/io | |
parent | 5ea0705af7ff3e31d669808cc1c39b673b7122f8 (diff) | |
download | gcc-09ad57ec8fa24e40b2364d1d67218c65acedaf4d.zip gcc-09ad57ec8fa24e40b2364d1d67218c65acedaf4d.tar.gz gcc-09ad57ec8fa24e40b2364d1d67218c65acedaf4d.tar.bz2 |
Return error when trying to seek a non-seekable buffered file
From-SVN: r174947
Diffstat (limited to 'libgfortran/io')
-rw-r--r-- | libgfortran/io/unix.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/libgfortran/io/unix.c b/libgfortran/io/unix.c index e3ae607..25cb559 100644 --- a/libgfortran/io/unix.c +++ b/libgfortran/io/unix.c @@ -560,6 +560,11 @@ buf_write (unix_stream * s, const void * buf, ssize_t nbyte) static gfc_offset buf_seek (unix_stream * s, gfc_offset offset, int whence) { + if (s->file_length == -1) + { + errno = ESPIPE; + return -1; + } switch (whence) { case SEEK_SET: @@ -585,7 +590,7 @@ buf_seek (unix_stream * s, gfc_offset offset, int whence) static gfc_offset buf_tell (unix_stream * s) { - return s->logical_offset; + return buf_seek (s, 0, SEEK_CUR); } static int |