Skip to content

Commit 2de3300

Browse files
committed
Implement copy_to in VMArray.
1 parent 3f3c6af commit 2de3300

File tree

1 file changed

+11
-3
lines changed

1 file changed

+11
-3
lines changed

src/6model/reprs/VMArray.c

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -218,9 +218,17 @@ static INTVAL elems(PARROT_INTERP, STable *st, void *data) {
218218

219219
/* Copies to the body of one object to another. */
220220
static void copy_to(PARROT_INTERP, STable *st, void *src, void *dest) {
221-
VMArrayBody *src_body = (VMArrayBody *)src;
222-
VMArrayBody *dest_body = (VMArrayBody *)dest;
223-
/* Nothing to do yet. */
221+
VMArrayBody *src_body = (VMArrayBody *) src;
222+
VMArrayBody *dest_body = (VMArrayBody *) dest;
223+
VMArrayREPRData *repr_data = st->REPR_data;
224+
INTVAL elem_size = repr_data->elem_size? repr_data->elem_size/8 : sizeof(void *);
225+
INTVAL bytes = elem_size*src_body->ssize;
226+
227+
dest_body->elems = src_body->elems;
228+
dest_body->start = src_body->start;
229+
dest_body->ssize = src_body->ssize;
230+
dest_body->slots = mem_sys_allocate(bytes);
231+
memcpy(dest_body->slots, src_body->slots, bytes);
224232
}
225233

226234
static void serialize(PARROT_INTERP, STable *st, void *data, SerializationWriter *writer) {

0 commit comments

Comments
 (0)