#warning "Could not find any system to define platform macros, library will NOT be thread-safe"
-typedef volatile int hb_mutex_t;
+typedef struct { volatile int m; } hb_mutex_t;
#define HB_MUTEX_INIT 0
-#define hb_mutex_init(M) ((void) (*(M) = 0))
-#define hb_mutex_lock(M) ((void) (*(M) = 1))
-#define hb_mutex_trylock(M) (*(M) = 1, 1)
-#define hb_mutex_unlock(M) ((void) (*(M) = 0))
-#define hb_mutex_free(M) ((void) (*(M) = 2))
+#define hb_mutex_init(M) ((void) ((M)->m = 0))
+#define hb_mutex_lock(M) ((void) ((M)->m = 1))
+#define hb_mutex_trylock(M) ((M)->m = 1, 1)
+#define hb_mutex_unlock(M) ((void) ((M)->m = 0))
+#define hb_mutex_free(M) ((void) ((M)-M = 2))
#endif