@@ -153,15 +153,15 @@ STATIC mp_obj_t list_subscr(mp_obj_t self_in, mp_obj_t index, mp_obj_t value) {
153153#if MICROPY_PY_SLICE
154154 if (MP_OBJ_IS_TYPE (index , & mp_type_slice )) {
155155 mp_obj_list_t * self = self_in ;
156- machine_uint_t start , stop ;
157- if (!mp_seq_get_fast_slice_indexes (self -> len , index , & start , & stop )) {
156+ mp_bound_slice_t slice ;
157+ if (!mp_seq_get_fast_slice_indexes (self -> len , index , & slice )) {
158158 assert (0 );
159159 }
160160
161- int len_adj = start - stop ;
161+ int len_adj = slice . start - slice . stop ;
162162 //printf("Len adj: %d\n", len_adj);
163163 assert (len_adj <= 0 );
164- mp_seq_replace_slice_no_grow (self -> items , self -> len , start , stop , self -> items /*NULL*/ , 0 , mp_obj_t );
164+ mp_seq_replace_slice_no_grow (self -> items , self -> len , slice . start , slice . stop , self -> items /*NULL*/ , 0 , mp_obj_t );
165165 // Clear "freed" elements at the end of list
166166 mp_seq_clear (self -> items , self -> len + len_adj , self -> len , sizeof (* self -> items ));
167167 self -> len += len_adj ;
@@ -176,12 +176,12 @@ STATIC mp_obj_t list_subscr(mp_obj_t self_in, mp_obj_t index, mp_obj_t value) {
176176 mp_obj_list_t * self = self_in ;
177177#if MICROPY_PY_SLICE
178178 if (MP_OBJ_IS_TYPE (index , & mp_type_slice )) {
179- machine_uint_t start , stop ;
180- if (!mp_seq_get_fast_slice_indexes (self -> len , index , & start , & stop )) {
179+ mp_bound_slice_t slice ;
180+ if (!mp_seq_get_fast_slice_indexes (self -> len , index , & slice )) {
181181 assert (0 );
182182 }
183- mp_obj_list_t * res = list_new (stop - start );
184- mp_seq_copy (res -> items , self -> items + start , res -> len , mp_obj_t );
183+ mp_obj_list_t * res = list_new (slice . stop - slice . start );
184+ mp_seq_copy (res -> items , self -> items + slice . start , res -> len , mp_obj_t );
185185 return res ;
186186 }
187187#endif
@@ -193,11 +193,11 @@ STATIC mp_obj_t list_subscr(mp_obj_t self_in, mp_obj_t index, mp_obj_t value) {
193193 mp_obj_list_t * self = self_in ;
194194 assert (MP_OBJ_IS_TYPE (value , & mp_type_list ));
195195 mp_obj_list_t * slice = value ;
196- machine_uint_t start , stop ;
197- if (!mp_seq_get_fast_slice_indexes (self -> len , index , & start , & stop )) {
196+ mp_bound_slice_t slice_out ;
197+ if (!mp_seq_get_fast_slice_indexes (self -> len , index , & slice_out )) {
198198 assert (0 );
199199 }
200- int len_adj = slice -> len - (stop - start );
200+ int len_adj = slice -> len - (slice_out . stop - slice_out . start );
201201 //printf("Len adj: %d\n", len_adj);
202202 if (len_adj > 0 ) {
203203 if (self -> len + len_adj > self -> alloc ) {
@@ -206,9 +206,11 @@ STATIC mp_obj_t list_subscr(mp_obj_t self_in, mp_obj_t index, mp_obj_t value) {
206206 self -> items = m_renew (mp_obj_t , self -> items , self -> alloc , self -> len + len_adj );
207207 self -> alloc = self -> len + len_adj ;
208208 }
209- mp_seq_replace_slice_grow_inplace (self -> items , self -> len , start , stop , slice -> items , slice -> len , len_adj , mp_obj_t );
209+ mp_seq_replace_slice_grow_inplace (self -> items , self -> len ,
210+ slice_out .start , slice_out .stop , slice -> items , slice -> len , len_adj , mp_obj_t );
210211 } else {
211- mp_seq_replace_slice_no_grow (self -> items , self -> len , start , stop , slice -> items , slice -> len , mp_obj_t );
212+ mp_seq_replace_slice_no_grow (self -> items , self -> len ,
213+ slice_out .start , slice_out .stop , slice -> items , slice -> len , mp_obj_t );
212214 // Clear "freed" elements at the end of list
213215 mp_seq_clear (self -> items , self -> len + len_adj , self -> len , sizeof (* self -> items ));
214216 // TODO: apply allocation policy re: alloc_size
0 commit comments