https://github.com/python/cpython/commit/d51be28876ac0715b6fc674ef41618d214021348
commit: d51be28876ac0715b6fc674ef41618d214021348
branch: main
author: Alper <[email protected]>
committer: colesbury <[email protected]>
date: 2025-10-22T11:16:28-04:00
summary:

gh-116738: Add critical section to dbm/gdbm context manager (gh-140391)

files:
M Modules/_dbmmodule.c
M Modules/_gdbmmodule.c

diff --git a/Modules/_dbmmodule.c b/Modules/_dbmmodule.c
index 06712015418cbc..f88861fa24423b 100644
--- a/Modules/_dbmmodule.c
+++ b/Modules/_dbmmodule.c
@@ -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[] = {
diff --git a/Modules/_gdbmmodule.c b/Modules/_gdbmmodule.c
index a6e0662ae743e9..72f568ceb06987 100644
--- a/Modules/_gdbmmodule.c
+++ b/Modules/_gdbmmodule.c
@@ -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[] = {

_______________________________________________
Python-checkins mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3//lists/python-checkins.python.org
Member address: [email protected]

Reply via email to