Check `MRB_TT_*` before object allocation; ref #5352

parent ce0a3814
...@@ -107,12 +107,12 @@ static const unsigned int IEEE754_INFINITY_BITS_SINGLE = 0x7F800000; ...@@ -107,12 +107,12 @@ static const unsigned int IEEE754_INFINITY_BITS_SINGLE = 0x7F800000;
enum mrb_vtype { enum mrb_vtype {
MRB_TT_FALSE = 0, MRB_TT_FALSE = 0,
MRB_TT_TRUE, MRB_TT_TRUE,
MRB_TT_FLOAT,
MRB_TT_INTEGER,
MRB_TT_SYMBOL, MRB_TT_SYMBOL,
MRB_TT_UNDEF, MRB_TT_UNDEF,
MRB_TT_CPTR,
MRB_TT_FREE, MRB_TT_FREE,
MRB_TT_FLOAT,
MRB_TT_INTEGER,
MRB_TT_CPTR,
MRB_TT_OBJECT, MRB_TT_OBJECT,
MRB_TT_CLASS, MRB_TT_CLASS,
MRB_TT_MODULE, MRB_TT_MODULE,
......
...@@ -559,6 +559,9 @@ mrb_obj_alloc(mrb_state *mrb, enum mrb_vtype ttype, struct RClass *cls) ...@@ -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); 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 #ifdef MRB_GC_STRESS
mrb_full_gc(mrb); mrb_full_gc(mrb);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment