diff options
| author | dearblue <[email protected]> | 2020-11-14 11:30:34 +0900 |
|---|---|---|
| committer | dearblue <[email protected]> | 2020-11-14 11:30:34 +0900 |
| commit | 368f8a5da6d0e0282e07e6cceef777fab5c4844c (patch) | |
| tree | 94abfd979f828d8df4887cc6164a3e6b5866b9f7 /mrbgems | |
| parent | 7fb62670a9a8b06066e39048ab792594e8fc2bff (diff) | |
| download | mruby-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.c | 15 |
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); } |
