summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--compile.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/compile.c b/compile.c
index 67641fcfb6..f83b19bdbd 100644
--- a/compile.c
+++ b/compile.c
@@ -2226,8 +2226,7 @@ static int
add_adjust_info(struct iseq_insn_info_entry *insns_info, unsigned int *positions,
int insns_info_index, int code_index, const ADJUST *adjust)
{
- if (insns_info_index > 0 ||
- insns_info[insns_info_index-1].line_no != adjust->line_no) {
+ if (insns_info[insns_info_index-1].line_no != adjust->line_no) {
insns_info[insns_info_index].line_no = adjust->line_no;
insns_info[insns_info_index].events = 0;
positions[insns_info_index] = code_index;
@@ -2474,6 +2473,10 @@ iseq_set_sequence(rb_iseq_t *iseq, LINK_ANCHOR *const anchor)
if (adjust->line_no != -1) {
const int diff = orig_sp - sp;
if (diff > 0) {
+ if (insns_info_index == 0) {
+ COMPILE_ERROR(iseq, adjust->line_no,
+ "iseq_set_sequence: adjust bug (ISEQ_ELEMENT_ADJUST must not be the first in iseq)");
+ }
if (add_adjust_info(insns_info, positions, insns_info_index, code_index, adjust)) insns_info_index++;
}
if (diff > 1) {