From 2a7d6f6af32cca52e520429e73cbbe71c6ade8f8 Mon Sep 17 00:00:00 2001 From: alperyoney Date: Mon, 20 Oct 2025 11:48:58 -0700 Subject: [PATCH] gh-116738: Add critical section to dbm/gdbm context manager --- Modules/_dbmmodule.c | 6 +++++- Modules/_gdbmmodule.c | 6 +++++- 2 files changed, 10 insertions(+), 2 deletions(-) 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[] = {