Commit ddbdee33 authored by simonmar's avatar simonmar
Browse files

[project @ 2003-12-15 14:28:39 by simonmar]

Fix bogosity in implementation of ACQUIRE_LOCK/RELEASE_LOCK on Win32.
These functions were essentially doing nothing, due to a missing
dereference on the argument.

I've rewritten them as inlines (to catch type errors) and added some
checking of the return values, which should help catch errors like
this in the future.
parent 1b170b6c
......@@ -38,8 +38,22 @@ typedef DWORD OSThreadId;
#define INIT_MUTEX_VAR 0
#define INIT_COND_VAR 0
#define ACQUIRE_LOCK(mutex) WaitForSingleObject(mutex,INFINITE)
#define RELEASE_LOCK(mutex) ReleaseMutex(mutex)
static inline void
ACQUIRE_LOCK(Mutex *mutex)
{
if (WaitForSingleObject(*mutex,INFINITE) == WAIT_FAILED) {
barf("WaitForSingleObject: %d", GetLastError());
}
}
static inline void
RELEASE_LOCK(Mutex *mutex)
{
if (ReleaseMutex(*mutex) == 0) {
barf("ReleaseMutex: %d", GetLastError());
}
}
# else
# error "Threads not supported"
# endif
......
Supports Markdown
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