diff options
| author | Yukihiro "Matz" Matsumoto <[email protected]> | 2021-02-19 15:36:41 +0900 |
|---|---|---|
| committer | Yukihiro "Matz" Matsumoto <[email protected]> | 2021-02-19 15:36:41 +0900 |
| commit | 787487b16dce4fbb9059a70b13d31d8be679fe70 (patch) | |
| tree | 312c8e8c1b96d631ea5a828f1d4381367f7a5e46 | |
| parent | ce0a381406b9d919f8cb6578315b7b70d96adb83 (diff) | |
| download | mruby-787487b16dce4fbb9059a70b13d31d8be679fe70.tar.gz mruby-787487b16dce4fbb9059a70b13d31d8be679fe70.zip | |
Check `MRB_TT_*` before object allocation; ref #5352
| -rw-r--r-- | include/mruby/value.h | 6 | ||||
| -rw-r--r-- | src/gc.c | 3 |
2 files changed, 6 insertions, 3 deletions
diff --git a/include/mruby/value.h b/include/mruby/value.h index 293ef90a7..a73803a14 100644 --- a/include/mruby/value.h +++ b/include/mruby/value.h @@ -107,12 +107,12 @@ static const unsigned int IEEE754_INFINITY_BITS_SINGLE = 0x7F800000; enum mrb_vtype { MRB_TT_FALSE = 0, MRB_TT_TRUE, - MRB_TT_FLOAT, - MRB_TT_INTEGER, MRB_TT_SYMBOL, MRB_TT_UNDEF, - MRB_TT_CPTR, MRB_TT_FREE, + MRB_TT_FLOAT, + MRB_TT_INTEGER, + MRB_TT_CPTR, MRB_TT_OBJECT, MRB_TT_CLASS, MRB_TT_MODULE, @@ -559,6 +559,9 @@ mrb_obj_alloc(mrb_state *mrb, enum mrb_vtype ttype, struct RClass *cls) mrb_raisef(mrb, E_TYPE_ERROR, "allocation failure of %C", cls); } } + if (ttype <= MRB_TT_FREE) { + mrb_raisef(mrb, E_TYPE_ERROR, "allocation failure of %C (type %d)", cls, (int)ttype); + } #ifdef MRB_GC_STRESS mrb_full_gc(mrb); |
