summaryrefslogtreecommitdiffstatshomepage
path: root/py/builtinhelp.c
diff options
context:
space:
mode:
authorJim Mussared <jim.mussared@gmail.com>2023-06-05 15:52:57 +1000
committerJim Mussared <jim.mussared@gmail.com>2023-06-08 17:54:24 +1000
commit13c817e61cf2f00fc398e01840e5d8c20e575c8c (patch)
tree6ee790425d31e5f6642537e2426100e0d1119aa4 /py/builtinhelp.c
parenteb85f4d4c9c332c8e7bef9b20bb06e25f6f6c5d2 (diff)
downloadmicropython-13c817e61cf2f00fc398e01840e5d8c20e575c8c.tar.gz
micropython-13c817e61cf2f00fc398e01840e5d8c20e575c8c.zip
py/objmodule: Add a table of built-in modules with delegation.
This replaces the previous QSTR_null entry in the globals dict which could leak out to Python (e.g. via iteration of mod.__dict__) and could lead to crashes. It results in smaller code size at the expense of turning a lookup into a loop, but the list it is looping over likely only contains one or two elements. To allow a module to register its custom attr function it can use the new `MP_REGISTER_MODULE_DELEGATION` macro. This work was funded through GitHub Sponsors. Signed-off-by: Jim Mussared <jim.mussared@gmail.com>
Diffstat (limited to 'py/builtinhelp.c')
-rw-r--r--py/builtinhelp.c7
1 files changed, 1 insertions, 6 deletions
diff --git a/py/builtinhelp.c b/py/builtinhelp.c
index c60ed44e9c..9bd56cca09 100644
--- a/py/builtinhelp.c
+++ b/py/builtinhelp.c
@@ -151,12 +151,7 @@ STATIC void mp_help_print_obj(const mp_obj_t obj) {
if (map != NULL) {
for (uint i = 0; i < map->alloc; i++) {
mp_obj_t key = map->table[i].key;
- if (key != MP_OBJ_NULL
- #if MICROPY_MODULE_ATTR_DELEGATION
- // MP_MODULE_ATTR_DELEGATION_ENTRY entries have MP_QSTRnull as qstr key.
- && key != MP_OBJ_NEW_QSTR(MP_QSTRnull)
- #endif
- ) {
+ if (key != MP_OBJ_NULL) {
mp_help_print_info_about_object(key, map->table[i].value);
}
}