From b91e79933bcd4051ab270c671430b389d891986a Mon Sep 17 00:00:00 2001 From: Aryadev Chavali Date: Wed, 11 Feb 2026 07:48:28 +0000 Subject: [PATCH] symtable: refactor for SV changes and propagate --- include/alisp/symtable.h | 2 +- src/lisp.c | 2 +- src/symtable.c | 7 +++++-- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/include/alisp/symtable.h b/include/alisp/symtable.h index adbff50..c4012d3 100644 --- a/include/alisp/symtable.h +++ b/include/alisp/symtable.h @@ -21,7 +21,7 @@ typedef struct #define SYM_TABLE_INIT_SIZE (1 << 10) void sym_table_init(sym_table_t *); -char *sym_table_find(sym_table_t *, sv_t); +const char *sym_table_find(sym_table_t *, sv_t); void sym_table_free(sym_table_t *); #endif diff --git a/src/lisp.c b/src/lisp.c index 2ad3f49..922b164 100644 --- a/src/lisp.c +++ b/src/lisp.c @@ -71,7 +71,7 @@ lisp_t *make_vec(sys_t *sys, u64 capacity) lisp_t *intern(sys_t *sys, sv_t sv) { - char *str = sym_table_find(&sys->symtable, sv); + const char *str = sym_table_find(&sys->symtable, sv); return tag_sym(str); } diff --git a/src/symtable.c b/src/symtable.c index 50c8e3a..5e5512c 100644 --- a/src/symtable.c +++ b/src/symtable.c @@ -29,7 +29,7 @@ void sym_table_init(sym_table_t *table) vec_init(&table->entries, table->capacity * sizeof(sv_t)); } -char *sym_table_find(sym_table_t *table, sv_t sv) +const char *sym_table_find(sym_table_t *table, sv_t sv) { // Initialise the table if it's not done already if (table->entries.capacity == 0) @@ -62,7 +62,10 @@ void sym_table_free(sym_table_t *table) { current = ENTRY_GET(table, i); if (current.data) - free(current.data); + { + // NOTE: We clone all data here, so it's okay to free by hand. + free((void *)current.data); + } } // Free the underlying container vec_free(&table->entries);