summaryrefslogtreecommitdiffstats
path: root/winsup/cygwin/thread.cc
diff options
context:
space:
mode:
Diffstat (limited to 'winsup/cygwin/thread.cc')
-rw-r--r--winsup/cygwin/thread.cc8
1 files changed, 4 insertions, 4 deletions
diff --git a/winsup/cygwin/thread.cc b/winsup/cygwin/thread.cc
index 0a167fa4d..8fdbf3610 100644
--- a/winsup/cygwin/thread.cc
+++ b/winsup/cygwin/thread.cc
@@ -1709,7 +1709,7 @@ pthread_mutex::pthread_mutex (pthread_mutexattr *attr) :
tid (0),
#endif
recursion_counter (0), condwaits (0),
- type (PTHREAD_MUTEX_ERRORCHECK),
+ type (PTHREAD_MUTEX_NORMAL),
pshared (PTHREAD_PROCESS_PRIVATE)
{
win32_obj_id = ::CreateEvent (&sec_none_nih, false, false, NULL);
@@ -1777,7 +1777,7 @@ pthread_mutex::unlock ()
if (type == PTHREAD_MUTEX_NORMAL)
/* no error checking */;
else if (no_owner ())
- res = type == PTHREAD_MUTEX_ERRORCHECK ? EINVAL : 0;
+ res = type == PTHREAD_MUTEX_ERRORCHECK ? EPERM : 0;
else if (!pthread::equal (owner, self))
res = EPERM;
if (!res && recursion_counter > 0 && --recursion_counter == 0)
@@ -1851,7 +1851,7 @@ pthread_mutex::_fixup_after_fork ()
}
pthread_mutexattr::pthread_mutexattr ():verifyable_object (PTHREAD_MUTEXATTR_MAGIC),
-pshared (PTHREAD_PROCESS_PRIVATE), mutextype (PTHREAD_MUTEX_ERRORCHECK)
+pshared (PTHREAD_PROCESS_PRIVATE), mutextype (PTHREAD_MUTEX_NORMAL)
{
}
@@ -3159,7 +3159,7 @@ extern "C" int
pthread_mutex_unlock (pthread_mutex_t *mutex)
{
if (pthread_mutex::is_initializer (mutex))
- return EPERM;
+ pthread_mutex::init (mutex, NULL, *mutex);
if (!pthread_mutex::is_good_object (mutex))
return EINVAL;
return (*mutex)->unlock ();