summaryrefslogtreecommitdiffhomepage
path: root/src/gc.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/gc.c')
-rw-r--r--src/gc.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/src/gc.c b/src/gc.c
index 8d9a1806c..62503733e 100644
--- a/src/gc.c
+++ b/src/gc.c
@@ -201,6 +201,8 @@ gettimeofday_time(void)
#define objects(p) ((RVALUE *)p->objects)
+mrb_noreturn void mrb_raise_nomemory(mrb_state *mrb);
+
MRB_API void*
mrb_realloc_simple(mrb_state *mrb, void *p, size_t len)
{
@@ -224,12 +226,12 @@ mrb_realloc(mrb_state *mrb, void *p, size_t len)
if (len == 0) return p2;
if (p2 == NULL) {
if (mrb->gc.out_of_memory) {
- mrb_exc_raise(mrb, mrb_obj_value(mrb->nomem_err));
+ mrb_raise_nomemory(mrb);
/* mrb_panic(mrb); */
}
else {
mrb->gc.out_of_memory = TRUE;
- mrb_exc_raise(mrb, mrb_obj_value(mrb->nomem_err));
+ mrb_raise_nomemory(mrb);
}
}
else {
@@ -1294,6 +1296,7 @@ mrb_full_gc(mrb_state *mrb)
{
mrb_gc *gc = &mrb->gc;
+ if (!mrb->c) return;
if (gc->disabled || gc->iterating) return;
GC_INVOKE_TIME_REPORT("mrb_full_gc()");