summaryrefslogtreecommitdiff
path: root/assemble.c
diff options
context:
space:
mode:
Diffstat (limited to 'assemble.c')
-rw-r--r--assemble.c25
1 files changed, 25 insertions, 0 deletions
diff --git a/assemble.c b/assemble.c
index b51fd5c..cdd82d6 100644
--- a/assemble.c
+++ b/assemble.c
@@ -1304,6 +1304,23 @@ static void free_fixups(fixup *f) {
}
}
+void free_strlns(strln *root) {
+ strln *line;
+ if (root != NULL) {
+ line = root;
+ root = root->next;
+ if (line->str != NULL) {
+ free(line->str);
+ }
+ line->blanks = 0;
+ line->prev = NULL;
+ line->next = NULL;
+ free(line);
+ line = NULL;
+ free_strlns(root);
+ }
+}
+
uint64_t get_tokmem(token *t) {
uint64_t i = 0;
for (; t; t = t->next, i++);
@@ -1324,15 +1341,23 @@ void cleanup() {
/*fix_symtree(lines);*/
free_lines(lines);
lines = NULL;
+ last_line = NULL;
}
if (symbols) {
/*print_symtree(symbols, 0);*/
free_symbols(symbols);
symbols = NULL;
+ last_sym = NULL;
}
if (fixups) {
free_fixups(fixups);
fixups = NULL;
+ last_fix = NULL;
+ }
+ if (first_strln) {
+ free_strlns(first_strln);
+ first_strln = NULL;
+ last_strln = NULL;
}
while (i < stridx || i < comidx) {
if (i < stridx && string[i]) {