diff options
author | Corinna Vinschen <corinna@vinschen.de> | 2005-07-05 11:28:52 +0400 |
---|---|---|
committer | Corinna Vinschen <corinna@vinschen.de> | 2005-07-05 11:28:52 +0400 |
commit | 4ae72e8c0eafa40c08b8e16c124fecf49148fee9 (patch) | |
tree | 6a8cc092ffe8fccc7671c80a4ce5ab69ea66fa0f /winsup/cygwin/fhandler_tape.cc | |
parent | 35e456b7f573af8970ccfdea37d160597a471aaa (diff) |
* fhandler_tape.cc (fhandler_dev_tape::close): Don't do "extra stuff"
when we know we're execing.
Diffstat (limited to 'winsup/cygwin/fhandler_tape.cc')
-rw-r--r-- | winsup/cygwin/fhandler_tape.cc | 19 |
1 files changed, 12 insertions, 7 deletions
diff --git a/winsup/cygwin/fhandler_tape.cc b/winsup/cygwin/fhandler_tape.cc index b251d700c..d3fd3eee2 100644 --- a/winsup/cygwin/fhandler_tape.cc +++ b/winsup/cygwin/fhandler_tape.cc @@ -1243,17 +1243,22 @@ fhandler_dev_tape::open (int flags, mode_t) int fhandler_dev_tape::close () { - int ret, cret; + int ret = 0; + int cret = 0; - lock (-1); - ret = mt->drive (driveno ())->close (get_handle (), is_rewind_device ()); + if (!hExeced) + { + lock (-1); + ret = mt->drive (driveno ())->close (get_handle (), is_rewind_device ()); + if (ret) + __seterrno_from_win_error (ret); + cret = fhandler_dev_raw::close (); + unlock (0); + } if (mt_evt) CloseHandle (mt_evt); CloseHandle (mt_mtx); - if (ret) - __seterrno_from_win_error (ret); - cret = fhandler_dev_raw::close (); - return unlock (ret ? -1 : cret); + return ret ? -1 : cret; } void |