50
50
// Note that we don't handle the case where the original buffer might change
51
51
// size due to a resize of the original parent object.
52
52
53
- // make (& TYPECODE_MASK) a null operation if memorview not enabled
54
53
#if MICROPY_PY_BUILTINS_MEMORYVIEW
55
54
#define TYPECODE_MASK (0x7f)
55
+ #define memview_offset free
56
56
#else
57
+ // make (& TYPECODE_MASK) a null operation if memorview not enabled
57
58
#define TYPECODE_MASK (~(size_t)0)
59
+ // memview_offset should not be accessed if memoryview is not enabled,
60
+ // so not defined to catch errors
58
61
#endif
59
62
60
63
STATIC mp_obj_t array_iterator_new (mp_obj_t array_in , mp_obj_iter_buf_t * iter_buf );
@@ -200,7 +203,7 @@ mp_obj_t mp_obj_new_memoryview(byte typecode, size_t nitems, void *items) {
200
203
mp_obj_array_t * self = m_new_obj (mp_obj_array_t );
201
204
self -> base .type = & mp_type_memoryview ;
202
205
self -> typecode = typecode ;
203
- self -> free = 0 ;
206
+ self -> memview_offset = 0 ;
204
207
self -> len = nitems ;
205
208
self -> items = items ;
206
209
return MP_OBJ_FROM_PTR (self );
@@ -396,7 +399,7 @@ STATIC mp_obj_t array_subscr(mp_obj_t self_in, mp_obj_t index_in, mp_obj_t value
396
399
src_items = src_slice -> items ;
397
400
#if MICROPY_PY_BUILTINS_MEMORYVIEW
398
401
if (MP_OBJ_IS_TYPE (value , & mp_type_memoryview )) {
399
- src_items = (uint8_t * )src_items + (src_slice -> free * item_sz );
402
+ src_items = (uint8_t * )src_items + (src_slice -> memview_offset * item_sz );
400
403
}
401
404
#endif
402
405
} else if (MP_OBJ_IS_TYPE (value , & mp_type_bytes )) {
@@ -423,7 +426,7 @@ STATIC mp_obj_t array_subscr(mp_obj_t self_in, mp_obj_t index_in, mp_obj_t value
423
426
if (len_adj != 0 ) {
424
427
goto compat_error ;
425
428
}
426
- dest_items += o -> free * item_sz ;
429
+ dest_items += o -> memview_offset * item_sz ;
427
430
}
428
431
#endif
429
432
if (len_adj > 0 ) {
@@ -459,7 +462,7 @@ STATIC mp_obj_t array_subscr(mp_obj_t self_in, mp_obj_t index_in, mp_obj_t value
459
462
} else if (o -> base .type == & mp_type_memoryview ) {
460
463
res = m_new_obj (mp_obj_array_t );
461
464
* res = * o ;
462
- res -> free += slice .start ;
465
+ res -> memview_offset += slice .start ;
463
466
res -> len = slice .stop - slice .start ;
464
467
#endif
465
468
} else {
@@ -472,7 +475,7 @@ STATIC mp_obj_t array_subscr(mp_obj_t self_in, mp_obj_t index_in, mp_obj_t value
472
475
size_t index = mp_get_index (o -> base .type , o -> len , index_in , false);
473
476
#if MICROPY_PY_BUILTINS_MEMORYVIEW
474
477
if (o -> base .type == & mp_type_memoryview ) {
475
- index += o -> free ;
478
+ index += o -> memview_offset ;
476
479
if (value != MP_OBJ_SENTINEL && !(o -> typecode & MP_OBJ_ARRAY_TYPECODE_FLAG_RW )) {
477
480
// store to read-only memoryview
478
481
return MP_OBJ_NULL ;
@@ -503,7 +506,7 @@ STATIC mp_int_t array_get_buffer(mp_obj_t o_in, mp_buffer_info_t *bufinfo, mp_ui
503
506
// read-only memoryview
504
507
return 1 ;
505
508
}
506
- bufinfo -> buf = (uint8_t * )bufinfo -> buf + (size_t )o -> free * sz ;
509
+ bufinfo -> buf = (uint8_t * )bufinfo -> buf + (size_t )o -> memview_offset * sz ;
507
510
}
508
511
#else
509
512
(void )flags ;
@@ -624,7 +627,7 @@ STATIC mp_obj_t array_iterator_new(mp_obj_t array_in, mp_obj_iter_buf_t *iter_bu
624
627
o -> cur = 0 ;
625
628
#if MICROPY_PY_BUILTINS_MEMORYVIEW
626
629
if (array -> base .type == & mp_type_memoryview ) {
627
- o -> offset = array -> free ;
630
+ o -> offset = array -> memview_offset ;
628
631
}
629
632
#endif
630
633
return MP_OBJ_FROM_PTR (o );
0 commit comments