Module: wine Branch: master Commit: 0d36c27e3ba2019b6c660cae49bc8e207c033984 URL: http://source.winehq.org/git/wine.git/?a=commit;h=0d36c27e3ba2019b6c660cae49...
Author: Bernhard Loos bernhardloos@googlemail.com Date: Wed Sep 14 14:49:03 2011 +0200
server: ReleaseMutex doesn't need any access rights.
---
dlls/kernel32/tests/sync.c | 4 +++- server/mutex.c | 4 ++-- 2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/dlls/kernel32/tests/sync.c b/dlls/kernel32/tests/sync.c index dd87f3e..1695713 100644 --- a/dlls/kernel32/tests/sync.c +++ b/dlls/kernel32/tests/sync.c @@ -158,13 +158,15 @@ static void test_mutex(void) for (i = 0; i < 32; i++) { hOpened = OpenMutex(0x1 << i, FALSE, "WineTestMutex"); - ReleaseMutex(hCreated); if(hOpened != NULL) { + ret = ReleaseMutex(hOpened); + ok(ret, "ReleaseMutex failed with error %d, access %x\n", GetLastError(), 1 << i); CloseHandle(hOpened); } else { + ReleaseMutex(hCreated); failed |=0x1 << i; } } diff --git a/server/mutex.c b/server/mutex.c index faedcf3..d21f341 100644 --- a/server/mutex.c +++ b/server/mutex.c @@ -175,7 +175,7 @@ static int mutex_signal( struct object *obj, unsigned int access ) struct mutex *mutex = (struct mutex *)obj; assert( obj->ops == &mutex_ops );
- if (!(access & SYNCHRONIZE)) /* FIXME: MUTEX_MODIFY_STATE? */ + if (!(access & SYNCHRONIZE)) { set_error( STATUS_ACCESS_DENIED ); return 0; @@ -265,7 +265,7 @@ DECL_HANDLER(release_mutex) struct mutex *mutex;
if ((mutex = (struct mutex *)get_handle_obj( current->process, req->handle, - MUTEX_MODIFY_STATE, &mutex_ops ))) + 0, &mutex_ops ))) { if (!mutex->count || (mutex->owner != current)) set_error( STATUS_MUTANT_NOT_OWNED ); else