Skip to content

Commit 049712e

Browse files
committed
Fix NativeCall REPR's copy_to function.
1 parent 08a079c commit 049712e

File tree

1 file changed

+9
-5
lines changed

1 file changed

+9
-5
lines changed

src/6model/reprs/NativeCall.c

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -50,16 +50,20 @@ static void copy_to(PARROT_INTERP, STable *st, void *src, void *dest) {
5050
NativeCallBody *dest_body = (NativeCallBody *)dest;
5151

5252
/* Need a fresh handle for resource management purposes. */
53-
dest_body->lib_name = mem_sys_allocate(strlen(dest_body->lib_name) + 1);
54-
strcpy(dest_body->lib_name, src_body->lib_name);
55-
dest_body->lib_handle = dlLoadLibrary(dest_body->lib_name);
53+
if (src_body->lib_name) {
54+
dest_body->lib_name = mem_sys_allocate(strlen(src_body->lib_name) + 1);
55+
strcpy(dest_body->lib_name, src_body->lib_name);
56+
dest_body->lib_handle = dlLoadLibrary(dest_body->lib_name);
57+
}
5658

5759
/* Rest is just simple copying. */
5860
dest_body->entry_point = src_body->entry_point;
5961
dest_body->convention = src_body->convention;
6062
dest_body->num_args = src_body->num_args;
61-
dest_body->arg_types = mem_sys_allocate(src_body->num_args * sizeof(INTVAL));
62-
memcpy(dest_body->arg_types, src_body->arg_types, src_body->num_args * sizeof(INTVAL));
63+
if (src_body->arg_types) {
64+
dest_body->arg_types = mem_sys_allocate(src_body->num_args * sizeof(INTVAL));
65+
memcpy(dest_body->arg_types, src_body->arg_types, src_body->num_args * sizeof(INTVAL));
66+
}
6367
dest_body->ret_type = src_body->ret_type;
6468
}
6569

0 commit comments

Comments
 (0)