Skip to content

Commit d51be28

Browse files
authored
gh-116738: Add critical section to dbm/gdbm context manager (gh-140391)
1 parent a4709e5 commit d51be28

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
@@ -515,8 +515,12 @@ dbm__enter__(PyObject *self, PyObject *Py_UNUSED(dummy))
515515
static PyObject *
516516
dbm__exit__(PyObject *self, PyObject *Py_UNUSED(args))
517517
{
518+
PyObject *result;
518519
dbmobject *dp = dbmobject_CAST(self);
519-
return _dbm_dbm_close_impl(dp);
520+
Py_BEGIN_CRITICAL_SECTION(self);
521+
result = _dbm_dbm_close_impl(dp);
522+
Py_END_CRITICAL_SECTION();
523+
return result;
520524
}
521525

522526
static PyMethodDef dbm_methods[] = {

Modules/_gdbmmodule.c

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -690,7 +690,11 @@ gdbm__enter__(PyObject *self, PyObject *args)
690690
static PyObject *
691691
gdbm__exit__(PyObject *self, PyObject *args)
692692
{
693-
return _gdbm_gdbm_close_impl((gdbmobject *)self);
693+
PyObject *result;
694+
Py_BEGIN_CRITICAL_SECTION(self);
695+
result = _gdbm_gdbm_close_impl((gdbmobject *)self);
696+
Py_END_CRITICAL_SECTION();
697+
return result;
694698
}
695699

696700
static PyMethodDef gdbm_methods[] = {

0 commit comments

Comments
 (0)