summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--compile.c1
-rw-r--r--iseq.c3
2 files changed, 4 insertions, 0 deletions
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));
}