aboutsummaryrefslogtreecommitdiff
path: root/file_loader.c
diff options
context:
space:
mode:
Diffstat (limited to 'file_loader.c')
-rw-r--r--file_loader.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/file_loader.c b/file_loader.c
index 749e985..27f871f 100644
--- a/file_loader.c
+++ b/file_loader.c
@@ -124,10 +124,12 @@ void destroy_file(file_t **f)
xfree(&((*f)->filename));
(*f)->filename = NULL;
}
+
if ((*f)->lines) {
xfree(&((*f)->lines));
(*f)->lines = NULL;
}
+
if ((*f)->contents) {
if ((*f)->mmapped) {
munmap((*f)->contents, (size_t)((*f)->end - (*f)->contents));
@@ -136,6 +138,14 @@ void destroy_file(file_t **f)
}
(*f)->contents = NULL;
}
+
+ while ((*f)->ops) {
+ allocated_op_t *tofree = (*f)->ops;
+ (*f)->ops = tofree->next;
+ memset(tofree, 'A', sizeof(allocated_op_t)); // Sentinel
+ xfree(&tofree);
+ }
+
xfree(f);
}