mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
darray: fix strict aliasing issue
This commit is contained in:
parent
0658ab73ee
commit
9ce2771697
1 changed files with 6 additions and 2 deletions
8
darray.h
8
darray.h
|
@ -146,7 +146,9 @@ rb_darray_ensure_space(void *ptr_to_ary, size_t header_size, size_t element_size
|
|||
|
||||
doubled_ary->capa = new_capa;
|
||||
|
||||
*ptr_to_ptr_to_meta = doubled_ary;
|
||||
// We don't have access to the type of the dynamic array in function context.
|
||||
// Write out result with memcpy to avoid strict aliasing issue.
|
||||
memcpy(ptr_to_ary, &doubled_ary, sizeof(doubled_ary));
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
@ -167,7 +169,9 @@ rb_darray_make_impl(void *ptr_to_ary, int32_t array_size, size_t header_size, si
|
|||
meta->size = array_size;
|
||||
meta->capa = array_size;
|
||||
|
||||
*ptr_to_ptr_to_meta = meta;
|
||||
// We don't have access to the type of the dynamic array in function context.
|
||||
// Write out result with memcpy to avoid strict aliasing issue.
|
||||
memcpy(ptr_to_ary, &meta, sizeof(meta));
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue