diff options
author | Klaus Schmidinger <vdr@tvdr.de> | 2009-05-31 11:47:05 +0200 |
---|---|---|
committer | Klaus Schmidinger <vdr@tvdr.de> | 2009-05-31 11:47:05 +0200 |
commit | 81cc592c336b45b32086cfeeec2495e0f7f2ded2 (patch) | |
tree | 15a09c17f66f8dd9dade5ff658eb4439d3207ecd | |
parent | 3de4811a424e984a1dfa271a3be5f4137c935bc1 (diff) | |
download | vdr-81cc592c336b45b32086cfeeec2495e0f7f2ded2.tar.gz vdr-81cc592c336b45b32086cfeeec2495e0f7f2ded2.tar.bz2 |
Fixed calling close(-1) in cUnbufferedFile::Close()
-rw-r--r-- | CONTRIBUTORS | 1 | ||||
-rw-r--r-- | HISTORY | 1 | ||||
-rw-r--r-- | tools.c | 14 |
3 files changed, 10 insertions, 6 deletions
diff --git a/CONTRIBUTORS b/CONTRIBUTORS index eb6dfc90..8b289bf7 100644 --- a/CONTRIBUTORS +++ b/CONTRIBUTORS @@ -1218,6 +1218,7 @@ Reinhard Nissl <rnissl@gmx.de> for reporting a typo in aspect ratio 2.21:1 for reporting a problem in case the PIDs change during recording for reporting a memory leak when reaching the end of a recording during replay + for reporting a call to close(-1) in cUnbufferedFile::Close() Richard Robson <richard_robson@beeb.net> for reporting freezing replay if a timer starts while in Transfer Mode from the @@ -6114,3 +6114,4 @@ Video Disk Recorder Revision History - Updated the Ukrainian OSD texts (thanks to Yarema Aka Knedlyk). - Fixed a memory leak when reaching the end of a recording during replay (reported by Reinhard Nissl). +- Fixed calling close(-1) in cUnbufferedFile::Close() (reported by Reinhard Nissl). @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: tools.c 2.2 2009/01/16 14:29:08 kls Exp $ + * $Id: tools.c 2.3 2009/05/31 11:43:24 kls Exp $ */ #include "tools.h" @@ -1473,16 +1473,18 @@ int cUnbufferedFile::Open(const char *FileName, int Flags, mode_t Mode) int cUnbufferedFile::Close(void) { -#ifdef USE_FADVISE if (fd >= 0) { +#ifdef USE_FADVISE if (totwritten) // if we wrote anything make sure the data has hit the disk before fdatasync(fd); // calling fadvise, as this is our last chance to un-cache it. posix_fadvise(fd, 0, 0, POSIX_FADV_DONTNEED); - } #endif - int OldFd = fd; - fd = -1; - return close(OldFd); + int OldFd = fd; + fd = -1; + return close(OldFd); + } + errno = EBADF; + return -1; } // When replaying and going e.g. FF->PLAY the position jumps back 2..8M |