Skip to content

Commit 01b52ea

Browse files
[3.14] gh-116738: Add critical section to dbm/gdbm context manager (gh-140391) (gh-140459)
(cherry picked from commit d51be28) Co-authored-by: Alper <[email protected]>
1 parent 9d547da commit 01b52ea

File tree

2 files changed

+10
-2
lines changed

2 files changed

+10
-2
lines changed

Modules/_dbmmodule.c

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -523,8 +523,12 @@ dbm__enter__(PyObject *self, PyObject *Py_UNUSED(dummy))
523523
static PyObject *
524524
dbm__exit__(PyObject *self, PyObject *Py_UNUSED(args))
525525
{
526+
PyObject *result;
526527
dbmobject *dp = dbmobject_CAST(self);
527-
return _dbm_dbm_close_impl(dp);
528+
Py_BEGIN_CRITICAL_SECTION(self);
529+
result = _dbm_dbm_close_impl(dp);
530+
Py_END_CRITICAL_SECTION();
531+
return result;
528532
}
529533

530534
static PyMethodDef dbm_methods[] = {

Modules/_gdbmmodule.c

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -695,7 +695,11 @@ gdbm__enter__(PyObject *self, PyObject *args)
695695
static PyObject *
696696
gdbm__exit__(PyObject *self, PyObject *args)
697697
{
698-
return _gdbm_gdbm_close_impl((gdbmobject *)self);
698+
PyObject *result;
699+
Py_BEGIN_CRITICAL_SECTION(self);
700+
result = _gdbm_gdbm_close_impl((gdbmobject *)self);
701+
Py_END_CRITICAL_SECTION();
702+
return result;
699703
}
700704

701705
static PyMethodDef gdbm_methods[] = {

0 commit comments

Comments
 (0)