diff --git a/compile.c b/compile.c index 9230935819..a6ce631513 100644 --- a/compile.c +++ b/compile.c @@ -5950,6 +5950,7 @@ iseq_build_from_ary_body(rb_iseq_t *iseq, LINK_ANCHOR *anchor, } break; case TS_FUNCPTR: + if (!RTEST(op)) rb_raise(rb_eArgError, "cannot load funcptr"); argv[j] = op; break; default: diff --git a/iseq.c b/iseq.c index de304906fe..297299e00a 100644 --- a/iseq.c +++ b/iseq.c @@ -1973,6 +1973,9 @@ iseq_data_to_ary(rb_iseq_t *iseq) rb_ary_push(ary, val); } break; + case TS_FUNCPTR: + rb_ary_push(ary, Qnil); + break; default: rb_bug("unknown operand: %c", insn_op_type(insn, j)); }