diff --git a/quickjs.c b/quickjs.c
index ccf0916..5098719 100644
@@ -3371,12 +3371,18 @@ static inline BOOL JS_IsEmptyString(JSValueConst v)
JSClassID JS_NewClassID(JSClassID *pclass_id)
{
JSClassID class_id;
- /* XXX: make it thread safe */
+#ifdef CONFIG_ATOMICS
+ static atomic_flag lock = ATOMIC_FLAG_INIT;
+ while(atomic_flag_test_and_set_explicit(&lock, memory_order_acquire));
+#endif
class_id = *pclass_id;
if (class_id == 0) {
class_id = js_class_id_alloc++;
*pclass_id = class_id;
}
+#ifdef CONFIG_ATOMICS
+ atomic_flag_clear_explicit(&lock, memory_order_release);
+#endif
return class_id;
}