From 6a410789b8ff085baf304fdd3bef2bae6e1377fe Mon Sep 17 00:00:00 2001 From: Paul Sokolovsky Date: Wed, 21 May 2014 00:54:46 +0300 Subject: objtype: super: Add stop condition for looking up in base types. --- py/objtype.c | 3 +++ 1 file changed, 3 insertions(+) (limited to 'py/objtype.c') diff --git a/py/objtype.c b/py/objtype.c index 2e1c56416..ed4592274 100644 --- a/py/objtype.c +++ b/py/objtype.c @@ -735,6 +735,9 @@ STATIC void super_load_attr(mp_obj_t self_in, qstr attr, mp_obj_t *dest) { for (uint i = 0; i < len; i++) { assert(MP_OBJ_IS_TYPE(items[i], &mp_type_type)); mp_obj_class_lookup(self->obj, (mp_obj_type_t*)items[i], attr, 0, dest); + if (dest[0] != MP_OBJ_NULL) { + return; + } } } -- cgit v1.2.3 From a8408a8abe83c98af50821f1eb1df53cf9d202dd Mon Sep 17 00:00:00 2001 From: Paul Sokolovsky Date: Wed, 21 May 2014 22:24:36 +0300 Subject: objtype: super: Fall back to "object" lookup as last resort. Also, define object.__init__() (semantically empty, purely CPython compat measure). Addresses #520. --- py/objtype.c | 1 + 1 file changed, 1 insertion(+) (limited to 'py/objtype.c') diff --git a/py/objtype.c b/py/objtype.c index ed4592274..5da49a045 100644 --- a/py/objtype.c +++ b/py/objtype.c @@ -739,6 +739,7 @@ STATIC void super_load_attr(mp_obj_t self_in, qstr attr, mp_obj_t *dest) { return; } } + mp_obj_class_lookup(self->obj, &mp_type_object, attr, 0, dest); } const mp_obj_type_t mp_type_super = { -- cgit v1.2.3