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

Skip to content

Commit 44c6c15

Browse files
author
Victor Stinner
committed
Issue #9425: Create load_builtin() subfunction
Just move the code and some variables.
1 parent e43f9d0 commit 44c6c15

1 file changed

Lines changed: 40 additions & 30 deletions

File tree

Python/import.c

Lines changed: 40 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -2013,15 +2013,52 @@ find_init_module(char *buf)
20132013

20142014
static int init_builtin(char *); /* Forward */
20152015

2016+
static PyObject*
2017+
load_builtin(char *name, char *pathname, int type)
2018+
{
2019+
PyObject *m, *modules;
2020+
int err;
2021+
2022+
if (pathname != NULL && pathname[0] != '\0')
2023+
name = pathname;
2024+
2025+
if (type == C_BUILTIN)
2026+
err = init_builtin(name);
2027+
else
2028+
err = PyImport_ImportFrozenModule(name);
2029+
if (err < 0)
2030+
return NULL;
2031+
if (err == 0) {
2032+
PyErr_Format(PyExc_ImportError,
2033+
"Purported %s module %.200s not found",
2034+
type == C_BUILTIN ?
2035+
"builtin" : "frozen",
2036+
name);
2037+
return NULL;
2038+
}
2039+
2040+
modules = PyImport_GetModuleDict();
2041+
m = PyDict_GetItemString(modules, name);
2042+
if (m == NULL) {
2043+
PyErr_Format(
2044+
PyExc_ImportError,
2045+
"%s module %.200s not properly initialized",
2046+
type == C_BUILTIN ?
2047+
"builtin" : "frozen",
2048+
name);
2049+
return NULL;
2050+
}
2051+
Py_INCREF(m);
2052+
return m;
2053+
}
2054+
20162055
/* Load an external module using the default search path and return
20172056
its module object WITH INCREMENTED REFERENCE COUNT */
20182057

20192058
static PyObject *
20202059
load_module(char *name, FILE *fp, char *pathname, int type, PyObject *loader)
20212060
{
2022-
PyObject *modules;
20232061
PyObject *m;
2024-
int err;
20252062

20262063
/* First check that there's an open file (if we need one) */
20272064
switch (type) {
@@ -2057,34 +2094,7 @@ load_module(char *name, FILE *fp, char *pathname, int type, PyObject *loader)
20572094

20582095
case C_BUILTIN:
20592096
case PY_FROZEN:
2060-
if (pathname != NULL && pathname[0] != '\0')
2061-
name = pathname;
2062-
if (type == C_BUILTIN)
2063-
err = init_builtin(name);
2064-
else
2065-
err = PyImport_ImportFrozenModule(name);
2066-
if (err < 0)
2067-
return NULL;
2068-
if (err == 0) {
2069-
PyErr_Format(PyExc_ImportError,
2070-
"Purported %s module %.200s not found",
2071-
type == C_BUILTIN ?
2072-
"builtin" : "frozen",
2073-
name);
2074-
return NULL;
2075-
}
2076-
modules = PyImport_GetModuleDict();
2077-
m = PyDict_GetItemString(modules, name);
2078-
if (m == NULL) {
2079-
PyErr_Format(
2080-
PyExc_ImportError,
2081-
"%s module %.200s not properly initialized",
2082-
type == C_BUILTIN ?
2083-
"builtin" : "frozen",
2084-
name);
2085-
return NULL;
2086-
}
2087-
Py_INCREF(m);
2097+
m = load_builtin(name, pathname, type);
20882098
break;
20892099

20902100
case IMP_HOOK: {

0 commit comments

Comments
 (0)