summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorDamien George <damien.p.george@gmail.com>2015-12-16 19:45:42 -0500
committerDamien George <damien.p.george@gmail.com>2015-12-16 19:45:42 -0500
commitf7782f8082b692611b5fa0bea4f7fbda8b433a7b (patch)
tree6fb0d62abe0df5c3ab26998b297b37f9c11c28b2
parent969e4bbe6a1660a1220f5f8781a252591b379cd2 (diff)
downloadmicropython-f7782f8082b692611b5fa0bea4f7fbda8b433a7b.tar.gz
micropython-f7782f8082b692611b5fa0bea4f7fbda8b433a7b.zip
py/gc: For finaliser, interpret a pointer into the heap as concrete obj.
-rw-r--r--py/gc.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/py/gc.c b/py/gc.c
index 606346d7fb..554b4dbcdf 100644
--- a/py/gc.c
+++ b/py/gc.c
@@ -230,16 +230,16 @@ STATIC void gc_sweep(void) {
#endif
// free unmarked heads and their tails
int free_tail = 0;
- for (mp_uint_t block = 0; block < MP_STATE_MEM(gc_alloc_table_byte_len) * BLOCKS_PER_ATB; block++) {
+ for (size_t block = 0; block < MP_STATE_MEM(gc_alloc_table_byte_len) * BLOCKS_PER_ATB; block++) {
switch (ATB_GET_KIND(block)) {
case AT_HEAD:
#if MICROPY_ENABLE_FINALISER
if (FTB_GET(block)) {
- mp_obj_t obj = (mp_obj_t)PTR_FROM_BLOCK(block);
- if (((mp_obj_base_t*)MP_OBJ_TO_PTR(obj))->type != NULL) {
+ mp_obj_base_t *obj = (mp_obj_base_t*)PTR_FROM_BLOCK(block);
+ if (obj->type != NULL) {
// if the object has a type then see if it has a __del__ method
mp_obj_t dest[2];
- mp_load_method_maybe(obj, MP_QSTR___del__, dest);
+ mp_load_method_maybe(MP_OBJ_FROM_PTR(obj), MP_QSTR___del__, dest);
if (dest[0] != MP_OBJ_NULL) {
// load_method returned a method
mp_call_method_n_kw(0, 0, dest);