summaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/dump.c2
-rw-r--r--src/gc.c9
2 files changed, 10 insertions, 1 deletions
diff --git a/src/dump.c b/src/dump.c
index 89b0053da..76d9fe1bc 100644
--- a/src/dump.c
+++ b/src/dump.c
@@ -1052,7 +1052,7 @@ dump_irep_struct(mrb_state *mrb, const mrb_irep *irep, uint8_t flags, FILE *fp,
/* dump lv */
if (irep->lv) {
len=irep->nlocals;
- fprintf(fp, "static const mrb_sym %s_lv_%d[%d] = {", name, n, len);
+ fprintf(fp, "static const mrb_sym %s_lv_%d[%d] = {", name, n, len-1);
for (i=0; i+1<len; i++) {
fprintf(fp, "%uU, ", irep->lv[i]);
}
diff --git a/src/gc.c b/src/gc.c
index 7192e2fef..04724ab1e 100644
--- a/src/gc.c
+++ b/src/gc.c
@@ -760,6 +760,14 @@ gc_mark_children(mrb_state *mrb, mrb_gc *gc, struct RBasic *obj)
mrb_gc_mark_range(mrb, (struct RRange*)obj);
break;
+ case MRB_TT_BREAK:
+ {
+ struct RBreak *brk = (struct RBreak*)obj;
+ mrb_gc_mark(mrb, (struct RBasic*)mrb_break_proc_get(brk));
+ mrb_gc_mark_value(mrb, mrb_break_value_get(brk));
+ }
+ break;
+
default:
break;
}
@@ -1019,6 +1027,7 @@ gc_gray_counts(mrb_state *mrb, mrb_gc *gc, struct RBasic *obj)
case MRB_TT_PROC:
case MRB_TT_RANGE:
+ case MRB_TT_BREAK:
children+=2;
break;