From a44938c6b17456edb47b0dafb720c00700de3fac Mon Sep 17 00:00:00 2001 From: Bruce Hill Date: Sun, 10 Jan 2021 13:29:30 -0800 Subject: Mitigation of memory leak --- vm.c | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'vm.c') diff --git a/vm.c b/vm.c index 68ff79a..6969c55 100644 --- a/vm.c +++ b/vm.c @@ -363,6 +363,14 @@ static match_t *_match(def_t *defs, file_t *f, const char *str, vm_op_t *op, uns while (defs2 != defs) { def_t *next = defs2->next; defs2->next = NULL; + // Deliberate memory leak, if there is a match, then the op + // will be stored on the match and can't be freed here. + // There's currently no refcounting on ops but that should + // be how to prevent a memory leak from this. + // TODO: add refcounting to ops? + if (m2 == NULL) { + xfree(&defs2->op); + } xfree(&defs2); defs2 = next; } -- cgit v1.2.3