Skip to content

Commit 6db588c

Browse files
Add _PyImport_GetModulesRef().
1 parent 8a4d4f3 commit 6db588c

File tree

2 files changed

+15
-0
lines changed

2 files changed

+15
-0
lines changed

Include/internal/pycore_import.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@ extern void _PyImport_SetDLOpenFlags(PyInterpreterState *interp, int new_val);
6363

6464
extern PyObject * _PyImport_InitModules(PyInterpreterState *interp);
6565
extern PyObject * _PyImport_GetModules(PyInterpreterState *interp);
66+
extern PyObject * _PyImport_GetModulesRef(PyInterpreterState *interp);
6667
extern void _PyImport_ClearModules(PyInterpreterState *interp);
6768

6869
extern void _PyImport_ClearModulesByIndex(PyInterpreterState *interp);

Python/import.c

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -153,6 +153,20 @@ _PyImport_GetModules(PyInterpreterState *interp)
153153
return MODULES(interp);
154154
}
155155

156+
PyObject *
157+
_PyImport_GetModulesRef(PyInterpreterState *interp)
158+
{
159+
_PyImport_AcquireLock(interp);
160+
PyObject *modules = MODULES(interp);
161+
if (modules == NULL) {
162+
/* The interpreter hasn't been initialized yet. */
163+
modules = Py_None;
164+
}
165+
Py_INCREF(modules);
166+
_PyImport_ReleaseLock(interp);
167+
return modules;
168+
}
169+
156170
void
157171
_PyImport_ClearModules(PyInterpreterState *interp)
158172
{

0 commit comments

Comments
 (0)