]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
bpo-36139: Fix mmap_object_dealloc(): hold the GIL to call PyMem_Free() (GH-12199)
authorDavide Rizzo <sorcio@gmail.com>
Wed, 6 Mar 2019 17:08:31 +0000 (18:08 +0100)
committerVictor Stinner <vstinner@redhat.com>
Wed, 6 Mar 2019 17:08:31 +0000 (18:08 +0100)
Modules/mmapmodule.c

index 326288cccde54a002b9ff4f8ba528c0592ce87f8..6ddbf70d9a9789eafe8c584773a6fcf038ed5d83 100644 (file)
@@ -117,26 +117,28 @@ typedef struct {
 static void
 mmap_object_dealloc(mmap_object *m_obj)
 {
-    Py_BEGIN_ALLOW_THREADS
 #ifdef MS_WINDOWS
+    Py_BEGIN_ALLOW_THREADS
     if (m_obj->data != NULL)
         UnmapViewOfFile (m_obj->data);
     if (m_obj->map_handle != NULL)
         CloseHandle (m_obj->map_handle);
     if (m_obj->file_handle != INVALID_HANDLE_VALUE)
         CloseHandle (m_obj->file_handle);
+    Py_END_ALLOW_THREADS
     if (m_obj->tagname)
         PyMem_Free(m_obj->tagname);
 #endif /* MS_WINDOWS */
 
 #ifdef UNIX
+    Py_BEGIN_ALLOW_THREADS
     if (m_obj->fd >= 0)
         (void) close(m_obj->fd);
     if (m_obj->data!=NULL) {
         munmap(m_obj->data, m_obj->size);
     }
-#endif /* UNIX */
     Py_END_ALLOW_THREADS
+#endif /* UNIX */
 
     if (m_obj->weakreflist != NULL)
         PyObject_ClearWeakRefs((PyObject *) m_obj);