diff options
| author | Bouke van der Bijl <[email protected]> | 2016-12-06 10:30:08 -0500 |
|---|---|---|
| committer | Bouke van der Bijl <[email protected]> | 2016-12-07 15:14:12 -0500 |
| commit | f7a891fa8979bdb82410e1adc98765013cc29a79 (patch) | |
| tree | d534caa7fb953a5db067c99a0b290415889b4c38 /src | |
| parent | 5930a6ebc7a5ebf0c9b2dfe1d250935e6ddaeceb (diff) | |
| download | mruby-f7a891fa8979bdb82410e1adc98765013cc29a79.tar.gz mruby-f7a891fa8979bdb82410e1adc98765013cc29a79.zip | |
Mark all the built-in classes during GC sweep
Reported by https://hackerone.com/haquaman
Diffstat (limited to 'src')
| -rw-r--r-- | src/gc.c | 20 |
1 files changed, 20 insertions, 0 deletions
@@ -832,6 +832,26 @@ root_scan_phase(mrb_state *mrb, mrb_gc *gc) } /* mark class hierarchy */ mrb_gc_mark(mrb, (struct RBasic*)mrb->object_class); + + /* mark built-in classes */ + mrb_gc_mark(mrb, (struct RBasic*)mrb->class_class); + mrb_gc_mark(mrb, (struct RBasic*)mrb->module_class); + mrb_gc_mark(mrb, (struct RBasic*)mrb->proc_class); + mrb_gc_mark(mrb, (struct RBasic*)mrb->string_class); + mrb_gc_mark(mrb, (struct RBasic*)mrb->array_class); + mrb_gc_mark(mrb, (struct RBasic*)mrb->hash_class); + + mrb_gc_mark(mrb, (struct RBasic*)mrb->float_class); + mrb_gc_mark(mrb, (struct RBasic*)mrb->fixnum_class); + mrb_gc_mark(mrb, (struct RBasic*)mrb->true_class); + mrb_gc_mark(mrb, (struct RBasic*)mrb->false_class); + mrb_gc_mark(mrb, (struct RBasic*)mrb->nil_class); + mrb_gc_mark(mrb, (struct RBasic*)mrb->symbol_class); + mrb_gc_mark(mrb, (struct RBasic*)mrb->kernel_module); + + mrb_gc_mark(mrb, (struct RBasic*)mrb->eException_class); + mrb_gc_mark(mrb, (struct RBasic*)mrb->eStandardError_class); + /* mark top_self */ mrb_gc_mark(mrb, (struct RBasic*)mrb->top_self); /* mark exception */ |
