Thanks to visit codestin.com
Credit goes to github.com

Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Use 'X' prefix for consistency with Py_XDECREF, Py_XNewRef, etc.
  • Loading branch information
colesbury committed Feb 14, 2024
commit f6ba3b931723f37247fdb34cf67efae0bf26007c
12 changes: 6 additions & 6 deletions Include/internal/pycore_critical_section.h
Original file line number Diff line number Diff line change
Expand Up @@ -96,13 +96,13 @@ extern "C" {
_PyCriticalSection_End(&_cs); \
}

# define Py_BEGIN_CRITICAL_SECTION_OPT(op) \
# define Py_XBEGIN_CRITICAL_SECTION(op) \
{ \
_PyCriticalSection _cs_opt = {0}; \
_PyCriticalSection_BeginOpt(&_cs_opt, _PyObject_CAST(op))
_PyCriticalSection_XBegin(&_cs_opt, _PyObject_CAST(op))

# define Py_END_CRITICAL_SECTION_OPT() \
_PyCriticalSection_EndOpt(&_cs_opt); \
# define Py_XEND_CRITICAL_SECTION() \
_PyCriticalSection_XEnd(&_cs_opt); \
}

# define Py_BEGIN_CRITICAL_SECTION2(a, b) \
Expand Down Expand Up @@ -199,7 +199,7 @@ _PyCriticalSection_Begin(_PyCriticalSection *c, PyMutex *m)
}

static inline void
_PyCriticalSection_BeginOpt(_PyCriticalSection *c, PyObject *op)
_PyCriticalSection_XBegin(_PyCriticalSection *c, PyObject *op)
{
#ifdef Py_GIL_DISABLED
if (op != NULL) {
Expand Down Expand Up @@ -231,7 +231,7 @@ _PyCriticalSection_End(_PyCriticalSection *c)
}

static inline void
_PyCriticalSection_EndOpt(_PyCriticalSection *c)
_PyCriticalSection_XEnd(_PyCriticalSection *c)
{
if (c->mutex) {
_PyCriticalSection_End(c);
Expand Down
8 changes: 4 additions & 4 deletions Modules/_testinternalcapi/test_critical_sections.c
Original file line number Diff line number Diff line change
Expand Up @@ -50,13 +50,13 @@ test_critical_sections(PyObject *self, PyObject *Py_UNUSED(args))
assert_nogil(!PyMutex_IsLocked(&d2->ob_mutex));

// Optional variant behaves the same if the object is non-NULL
Py_BEGIN_CRITICAL_SECTION_OPT(d1);
Py_XBEGIN_CRITICAL_SECTION(d1);
assert_nogil(PyMutex_IsLocked(&d1->ob_mutex));
Py_END_CRITICAL_SECTION_OPT();
Py_XEND_CRITICAL_SECTION();

// No-op
Py_BEGIN_CRITICAL_SECTION_OPT(NULL);
Py_END_CRITICAL_SECTION_OPT();
Py_XBEGIN_CRITICAL_SECTION(NULL);
Py_XEND_CRITICAL_SECTION();

Py_DECREF(d2);
Py_DECREF(d1);
Expand Down