mirror of
https://github.com/mruby/mruby
synced 2026-06-08 16:11:16 +00:00
Add the care for malloc failed.
At the first time, mrb_realloc raise RuntimeError. At the time fails twice in a row, it causes panic.
This commit is contained in:
@@ -157,6 +157,20 @@ mrb_realloc(mrb_state *mrb, void *p, size_t len)
|
||||
mrb_garbage_collect(mrb);
|
||||
p2 = (mrb->allocf)(mrb, p, len, mrb->ud);
|
||||
}
|
||||
|
||||
if (!p2 && len) {
|
||||
if (mrb->out_of_memory) {
|
||||
/* mrb_panic(mrb); */
|
||||
}
|
||||
else {
|
||||
mrb->out_of_memory = 1;
|
||||
mrb_raise(mrb, E_RUNTIME_ERROR, "Out of memory");
|
||||
}
|
||||
}
|
||||
else {
|
||||
mrb->out_of_memory = 0;
|
||||
}
|
||||
|
||||
return p2;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user