summaryrefslogtreecommitdiff
path: root/py/builtinhelp.c
diff options
context:
space:
mode:
authorJim Mussared <jim.mussared@gmail.com>2021-12-11 22:40:21 +1100
committerDamien George <damien@micropython.org>2021-12-18 00:01:59 +1100
commite0bf4611c3a8b23b3c52e6a7804aac341ac3a87d (patch)
treebe1d16834d97297a87768a9e41b0a682b1b33f47 /py/builtinhelp.c
parentf853e3e106b151ec2819df729fd68815dce693fb (diff)
py: Only search frozen modules when '.frozen' is found in sys.path.
This changes makemanifest.py & mpy-tool.py to merge string and mpy names into the same list (now mp_frozen_names). The various paths for loading a frozen module (mp_find_frozen_module) and checking existence of a frozen module (mp_frozen_stat) use a common function that searches this list. In addition, the frozen lookup will now only take place if the path starts with ".frozen", which needs to be added to sys.path. This fixes issues #1804, #2322, #3509, #6419. Signed-off-by: Jim Mussared <jim.mussared@gmail.com>
Diffstat (limited to 'py/builtinhelp.c')
-rw-r--r--py/builtinhelp.c17
1 files changed, 6 insertions, 11 deletions
diff --git a/py/builtinhelp.c b/py/builtinhelp.c
index 13735635e..84d69caf3 100644
--- a/py/builtinhelp.c
+++ b/py/builtinhelp.c
@@ -67,10 +67,10 @@ STATIC void mp_help_add_from_map(mp_obj_t list, const mp_map_t *map) {
#if MICROPY_MODULE_FROZEN
STATIC void mp_help_add_from_names(mp_obj_t list, const char *name) {
while (*name) {
- size_t l = strlen(name);
+ size_t len = strlen(name);
// name should end in '.py' and we strip it off
- mp_obj_list_append(list, mp_obj_new_str(name, l - 3));
- name += l + 1;
+ mp_obj_list_append(list, mp_obj_new_str(name, len - 3));
+ name += len + 1;
}
}
#endif
@@ -80,14 +80,9 @@ STATIC void mp_help_print_modules(void) {
mp_help_add_from_map(list, &mp_builtin_module_map);
- #if MICROPY_MODULE_FROZEN_STR
- extern const char mp_frozen_str_names[];
- mp_help_add_from_names(list, mp_frozen_str_names);
- #endif
-
- #if MICROPY_MODULE_FROZEN_MPY
- extern const char mp_frozen_mpy_names[];
- mp_help_add_from_names(list, mp_frozen_mpy_names);
+ #if MICROPY_MODULE_FROZEN
+ extern const char mp_frozen_names[];
+ mp_help_add_from_names(list, mp_frozen_names);
#endif
// sort the list so it's printed in alphabetical order