OSDN Git Service

* thread.cc (verifyable_object_isvalid): Check for NULL specifically.
authorcgf <cgf>
Sat, 27 May 2006 19:00:36 +0000 (19:00 +0000)
committercgf <cgf>
Sat, 27 May 2006 19:00:36 +0000 (19:00 +0000)
winsup/cygwin/ChangeLog
winsup/cygwin/thread.cc

index 784f58e..c2c32cb 100644 (file)
@@ -1,5 +1,9 @@
 2006-05-27  Christopher Faylor  <cgf@timesys.com>
 
+       * thread.cc (verifyable_object_isvalid): Check for NULL specifically.
+
+2006-05-27  Christopher Faylor  <cgf@timesys.com>
+
        * dll_init.cc (dll_dllcrt0): Call _my_tls.init_exception_handler if
        we've finished initializing (Thanks to Gary Zablackis for noticing this
        problem).  Just use cygwin_finished_initializing rather than defining a
index ad90619..08eb10d 100644 (file)
@@ -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))