aboutsummaryrefslogtreecommitdiff
path: root/src/term.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/term.c')
-rw-r--r--src/term.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/src/term.c b/src/term.c
index 67b6855..99fea0f 100644
--- a/src/term.c
+++ b/src/term.c
@@ -5,6 +5,7 @@
#include <stdio.h>
#include <term.h>
+#include <gc.h>
static int name_generator(void)
{
@@ -93,7 +94,7 @@ void to_bruijn(struct term *term)
struct term *new_term(term_type type)
{
- struct term *term = calloc(1, sizeof(*term));
+ struct term *term = gc_calloc(&gc, 1, sizeof(*term));
if (!term) {
fprintf(stderr, "Out of memory!\n");
abort();
@@ -154,15 +155,15 @@ void free_term(struct term *term)
switch (term->type) {
case ABS:
free_term(term->u.abs.term);
- free(term);
+ gc_free(&gc, term);
break;
case APP:
free_term(term->u.app.lhs);
free_term(term->u.app.rhs);
- free(term);
+ gc_free(&gc, term);
break;
case VAR:
- free(term);
+ gc_free(&gc, term);
break;
default:
fprintf(stderr, "Invalid type %d\n", term->type);