load_stdlib releases arena objects every time evaluating exprssion
This commit is contained in:
parent
6581177ec5
commit
f146287eff
|
@ -25,7 +25,7 @@ pic_load_stdlib(pic_state *pic)
|
||||||
{
|
{
|
||||||
static const char *fn = "piclib/built-in.scm";
|
static const char *fn = "piclib/built-in.scm";
|
||||||
FILE *file;
|
FILE *file;
|
||||||
int n, i;
|
int n, i, ai;
|
||||||
pic_value v, vs;
|
pic_value v, vs;
|
||||||
struct pic_proc *proc;
|
struct pic_proc *proc;
|
||||||
|
|
||||||
|
@ -41,6 +41,7 @@ pic_load_stdlib(pic_state *pic)
|
||||||
abort();
|
abort();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ai = pic_gc_arena_preserve(pic);
|
||||||
for (i = 0; i < n; ++i, vs = pic_cdr(pic, vs)) {
|
for (i = 0; i < n; ++i, vs = pic_cdr(pic, vs)) {
|
||||||
v = pic_car(pic, vs);
|
v = pic_car(pic, vs);
|
||||||
|
|
||||||
|
@ -57,6 +58,8 @@ pic_load_stdlib(pic_state *pic)
|
||||||
fputs("fatal error: built-in.scm evaluation failure", stderr);
|
fputs("fatal error: built-in.scm evaluation failure", stderr);
|
||||||
abort();
|
abort();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pic_gc_arena_restore(pic, ai);
|
||||||
}
|
}
|
||||||
|
|
||||||
#if DEBUG
|
#if DEBUG
|
||||||
|
|
Loading…
Reference in New Issue