summaryrefslogtreecommitdiff
path: root/lib/libpthread/thread/thr_open.c
diff options
context:
space:
mode:
authorDavid Xu <davidxu@FreeBSD.org>2003-12-09 02:20:56 +0000
committerDavid Xu <davidxu@FreeBSD.org>2003-12-09 02:20:56 +0000
commit71679e629d6933bda40564da2a54894aed1358f3 (patch)
tree336614966b1df2677098ac89ea3a03fc82f7141b /lib/libpthread/thread/thr_open.c
parentef7af95abd4c13eb0c2cd6961ee08594bfcb7513 (diff)
Notes
Diffstat (limited to 'lib/libpthread/thread/thr_open.c')
-rw-r--r--lib/libpthread/thread/thr_open.c8
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;
}