summaryrefslogtreecommitdiffstatshomepage
path: root/py/objboundmeth.c
diff options
context:
space:
mode:
authorDamien George <damien.p.george@gmail.com>2018-12-06 18:02:41 +1100
committerDamien George <damien.p.george@gmail.com>2018-12-06 18:02:41 +1100
commit113f00a9ab469a83d1004dac502077af0a8f4847 (patch)
treef3a56db2ea5fbd90fc41e94c9d0488d2feb632b2 /py/objboundmeth.c
parentda7355e213eb06cd82ec48548e8180e71f750603 (diff)
downloadmicropython-113f00a9ab469a83d1004dac502077af0a8f4847.tar.gz
micropython-113f00a9ab469a83d1004dac502077af0a8f4847.zip
py/objboundmeth: Support loading generic attrs from the method.
Instead of assuming that the method is a bytecode object, and only supporting load of __name__, make the operation generic by delegating the load to the method object itself. Saves a bit of code size and fixes the case of attempting to load __name__ on a native method, see issue #4028.
Diffstat (limited to 'py/objboundmeth.c')
-rw-r--r--py/objboundmeth.c7
1 files changed, 3 insertions, 4 deletions
diff --git a/py/objboundmeth.c b/py/objboundmeth.c
index b0df6a68a7..8fc44f1637 100644
--- a/py/objboundmeth.c
+++ b/py/objboundmeth.c
@@ -89,10 +89,9 @@ STATIC void bound_meth_attr(mp_obj_t self_in, qstr attr, mp_obj_t *dest) {
// not load attribute
return;
}
- if (attr == MP_QSTR___name__) {
- mp_obj_bound_meth_t *o = MP_OBJ_TO_PTR(self_in);
- dest[0] = MP_OBJ_NEW_QSTR(mp_obj_fun_get_name(o->meth));
- }
+ // Delegate the load to the method object
+ mp_obj_bound_meth_t *self = MP_OBJ_TO_PTR(self_in);
+ mp_load_method_maybe(self->meth, attr, dest);
}
#endif