diff options
| author | David Xu <davidxu@FreeBSD.org> | 2003-12-09 02:20:56 +0000 |
|---|---|---|
| committer | David Xu <davidxu@FreeBSD.org> | 2003-12-09 02:20:56 +0000 |
| commit | 71679e629d6933bda40564da2a54894aed1358f3 (patch) | |
| tree | 336614966b1df2677098ac89ea3a03fc82f7141b /lib/libpthread/thread/thr_open.c | |
| parent | ef7af95abd4c13eb0c2cd6961ee08594bfcb7513 (diff) | |
Notes
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 ec60ba4e723a..8ac625d8a30f 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; } |
