https://github.com/python/cpython/commit/01b52ea5c03ed83dbf44369b75f3b158c14dd912
commit: 01b52ea5c03ed83dbf44369b75f3b158c14dd912
branch: 3.14
author: Miss Islington (bot) <[email protected]>
committer: colesbury <[email protected]>
date: 2025-10-22T15:44:09Z
summary:

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

(cherry picked from commit d51be28876ac0715b6fc674ef41618d214021348)

Co-authored-by: Alper <[email protected]>

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

diff --git a/Modules/_dbmmodule.c b/Modules/_dbmmodule.c
index 0cd0f043de453d..c393cde21f5491 100644
--- a/Modules/_dbmmodule.c
+++ b/Modules/_dbmmodule.c
@@ -523,8 +523,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 ce8696d9225e72..d9abab19719789 100644
--- a/Modules/_gdbmmodule.c
+++ b/Modules/_gdbmmodule.c
@@ -695,7 +695,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