@@ -18,15 +18,15 @@ void *memmove(void *dest, const void *src, size_t n) {
1818}
1919
2020void * malloc (size_t n ) {
21- void * ptr = m_malloc (n );
21+ void * ptr = m_malloc (n , false );
2222 return ptr ;
2323}
2424void * realloc (void * ptr , size_t n ) {
2525 mp_printf (& mp_plat_print , "UNDEF %d\n" , __LINE__ );
2626 return NULL ;
2727}
2828void * calloc (size_t n , size_t m ) {
29- void * ptr = m_malloc (n * m );
29+ void * ptr = m_malloc (n * m , false );
3030 // memory already cleared by conservative GC
3131 return ptr ;
3232}
@@ -51,7 +51,7 @@ int *__errno (void)
5151
5252ssize_t mp_stream_posix_write (void * stream , const void * buf , size_t len ) {
5353 mp_obj_base_t * o = stream ;
54- const mp_stream_p_t * stream_p = o -> type -> protocol ;
54+ const mp_stream_p_t * stream_p = o -> type -> ext [ 0 ]. protocol ;
5555 mp_uint_t out_sz = stream_p -> write (MP_OBJ_FROM_PTR (stream ), buf , len , & native_errno );
5656 if (out_sz == MP_STREAM_ERROR ) {
5757 return -1 ;
@@ -62,7 +62,7 @@ ssize_t mp_stream_posix_write(void *stream, const void *buf, size_t len) {
6262
6363ssize_t mp_stream_posix_read (void * stream , void * buf , size_t len ) {
6464 mp_obj_base_t * o = stream ;
65- const mp_stream_p_t * stream_p = o -> type -> protocol ;
65+ const mp_stream_p_t * stream_p = o -> type -> ext [ 0 ]. protocol ;
6666 mp_uint_t out_sz = stream_p -> read (MP_OBJ_FROM_PTR (stream ), buf , len , & native_errno );
6767 if (out_sz == MP_STREAM_ERROR ) {
6868 return -1 ;
@@ -73,7 +73,7 @@ ssize_t mp_stream_posix_read(void *stream, void *buf, size_t len) {
7373
7474off_t mp_stream_posix_lseek (void * stream , off_t offset , int whence ) {
7575 const mp_obj_base_t * o = stream ;
76- const mp_stream_p_t * stream_p = o -> type -> protocol ;
76+ const mp_stream_p_t * stream_p = o -> type -> ext [ 0 ]. protocol ;
7777 struct mp_stream_seek_t seek_s ;
7878 seek_s .offset = offset ;
7979 seek_s .whence = whence ;
@@ -86,15 +86,15 @@ off_t mp_stream_posix_lseek(void *stream, off_t offset, int whence) {
8686
8787int mp_stream_posix_fsync (void * stream ) {
8888 mp_obj_base_t * o = stream ;
89- const mp_stream_p_t * stream_p = o -> type -> protocol ;
89+ const mp_stream_p_t * stream_p = o -> type -> ext [ 0 ]. protocol ;
9090 mp_uint_t res = stream_p -> ioctl (MP_OBJ_FROM_PTR (stream ), MP_STREAM_FLUSH , 0 , & native_errno );
9191 if (res == MP_STREAM_ERROR ) {
9292 return -1 ;
9393 }
9494 return res ;
9595}
9696
97- mp_obj_type_t btree_type ;
97+ mp_obj_full_type_t btree_type ;
9898
9999#include "extmod/modbtree.c"
100100
@@ -123,12 +123,13 @@ mp_obj_t mpy_init(mp_obj_fun_bc_t *self, size_t n_args, size_t n_kw, mp_obj_t *a
123123 MP_DYNRUNTIME_INIT_ENTRY
124124
125125 btree_type .base .type = (void * )& mp_fun_table .type_type ;
126+ btree_type .flags = MP_TYPE_FLAG_EXTENDED ;
126127 btree_type .name = MP_QSTR_btree ;
127128 btree_type .print = btree_print ;
128- btree_type .getiter = btree_getiter ;
129- btree_type .iternext = btree_iternext ;
130- btree_type .binary_op = btree_binary_op ;
131- btree_type .subscr = btree_subscr ;
129+ btree_type .ext [ 0 ]. getiter = btree_getiter ;
130+ btree_type .ext [ 0 ]. iternext = btree_iternext ;
131+ btree_type .ext [ 0 ]. binary_op = btree_binary_op ;
132+ btree_type .ext [ 0 ]. subscr = btree_subscr ;
132133 btree_locals_dict_table [0 ] = (mp_map_elem_t ){ MP_OBJ_NEW_QSTR (MP_QSTR_close ), MP_OBJ_FROM_PTR (& btree_close_obj ) };
133134 btree_locals_dict_table [1 ] = (mp_map_elem_t ){ MP_OBJ_NEW_QSTR (MP_QSTR_flush ), MP_OBJ_FROM_PTR (& btree_flush_obj ) };
134135 btree_locals_dict_table [2 ] = (mp_map_elem_t ){ MP_OBJ_NEW_QSTR (MP_QSTR_get ), MP_OBJ_FROM_PTR (& btree_get_obj ) };
0 commit comments