From: Fletcher T. Penney Date: Thu, 16 Feb 2017 23:27:58 +0000 (-0500) Subject: FIXED: Work on memory leaks X-Git-Tag: 0.3.1a^2~11 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=ac675c0a62b89146ab72355877b00a72e2a6dbc7;p=multimarkdown FIXED: Work on memory leaks --- diff --git a/src/main.c b/src/main.c index 1a9723d..c342c19 100644 --- a/src/main.c +++ b/src/main.c @@ -359,7 +359,7 @@ int main(int argc, char** argv) { transclude_source(buffer, folder, format, NULL, NULL); - //free(folder); + // Don't free folder -- owned by dirname } result = mmd_process(buffer, extensions, format, language); @@ -408,7 +408,7 @@ int main(int argc, char** argv) { transclude_source(buffer, folder, format, NULL, NULL); - free(folder); + // Don't free folder -- owned by dirname } result = mmd_process(buffer, extensions, format, language); diff --git a/src/mmd.c b/src/mmd.c index 933d44c..5137ac1 100644 --- a/src/mmd.c +++ b/src/mmd.c @@ -211,8 +211,7 @@ void mmd_engine_free(mmd_engine * e, bool freeDString) { if (freeDString) d_string_free(e->dstr, true); - if (e->extensions & EXT_CRITIC) - token_pair_engine_free(e->pairings1); + token_pair_engine_free(e->pairings1); token_pair_engine_free(e->pairings2); token_pair_engine_free(e->pairings3); @@ -223,6 +222,12 @@ void mmd_engine_free(mmd_engine * e, bool freeDString) { stack_free(e->definition_stack); stack_free(e->header_stack); + // Citations need to be freed + while (e->citation_stack->size) { + footnote_free(stack_pop(e->citation_stack)); + } + stack_free(e->citation_stack); + // Links need to be freed while (e->link_stack->size) { link_free(stack_pop(e->link_stack)); @@ -1815,10 +1820,12 @@ char * metavalue_for_key(mmd_engine * e, const char * key) { if (strcmp(clean, m->key) == 0) { // We have a match + free(clean); return m->value; } } + free(clean); return result; }