8000 py: Use memmove instead of memcpy when appropriate. · sparkfun/circuitpython@17ae239 · GitHub
[go: up one dir, main page]

Skip to content

Commit 17ae239

Browse files
committed
py: Use memmove instead of memcpy when appropriate.
Found this bug by running unix/ tests with DEBUG=1 enabled when compiling.
1 parent 02d95d7 commit 17ae239

File tree

3 files changed

+4
-4
lines changed

3 files changed

+4
-4
lines changed

py/obj.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -585,8 +585,8 @@ mp_obj_t mp_seq_extract_slice(uint len, const mp_obj_t *seq, mp_bound_slice_t *i
585585
#define mp_seq_replace_slice_no_grow(dest, dest_len, beg, end, slice, slice_len, item_t) \
586586
/*printf("memcpy(%p, %p, %d)\n", dest + beg, slice, slice_len * sizeof(item_t));*/ \
587587
memcpy(dest + beg, slice, slice_len * sizeof(item_t)); \
588-
/*printf("memcpy(%p, %p, %d)\n", dest + (beg + slice_len), dest + end, (dest_len - end) * sizeof(item_t));*/ \
589-
memcpy(dest + (beg + slice_len), dest + end, (dest_len - end) * sizeof(item_t));
588+
/*printf("memmove(%p, %p, %d)\n", dest + (beg + slice_len), dest + end, (dest_len - end) * sizeof(item_t));*/ \
589+
memmove(dest + (beg + slice_len), dest + end, (dest_len - end) * sizeof(item_t));
590590

591591
#define mp_seq_replace_slice_grow_inplace(dest, dest_len, beg, end, slice, slice_len, len_adj, item_t) \
592592
/*printf("memmove(%p, %p, %d)\n", dest + beg + len_adj, dest + beg, (dest_len - beg) * sizeof(item_t));*/ \

py/objlist.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -274,7 +274,7 @@ STATIC mp_obj_t list_pop(uint n_args, const mp_obj_t *args) {
274274
uint index = mp_get_index(self->base.type, self->len, n_args == 1 ? MP_OBJ_NEW_SMALL_INT(-1) : args[1], false);
275275
mp_obj_t ret = self->items[index];
276276
self->len -= 1;
277-
memcpy(self->items + index, self->items + index + 1, (self->len - index) * sizeof(mp_obj_t));
277+
memmove(self->items + index, self->items + index + 1, (self->len - index) * sizeof(mp_obj_t));
278278
// Clear stale pointer from slot which just got freed to prevent GC issues
279279
self->items[self->len] = MP_OBJ_NULL;
280280
if (self->alloc > LIST_MIN_ALLOC && self->alloc > 2 * self->len) {

py/objstr.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -567,7 +567,7 @@ STATIC mp_obj_t str_rsplit(uint n_args, const mp_obj_t *args) {
567567
if (idx != 0) {
568568
// We split less parts than split limit, now go cleanup surplus
569569
int used = org_splits + 1 - idx;
570-
memcpy(res->items, &res->items[idx], used * sizeof(mp_obj_t));
570+
memmove(res->items, &res->items[idx], used * sizeof(mp_obj_t));
571571
mp_seq_clear(res->items, used, res->alloc, sizeof(*res->items));
572572
res->len = used;
573573
}

0 commit comments

Comments
 (0)
0