From 3501e0cbb5b6043b851686d2649e5ff7e9cf2b77 Mon Sep 17 00:00:00 2001 From: Kenta Murata Date: Mon, 8 Nov 2021 12:52:09 +0900 Subject: memory_view.c: Add _memory_view_entry member in rb_memory_view_t (#5088) --- memory_view.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'memory_view.c') diff --git a/memory_view.c b/memory_view.c index b08f13e286..637d427e86 100644 --- a/memory_view.c +++ b/memory_view.c @@ -108,7 +108,8 @@ static void unregister_exported_object(VALUE obj) { RB_VM_LOCK_ENTER(); - st_update(exported_object_table, (st_data_t)obj, exported_object_dec_ref, 0); + if (exported_object_table) + st_update(exported_object_table, (st_data_t)obj, exported_object_dec_ref, 0); RB_VM_LOCK_LEAVE(); } @@ -822,6 +823,7 @@ rb_memory_view_get(VALUE obj, rb_memory_view_t* view, int flags) bool rv = (*entry->get_func)(obj, view, flags); if (rv) { + view->_memory_view_entry = entry; register_exported_object(view->obj); } return rv; @@ -834,8 +836,7 @@ rb_memory_view_get(VALUE obj, rb_memory_view_t* view, int flags) bool rb_memory_view_release(rb_memory_view_t* view) { - VALUE klass = CLASS_OF(view->obj); - const rb_memory_view_entry_t *entry = lookup_memory_view_entry(klass); + const rb_memory_view_entry_t *entry = view->_memory_view_entry; if (entry) { bool rv = true; if (entry->release_func) { -- cgit v1.2.3