summaryrefslogtreecommitdiff
path: root/types.c
diff options
context:
space:
mode:
authorLeo Tenenbaum <pommicket@gmail.com>2020-01-12 14:04:34 -0500
committerLeo Tenenbaum <pommicket@gmail.com>2020-01-12 14:04:34 -0500
commit7659a5ff48bb51baa6fcf5dfe13c8583413f7f4a (patch)
tree183fcadb06a6892a86875d057e397d74e3c159b9 /types.c
parent2069b22cbcbbf293151db0c7c2a3e29f8c29c977 (diff)
better identifier system (uses much less memory)
Diffstat (limited to 'types.c')
-rw-r--r--types.c8
1 files changed, 3 insertions, 5 deletions
diff --git a/types.c b/types.c
index 6742c86..36876c6 100644
--- a/types.c
+++ b/types.c
@@ -978,13 +978,11 @@ static bool types_expr(Typer *tr, Expression *e) {
return false;
}
size_t name_str_len = (size_t)name_str.n;
- char *name_cstr = err_malloc(name_str_len + 1);
+ char *name_cstr = typer_malloc(tr, name_str_len + 1);
memcpy(name_cstr, name_str.data, name_str_len);
name_cstr[name_str.n] = '\0';
- /* advance copy so we can free the original */
- char *copy = name_cstr;
- Identifier name_ident = ident_insert(tr->idents, &copy);
- free(name_cstr);
+ Identifier name_ident = ident_insert(tr->idents, &name_cstr);
+ assert(!*name_cstr);
e->pkg.name_ident = name_ident;
if (!name_ident->pkg) {
char *filename = typer_malloc(tr, name_str_len + 5);