diff options
Diffstat (limited to 'file_loader.c')
| -rw-r--r-- | file_loader.c | 10 |
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); } |
