[ruby/prism] Use memmove for overlapping memory ranges

Fixes https://github.com/ruby/prism/pull/3736.

https://github.com/ruby/prism/commit/1f5f192ab7
This commit is contained in:
Steven Johnstone 2025-11-20 11:02:33 +00:00 committed by git
parent a8f269a2c6
commit 0b4420bfd5

View File

@ -13467,7 +13467,7 @@ parse_target_implicit_parameter(pm_parser_t *parser, pm_node_t *node) {
// remaining nodes down to fill the gap. This is extremely unlikely
// to happen.
if (index != implicit_parameters->size - 1) {
memcpy(&implicit_parameters->nodes[index], &implicit_parameters->nodes[index + 1], (implicit_parameters->size - index - 1) * sizeof(pm_node_t *));
memmove(&implicit_parameters->nodes[index], &implicit_parameters->nodes[index + 1], (implicit_parameters->size - index - 1) * sizeof(pm_node_t *));
}
implicit_parameters->size--;