File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -54,8 +54,17 @@ struct lua_extra_state {
5454#define lua_lock (L ) EnterCriticalSection(luai_mutex(L))
5555#define lua_unlock (L ) LeaveCriticalSection(luai_mutex(L))
5656#else
57- #define luai_userstateopen (L ) luai_mutex(L) = (mutex_t*)malloc(sizeof(mutex_t)); *luai_mutex(L) = PTHREAD_MUTEX_INITIALIZER
58- #define luai_userstateclose (L ) lua_unlock(L); pthread_mutex_destroy(luai_mutex(L)); free(luai_mutex(L))
57+ #define luai_userstateopen (L ) do { \
58+ luai_mutex(L) = (mutex_t*)malloc(sizeof(mutex_t)); \
59+ pthread_mutexattr_t attr; \
60+ pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE); \
61+ pthread_mutex_init(luai_mutex(L), &attr); \
62+ } while (0)
63+ #define luai_userstateclose (L ) do { \
64+ lua_unlock(L); \
65+ pthread_mutex_destroy(luai_mutex(L)); \
66+ free(luai_mutex(L)); \
67+ } while (0)
5968#define lua_lock (L ) pthread_mutex_lock(luai_mutex(L))
6069#define lua_unlock (L ) pthread_mutex_unlock(luai_mutex(L))
6170#endif
You can’t perform that action at this time.
0 commit comments