Issue #23998: PyImport_ReInitLock() now checks for lock allocation error
diff --git a/Misc/NEWS b/Misc/NEWS
index 7577f00..b06d5b1 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -263,6 +263,8 @@
 C API
 -----
 
+- Issue #23998: PyImport_ReInitLock() now checks for lock allocation error
+
 - Issue #22079: PyType_Ready() now checks that statically allocated type has
   no dynamically allocated bases.
 
diff --git a/Python/import.c b/Python/import.c
index 92363b3..e47ce63 100644
--- a/Python/import.c
+++ b/Python/import.c
@@ -337,8 +337,12 @@
 void
 _PyImport_ReInitLock(void)
 {
-    if (import_lock != NULL)
+    if (import_lock != NULL) {
         import_lock = PyThread_allocate_lock();
+        if (import_lock == NULL) {
+            Py_FatalError("PyImport_ReInitLock failed to create a new lock");
+        }
+    }
     import_lock_thread = -1;
     import_lock_level = 0;
 }