diff options
Diffstat (limited to 'lib/libpthread/thread/thr_open.c')
-rw-r--r-- | lib/libpthread/thread/thr_open.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/lib/libpthread/thread/thr_open.c b/lib/libpthread/thread/thr_open.c index ec60ba4..8ac625d 100644 --- a/lib/libpthread/thread/thr_open.c +++ b/lib/libpthread/thread/thr_open.c @@ -50,7 +50,7 @@ __open(const char *path, int flags,...) int mode = 0; va_list ap; - _thr_enter_cancellation_point(curthread); + _thr_cancel_enter(curthread); /* Check if the file is being created: */ if (flags & O_CREAT) { @@ -61,7 +61,11 @@ __open(const char *path, int flags,...) } ret = __sys_open(path, flags, mode); - _thr_leave_cancellation_point(curthread); + /* + * To avoid possible file handle leak, + * only check cancellation point if it is failure + */ + _thr_cancel_leave(curthread, (ret == -1)); return ret; } |