summaryrefslogtreecommitdiffhomepage
path: root/mrbgems
diff options
context:
space:
mode:
authordearblue <[email protected]>2020-11-14 11:30:34 +0900
committerdearblue <[email protected]>2020-11-14 11:30:34 +0900
commit368f8a5da6d0e0282e07e6cceef777fab5c4844c (patch)
tree94abfd979f828d8df4887cc6164a3e6b5866b9f7 /mrbgems
parent7fb62670a9a8b06066e39048ab792594e8fc2bff (diff)
downloadmruby-368f8a5da6d0e0282e07e6cceef777fab5c4844c.tar.gz
mruby-368f8a5da6d0e0282e07e6cceef777fab5c4844c.zip
Don't use private structs with `mrb_mt_foreach()`
The `MRB_API` function `mrb_mt_foreach()` previously used the private structure `struct mt_elem`. Therefore, use `mrb_method_t` instead.
Diffstat (limited to 'mrbgems')
-rw-r--r--mrbgems/mruby-metaprog/src/metaprog.c15
1 files changed, 2 insertions, 13 deletions
diff --git a/mrbgems/mruby-metaprog/src/metaprog.c b/mrbgems/mruby-metaprog/src/metaprog.c
index ce198c9b9..8bc9ab038 100644
--- a/mrbgems/mruby-metaprog/src/metaprog.c
+++ b/mrbgems/mruby-metaprog/src/metaprog.c
@@ -171,28 +171,17 @@ mrb_local_variables(mrb_state *mrb, mrb_value self)
KHASH_DECLARE(st, mrb_sym, char, FALSE)
KHASH_DEFINE(st, mrb_sym, char, FALSE, kh_int_hash_func, kh_int_hash_equal)
-union mt_ptr {
- struct RProc *proc;
- mrb_func_t func;
-};
-
-struct mt_elem {
- union mt_ptr ptr;
- size_t func_p:1;
- mrb_sym key:sizeof(mrb_sym)*8-1;
-};
-
struct mt_set {
khash_t(st) *set;
khash_t(st) *undef;
};
static int
-method_entry_i(mrb_state *mrb, mrb_sym mid, struct mt_elem *e, void *p)
+method_entry_i(mrb_state *mrb, mrb_sym mid, mrb_method_t m, void *p)
{
struct mt_set *s = (struct mt_set*)p;
- if (e->ptr.proc == 0) {
+ if (MRB_METHOD_UNDEF_P(m)) {
if (s->undef) {
kh_put(st, mrb, s->undef, mid);
}