summaryrefslogtreecommitdiff
path: root/vm_insnhelper.c
diff options
context:
space:
mode:
authorNobuyoshi Nakada <nobu@ruby-lang.org>2021-08-05 20:09:25 +0900
committerNobuyoshi Nakada <nobu@ruby-lang.org>2021-08-11 12:07:44 +0900
commita0a8f2abf533702b2cd96e79f700ce5b9cd94f50 (patch)
tree4616bd00744c9b145a707bf77332ec6a78783bdb /vm_insnhelper.c
parent7560bf6f47001b7cf79c8ead41b3c48753d5640b (diff)
Get rid of type-punning pointer casts [Bug #18062]
Notes
Notes: Merged: https://github.com/ruby/ruby/pull/4716
Diffstat (limited to 'vm_insnhelper.c')
-rw-r--r--vm_insnhelper.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/vm_insnhelper.c b/vm_insnhelper.c
index 14928b2afe..e186376b24 100644
--- a/vm_insnhelper.c
+++ b/vm_insnhelper.c
@@ -1724,9 +1724,11 @@ vm_search_cc(const VALUE klass, const struct rb_callinfo * const ci)
const ID mid = vm_ci_mid(ci);
struct rb_id_table *cc_tbl = RCLASS_CC_TBL(klass);
struct rb_class_cc_entries *ccs = NULL;
+ VALUE ccs_data;
if (cc_tbl) {
- if (rb_id_table_lookup(cc_tbl, mid, (VALUE *)&ccs)) {
+ if (rb_id_table_lookup(cc_tbl, mid, &ccs_data)) {
+ ccs = (struct rb_class_cc_entries *)ccs_data;
const int ccs_len = ccs->len;
VM_ASSERT(vm_ccs_verify(ccs, mid, klass));
@@ -1790,8 +1792,9 @@ vm_search_cc(const VALUE klass, const struct rb_callinfo * const ci)
if (ccs == NULL) {
VM_ASSERT(cc_tbl != NULL);
- if (LIKELY(rb_id_table_lookup(cc_tbl, mid, (VALUE*)&ccs))) {
+ if (LIKELY(rb_id_table_lookup(cc_tbl, mid, &ccs_data))) {
// rb_callable_method_entry() prepares ccs.
+ ccs = (struct rb_class_cc_entries *)ccs_data;
}
else {
// TODO: required?