diff --git a/src/hb-mutex-private.hh b/src/hb-mutex-private.hh
index 5a743375f..3cc47e9aa 100644
--- a/src/hb-mutex-private.hh
+++ b/src/hb-mutex-private.hh
@@ -71,13 +71,13 @@ typedef CRITICAL_SECTION hb_mutex_t;
 
 #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