Don't assume st_data_t and VALUE are the same in rb_gc_impl_object_id

This commit is contained in:
Peter Zhu 2024-08-15 14:33:13 -04:00
Родитель de28ef7db4
Коммит 2c6e16eb51
1 изменённых файлов: 3 добавлений и 1 удалений

Просмотреть файл

@ -1683,8 +1683,10 @@ rb_gc_impl_object_id(void *objspace_ptr, VALUE obj)
rb_objspace_t *objspace = objspace_ptr;
unsigned int lev = rb_gc_vm_lock();
if (st_lookup(objspace->obj_to_id_tbl, (st_data_t)obj, &id)) {
st_data_t val;
if (st_lookup(objspace->obj_to_id_tbl, (st_data_t)obj, &val)) {
GC_ASSERT(FL_TEST(obj, FL_SEEN_OBJ_ID));
id = (VALUE)val;
}
else {
GC_ASSERT(!FL_TEST(obj, FL_SEEN_OBJ_ID));