Limit size of iseq buffer; fix #3927

parent ca837b1a
......@@ -149,8 +149,14 @@ new_label(codegen_scope *s)
static inline int
genop(codegen_scope *s, mrb_code i)
{
if (s->pc == s->icapa) {
if (s->pc >= s->icapa) {
s->icapa *= 2;
if (s->pc >= MAXARG_sBx) {
codegen_error(s, "too big code block");
}
if (s->icapa > MAXARG_sBx) {
s->icapa = MAXARG_sBx;
}
s->iseq = (mrb_code *)codegen_realloc(s, s->iseq, sizeof(mrb_code)*s->icapa);
if (s->lines) {
s->lines = (uint16_t*)codegen_realloc(s, s->lines, sizeof(short)*s->icapa);
......
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