diff options
Diffstat (limited to 'Python/import.c')
-rw-r--r-- | Python/import.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/Python/import.c b/Python/import.c index cdcb903..225fbf4 100644 --- a/Python/import.c +++ b/Python/import.c @@ -1262,6 +1262,7 @@ look_up_frozen(const char *name) struct frozen_info { PyObject *nameobj; const char *data; + PyObject *(*get_code)(void); Py_ssize_t size; bool is_package; bool is_alias; @@ -1295,6 +1296,7 @@ find_frozen(PyObject *nameobj, struct frozen_info *info) if (info != NULL) { info->nameobj = nameobj; // borrowed info->data = (const char *)p->code; + info->get_code = p->get_code; info->size = p->size < 0 ? -(p->size) : p->size; info->is_package = p->size < 0 ? true : false; info->origname = name; @@ -1316,6 +1318,11 @@ find_frozen(PyObject *nameobj, struct frozen_info *info) static PyObject * unmarshal_frozen_code(struct frozen_info *info) { + if (info->get_code) { + PyObject *code = info->get_code(); + assert(code != NULL); + return code; + } PyObject *co = PyMarshal_ReadObjectFromString(info->data, info->size); if (co == NULL) { /* Does not contain executable code. */ |