Get rid of type-punning pointer casts
This commit is contained in:
parent
05553cf22d
commit
fd74614059
12
parse.y
12
parse.y
@ -2588,21 +2588,21 @@ rb_parser_ast_token_free(rb_parser_t *p, rb_parser_ast_token_t *token)
|
|||||||
static void
|
static void
|
||||||
rb_parser_ary_free(rb_parser_t *p, rb_parser_ary_t *ary)
|
rb_parser_ary_free(rb_parser_t *p, rb_parser_ary_t *ary)
|
||||||
{
|
{
|
||||||
void (*free_func)(rb_parser_t *, rb_parser_ary_data) = NULL;
|
# define foreach_ary(ptr) \
|
||||||
|
for (rb_parser_ary_data *ptr = ary->data, *const end_ary_data = ptr + ary->len; \
|
||||||
|
ptr < end_ary_data; ptr++)
|
||||||
switch (ary->data_type) {
|
switch (ary->data_type) {
|
||||||
case PARSER_ARY_DATA_AST_TOKEN:
|
case PARSER_ARY_DATA_AST_TOKEN:
|
||||||
free_func = (void (*)(rb_parser_t *, rb_parser_ary_data))rb_parser_ast_token_free;
|
foreach_ary(data) {rb_parser_ast_token_free(p, *data);}
|
||||||
break;
|
break;
|
||||||
case PARSER_ARY_DATA_SCRIPT_LINE:
|
case PARSER_ARY_DATA_SCRIPT_LINE:
|
||||||
free_func = (void (*)(rb_parser_t *, rb_parser_ary_data))rb_parser_string_free;
|
foreach_ary(data) {rb_parser_string_free(p, *data);}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
rb_bug("unexpected rb_parser_ary_data_type: %d", ary->data_type);
|
rb_bug("unexpected rb_parser_ary_data_type: %d", ary->data_type);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
for (long i = 0; i < ary->len; i++) {
|
# undef foreach_ary
|
||||||
free_func(p, ary->data[i]);
|
|
||||||
}
|
|
||||||
xfree(ary);
|
xfree(ary);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user