diff options
| author | Yukihiro "Matz" Matsumoto <[email protected]> | 2017-02-08 16:31:37 +0900 |
|---|---|---|
| committer | Yukihiro "Matz" Matsumoto <[email protected]> | 2017-02-08 16:31:37 +0900 |
| commit | b277c58e783f187cfff1b7bb5843d2e95d3c3b0b (patch) | |
| tree | 2ff7f94b53398541f808d264295d1689a166b7f2 /src | |
| parent | f3d4ff16d39b34585d41c31ffc09a0ffb512ff81 (diff) | |
| download | mruby-b277c58e783f187cfff1b7bb5843d2e95d3c3b0b.tar.gz mruby-b277c58e783f187cfff1b7bb5843d2e95d3c3b0b.zip | |
Mark classes referenced from saved backtrace.
Maybe related to #3438
Diffstat (limited to 'src')
| -rw-r--r-- | src/gc.c | 5 |
1 files changed, 5 insertions, 0 deletions
@@ -857,7 +857,12 @@ root_scan_phase(mrb_state *mrb, mrb_gc *gc) mrb_gc_mark(mrb, (struct RBasic*)mrb->top_self); /* mark exception */ mrb_gc_mark(mrb, (struct RBasic*)mrb->exc); + /* mark backtrace */ mrb_gc_mark(mrb, (struct RBasic*)mrb->backtrace.exc); + e = (size_t)mrb->backtrace.n; + for (i=0; i<e; i++) { + mrb_gc_mark(mrb, (struct RBasic*)mrb->backtrace.entries[i].klass); + } /* mark pre-allocated exception */ mrb_gc_mark(mrb, (struct RBasic*)mrb->nomem_err); #ifdef MRB_GC_FIXED_ARENA |
