Commit 527a985a authored by Bernhard Loos's avatar Bernhard Loos Committed by Alexandre Julliard

server: Correct mapping of mutex access rights.

parent 0d36c27e
...@@ -140,7 +140,7 @@ static void test_mutex(void) ...@@ -140,7 +140,7 @@ static void test_mutex(void)
hOpened = OpenMutex(GENERIC_EXECUTE, FALSE, "WineTestMutex"); hOpened = OpenMutex(GENERIC_EXECUTE, FALSE, "WineTestMutex");
ok(hOpened != NULL, "OpenMutex failed with error %d\n", GetLastError()); ok(hOpened != NULL, "OpenMutex failed with error %d\n", GetLastError());
wait_ret = WaitForSingleObject(hOpened, INFINITE); wait_ret = WaitForSingleObject(hOpened, INFINITE);
todo_wine ok(wait_ret == WAIT_OBJECT_0, "WaitForSingleObject failed with error %d\n", GetLastError()); ok(wait_ret == WAIT_OBJECT_0, "WaitForSingleObject failed with error %d\n", GetLastError());
CloseHandle(hOpened); CloseHandle(hOpened);
for(i=0; i < 31; i++) for(i=0; i < 31; i++)
...@@ -152,7 +152,7 @@ static void test_mutex(void) ...@@ -152,7 +152,7 @@ static void test_mutex(void)
hOpened = OpenMutex(GENERIC_READ | GENERIC_WRITE, FALSE, "WineTestMutex"); hOpened = OpenMutex(GENERIC_READ | GENERIC_WRITE, FALSE, "WineTestMutex");
ok(hOpened != NULL, "OpenMutex failed with error %d\n", GetLastError()); ok(hOpened != NULL, "OpenMutex failed with error %d\n", GetLastError());
wait_ret = WaitForSingleObject(hOpened, INFINITE); wait_ret = WaitForSingleObject(hOpened, INFINITE);
todo_wine ok(wait_ret == WAIT_FAILED, "WaitForSingleObject succeeded\n"); ok(wait_ret == WAIT_FAILED, "WaitForSingleObject succeeded\n");
CloseHandle(hOpened); CloseHandle(hOpened);
for (i = 0; i < 32; i++) for (i = 0; i < 32; i++)
......
...@@ -163,9 +163,9 @@ static int mutex_satisfied( struct object *obj, struct thread *thread ) ...@@ -163,9 +163,9 @@ static int mutex_satisfied( struct object *obj, struct thread *thread )
static unsigned int mutex_map_access( struct object *obj, unsigned int access ) static unsigned int mutex_map_access( struct object *obj, unsigned int access )
{ {
if (access & GENERIC_READ) access |= STANDARD_RIGHTS_READ | SYNCHRONIZE; if (access & GENERIC_READ) access |= STANDARD_RIGHTS_READ;
if (access & GENERIC_WRITE) access |= STANDARD_RIGHTS_WRITE | MUTEX_MODIFY_STATE; if (access & GENERIC_WRITE) access |= STANDARD_RIGHTS_WRITE;
if (access & GENERIC_EXECUTE) access |= STANDARD_RIGHTS_EXECUTE; if (access & GENERIC_EXECUTE) access |= STANDARD_RIGHTS_EXECUTE | SYNCHRONIZE;
if (access & GENERIC_ALL) access |= STANDARD_RIGHTS_ALL | MUTEX_ALL_ACCESS; if (access & GENERIC_ALL) access |= STANDARD_RIGHTS_ALL | MUTEX_ALL_ACCESS;
return access & ~(GENERIC_READ | GENERIC_WRITE | GENERIC_EXECUTE | GENERIC_ALL); return access & ~(GENERIC_READ | GENERIC_WRITE | GENERIC_EXECUTE | GENERIC_ALL);
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment