summaryrefslogtreecommitdiff
path: root/lisp.c
diff options
context:
space:
mode:
authorFelix Perktold <Felix.Perktold@student.uibk.ac.at>2026-01-25 01:41:00 +0100
committerFelix Perktold <Felix.Perktold@student.uibk.ac.at>2026-01-25 01:41:00 +0100
commitfc750d1d9303776cf00971b5fbf1a1c3e5d45c16 (patch)
tree6ef0bfb0c31ed898f22b9d7d8cf03a5e0c337203 /lisp.c
parent15b883e68f620592cafada6ef7f6c698a2c216c2 (diff)
fix
Diffstat (limited to 'lisp.c')
-rw-r--r--lisp.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/lisp.c b/lisp.c
index 52f7869..c95bdf7 100644
--- a/lisp.c
+++ b/lisp.c
@@ -499,9 +499,9 @@ void mark_val(value *val) {
void mark_env(env *e) {
if (!e || e->marked) { return; }
- e->marked = 1;
for (env *cur = e; cur; cur = cur->next) {
+ cur->marked = 1;
if (cur->value) {
mark_val(cur->value);
}
@@ -546,7 +546,7 @@ void free_value(value *val) {
free(val);
}
-int sweep() {
+void sweep() {
reg *r = global_reg;
reg *prev = NULL;
@@ -578,6 +578,7 @@ void reset_env_marks(env *e) {
}
void reset_marks() {
+ reset_env_marks(global_env);
for (reg *r = global_reg; r; r = r->next) {
if (r->value) {
r->value->marked = 0;