Commit 7c2f6886 authored by Yukihiro "Matz" Matsumoto's avatar Yukihiro "Matz" Matsumoto

Merge pull request #1121 from monaka/pr-check-malloc-failed2

Check malloc failed
parents 57cf2644 c7ff1bd8
...@@ -125,6 +125,7 @@ typedef struct mrb_state { ...@@ -125,6 +125,7 @@ typedef struct mrb_state {
mrb_bool gc_disabled:1; mrb_bool gc_disabled:1;
mrb_bool gc_full:1; mrb_bool gc_full:1;
mrb_bool is_generational_gc_mode:1; mrb_bool is_generational_gc_mode:1;
mrb_bool out_of_memory:1;
size_t majorgc_old_threshold; size_t majorgc_old_threshold;
struct alloca_header *mems; struct alloca_header *mems;
......
...@@ -157,6 +157,20 @@ mrb_realloc(mrb_state *mrb, void *p, size_t len) ...@@ -157,6 +157,20 @@ mrb_realloc(mrb_state *mrb, void *p, size_t len)
mrb_garbage_collect(mrb); mrb_garbage_collect(mrb);
p2 = (mrb->allocf)(mrb, p, len, mrb->ud); 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; return p2;
} }
......
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