diff options
author | Christopher Faylor <me@cgf.cx> | 2006-05-27 19:00:36 +0000 |
---|---|---|
committer | Christopher Faylor <me@cgf.cx> | 2006-05-27 19:00:36 +0000 |
commit | 17fed6fefc2754998285a30898a4828293e83099 (patch) | |
tree | 9abe5ccd7d94511942dd57421b26fe6cee15a8f9 /winsup | |
parent | 939f16acf2176d67dbab8712e1c15f03ff10a9af (diff) | |
download | newlib-17fed6fefc2754998285a30898a4828293e83099.zip newlib-17fed6fefc2754998285a30898a4828293e83099.tar.gz newlib-17fed6fefc2754998285a30898a4828293e83099.tar.bz2 |
* thread.cc (verifyable_object_isvalid): Check for NULL specifically.
Diffstat (limited to 'winsup')
-rw-r--r-- | winsup/cygwin/ChangeLog | 4 | ||||
-rw-r--r-- | winsup/cygwin/thread.cc | 10 |
2 files changed, 10 insertions, 4 deletions
diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog index 784f58e..c2c32cb 100644 --- a/winsup/cygwin/ChangeLog +++ b/winsup/cygwin/ChangeLog @@ -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 diff --git a/winsup/cygwin/thread.cc b/winsup/cygwin/thread.cc index ad90619..08eb10d 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)) |