summaryrefslogtreecommitdiffstats
path: root/lib/libpthread/thread/thr_open.c
diff options
context:
space:
mode:
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 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;
}
OpenPOWER on IntegriCloud