summaryrefslogtreecommitdiffstats
path: root/Python/pystate.c
diff options
context:
space:
mode:
authorEric Snow <ericsnowcurrently@gmail.com>2023-06-08 21:05:47 (GMT)
committerGitHub <noreply@github.com>2023-06-08 21:05:47 (GMT)
commitb08ea9a561e93e421e55b6eba5da350e6919708e (patch)
treeb397169c3d13eb9554750ee3d747a1d9a826d5be /Python/pystate.c
parent2ad2bd8b14505ee92600e7988379cfac63086dab (diff)
downloadcpython-b08ea9a561e93e421e55b6eba5da350e6919708e.zip
cpython-b08ea9a561e93e421e55b6eba5da350e6919708e.tar.gz
cpython-b08ea9a561e93e421e55b6eba5da350e6919708e.tar.bz2
[3.12] gh-100227: Lock Around Adding Global Audit Hooks (gh-105515) (gh-105525)
The risk of a race with this state is relatively low, but we play it safe anyway. (cherry picked from commit e822a676f1f3bef6c5413e9b856db481c08ac2a5)
Diffstat (limited to 'Python/pystate.c')
-rw-r--r--Python/pystate.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/Python/pystate.c b/Python/pystate.c
index e3a010a..14ae165 100644
--- a/Python/pystate.c
+++ b/Python/pystate.c
@@ -380,7 +380,7 @@ _Py_COMP_DIAG_IGNORE_DEPR_DECLS
static const _PyRuntimeState initial = _PyRuntimeState_INIT(_PyRuntime);
_Py_COMP_DIAG_POP
-#define NUMLOCKS 6
+#define NUMLOCKS 7
#define LOCKS_INIT(runtime) \
{ \
&(runtime)->interpreters.mutex, \
@@ -389,6 +389,7 @@ _Py_COMP_DIAG_POP
&(runtime)->unicode_state.ids.lock, \
&(runtime)->imports.extensions.mutex, \
&(runtime)->atexit.mutex, \
+ &(runtime)->audit_hooks.mutex, \
}
static int
@@ -432,7 +433,7 @@ init_runtime(_PyRuntimeState *runtime,
runtime->open_code_hook = open_code_hook;
runtime->open_code_userdata = open_code_userdata;
- runtime->audit_hook_head = audit_hook_head;
+ runtime->audit_hooks.head = audit_hook_head;
PyPreConfig_InitPythonConfig(&runtime->preconfig);
@@ -458,7 +459,7 @@ _PyRuntimeState_Init(_PyRuntimeState *runtime)
initialization and interpreter initialization. */
void *open_code_hook = runtime->open_code_hook;
void *open_code_userdata = runtime->open_code_userdata;
- _Py_AuditHookEntry *audit_hook_head = runtime->audit_hook_head;
+ _Py_AuditHookEntry *audit_hook_head = runtime->audit_hooks.head;
// bpo-42882: Preserve next_index value if Py_Initialize()/Py_Finalize()
// is called multiple times.
Py_ssize_t unicode_next_index = runtime->unicode_state.ids.next_index;