]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
gh-116738: Add critical section to dbm/gdbm context manager (gh-140391)
authorAlper <alperyoney@fb.com>
Wed, 22 Oct 2025 15:16:28 +0000 (08:16 -0700)
committerGitHub <noreply@github.com>
Wed, 22 Oct 2025 15:16:28 +0000 (11:16 -0400)
Modules/_dbmmodule.c
Modules/_gdbmmodule.c

index 06712015418cbccffb240b3e114525126962067d..f88861fa24423b774ded10a8763851ac3e7d0ac4 100644 (file)
@@ -515,8 +515,12 @@ dbm__enter__(PyObject *self, PyObject *Py_UNUSED(dummy))
 static PyObject *
 dbm__exit__(PyObject *self, PyObject *Py_UNUSED(args))
 {
+    PyObject *result;
     dbmobject *dp = dbmobject_CAST(self);
-    return _dbm_dbm_close_impl(dp);
+    Py_BEGIN_CRITICAL_SECTION(self);
+    result = _dbm_dbm_close_impl(dp);
+    Py_END_CRITICAL_SECTION();
+    return result;
 }
 
 static PyMethodDef dbm_methods[] = {
index a6e0662ae743e9af18a55fa798fe634d0118bdfe..72f568ceb0698710e06a13358cdd597e460c098a 100644 (file)
@@ -690,7 +690,11 @@ gdbm__enter__(PyObject *self, PyObject *args)
 static PyObject *
 gdbm__exit__(PyObject *self, PyObject *args)
 {
-    return _gdbm_gdbm_close_impl((gdbmobject *)self);
+    PyObject *result;
+    Py_BEGIN_CRITICAL_SECTION(self);
+    result = _gdbm_gdbm_close_impl((gdbmobject *)self);
+    Py_END_CRITICAL_SECTION();
+    return result;
 }
 
 static PyMethodDef gdbm_methods[] = {