Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'winsup/cygwin/thread.cc')
-rw-r--r--winsup/cygwin/thread.cc10
1 files changed, 6 insertions, 4 deletions
diff --git a/winsup/cygwin/thread.cc b/winsup/cygwin/thread.cc
index ad9061952..08eb10dd2 100644
--- a/winsup/cygwin/thread.cc
+++ b/winsup/cygwin/thread.cc
@@ -113,15 +113,17 @@ __cygwin_lock_unlock (_LOCK_T *lock)
}
static inline verifyable_object_state
-verifyable_object_isvalid (void const * objectptr, long magic, void *static_ptr1,
+verifyable_object_isvalid (void const *objectptr, long magic, void *static_ptr1,
void *static_ptr2, void *static_ptr3)
{
- verifyable_object **object = (verifyable_object **) objectptr;
-
myfault efault;
- if (efault.faulted ())
+ /* Check for NULL pointer specifically since it is a cheap test and avoids the
+ overhead of setting up the fault handler. */
+ if (!objectptr || efault.faulted ())
return INVALID_OBJECT;
+ verifyable_object **object = (verifyable_object **) objectptr;
+
if ((static_ptr1 && *object == static_ptr1) ||
(static_ptr2 && *object == static_ptr2) ||
(static_ptr3 && *object == static_ptr3))