Skip to content

Commit f078055

Browse files
committed
Use mp_int_t for setting pixelbuf slice indices
When handling negative steps, start and stop need to be mp_int_t so they can be checked against a potential negative value during the for loop used to set the slice values.
1 parent 16ffc73 commit f078055

File tree

3 files changed

+6
-6
lines changed

3 files changed

+6
-6
lines changed

shared-bindings/_pixelbuf/PixelBuf.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -303,7 +303,7 @@ STATIC mp_obj_t pixelbuf_pixelbuf_subscr(mp_obj_t self_in, mp_obj_t index_in, mp
303303
size_t slice_len;
304304
if (slice.step > 0) {
305305
slice_len = slice.stop - slice.start;
306-
}else{
306+
} else {
307307
slice_len = 1 + slice.start - slice.stop;
308308
}
309309
if (slice.step > 1 || slice.step < -1) {

shared-bindings/_pixelbuf/PixelBuf.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,6 @@ void common_hal__pixelbuf_pixelbuf_fill(mp_obj_t self, mp_obj_t item);
4747
void common_hal__pixelbuf_pixelbuf_show(mp_obj_t self);
4848
mp_obj_t common_hal__pixelbuf_pixelbuf_get_pixel(mp_obj_t self, size_t index);
4949
void common_hal__pixelbuf_pixelbuf_set_pixel(mp_obj_t self, size_t index, mp_obj_t item);
50-
void common_hal__pixelbuf_pixelbuf_set_pixels(mp_obj_t self_in, size_t start, size_t stop, mp_int_t step, mp_obj_t* values);
50+
void common_hal__pixelbuf_pixelbuf_set_pixels(mp_obj_t self_in, mp_int_t start, mp_int_t stop, mp_int_t step, mp_obj_t* values);
5151

5252
#endif // CP_SHARED_BINDINGS_PIXELBUF_PIXELBUF_H

shared-module/_pixelbuf/PixelBuf.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -216,16 +216,16 @@ void _pixelbuf_set_pixel(pixelbuf_pixelbuf_obj_t* self, size_t index, mp_obj_t v
216216
_pixelbuf_set_pixel_color(self, index, r, g, b, w);
217217
}
218218

219-
void common_hal__pixelbuf_pixelbuf_set_pixels(mp_obj_t self_in, size_t start, size_t stop, mp_int_t step, mp_obj_t* values) {
219+
void common_hal__pixelbuf_pixelbuf_set_pixels(mp_obj_t self_in, mp_int_t start, mp_int_t stop, mp_int_t step, mp_obj_t* values) {
220220
pixelbuf_pixelbuf_obj_t* self = native_pixelbuf(self_in);
221221
size_t source_i = 0;
222222
if (step > 0) {
223-
for (size_t target_i = start; target_i < stop; target_i += step) {
223+
for (mp_int_t target_i = start; target_i < stop; target_i += step) {
224224
_pixelbuf_set_pixel(self, target_i, values[source_i]);
225225
source_i++;
226226
}
227-
}else{
228-
for (size_t target_i = start; target_i >= stop; target_i += step) {
227+
} else {
228+
for (mp_int_t target_i = start; target_i >= stop; target_i += step) {
229229
_pixelbuf_set_pixel(self, target_i, values[source_i]);
230230
source_i++;
231231
}

0 commit comments

Comments
 (0)