diff options
| author | Yukihiro "Matz" Matsumoto <[email protected]> | 2020-04-14 14:51:00 +0900 |
|---|---|---|
| committer | GitHub <[email protected]> | 2020-04-14 14:51:00 +0900 |
| commit | 72928f201c342fcf6c80b06c47c138b47eba603c (patch) | |
| tree | a30b7d35848f929de5494100fd8d66bf8b893611 /src | |
| parent | 81a921009118046d3095a76a18906fdf718e83e4 (diff) | |
| parent | d0501c69b0892208309dcbb8aa7fc1b8d75f3c8e (diff) | |
| download | mruby-72928f201c342fcf6c80b06c47c138b47eba603c.tar.gz mruby-72928f201c342fcf6c80b06c47c138b47eba603c.zip | |
Merge pull request #4972 from dearblue/boxnan-cptr
Fix `MRB_TT_CPTR` object with `MRB_NAN_BOXING`
Diffstat (limited to 'src')
| -rw-r--r-- | src/etc.c | 17 |
1 files changed, 13 insertions, 4 deletions
@@ -140,7 +140,13 @@ mrb_obj_id(mrb_value obj) } } +#if defined(MRB_NAN_BOXING) && defined(MRB_64BIT) +#define mrb_xxx_boxing_cptr_value mrb_nan_boxing_cptr_value +#endif + #ifdef MRB_WORD_BOXING +#define mrb_xxx_boxing_cptr_value mrb_word_boxing_cptr_value + #ifndef MRB_WITHOUT_FLOAT MRB_API mrb_value mrb_word_boxing_float_value(mrb_state *mrb, mrb_float f) @@ -164,17 +170,20 @@ mrb_word_boxing_float_pool(mrb_state *mrb, mrb_float f) return mrb_obj_value(nf); } #endif /* MRB_WITHOUT_FLOAT */ +#endif /* MRB_WORD_BOXING */ +#if defined(MRB_WORD_BOXING) || (defined(MRB_NAN_BOXING) && defined(MRB_64BIT)) MRB_API mrb_value -mrb_word_boxing_cptr_value(mrb_state *mrb, void *p) +mrb_xxx_boxing_cptr_value(mrb_state *mrb, void *p) { mrb_value v; + struct RCptr *cptr = (struct RCptr*)mrb_obj_alloc(mrb, MRB_TT_CPTR, mrb->object_class); - v.value.p = mrb_obj_alloc(mrb, MRB_TT_CPTR, mrb->object_class); - v.value.vp->p = p; + SET_OBJ_VALUE(v, cptr); + cptr->p = p; return v; } -#endif /* MRB_WORD_BOXING */ +#endif #if defined _MSC_VER && _MSC_VER < 1900 |
