From 3128d3c6469f897f986a088ee98622a6af7c6dc0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?b=CA=B0edoh=E2=82=82=20sw=C3=A9?= Date: Mon, 10 Jun 2024 01:15:19 +0500 Subject: [PATCH] Fix a memory leak --- src/process.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/process.c b/src/process.c index 2881a35..c4ec622 100644 --- a/src/process.c +++ b/src/process.c @@ -14,7 +14,7 @@ bool replace(tSyntaxElement* tree, tProcessingData* pdata) { if (tree->type == TOKEN) if (strcmp(tree->content.string, pd->data.replace.replacethis) == 0) { didreplace = true; - free(tree->content.string); + free(tree->content.none); tSyntaxElement* clone = se_clone_no_next(pd->data.replace.replacewiththis, tree); tree->content = clone->content; tree->type = clone->type; @@ -53,8 +53,10 @@ bool process_find(tSyntaxElement* tree, tProcessingData** p_pdata) { void process(tSyntaxElement* tree, tProcessingData* pdata) { tProcessingData* pd = pdata; bool deffound = false; + tProcessingData* firstpd = NULL; if (pd == NULL) { pd = calloc(1,sizeof(tProcessingData)); + firstpd = pd; } deffound = process_find(tree, &pd); if (tree->next != NULL) { @@ -72,4 +74,8 @@ void process(tSyntaxElement* tree, tProcessingData* pdata) { break; } } + if (pd != pdata) + free(pd); + if (firstpd != pd && firstpd != NULL) + free(firstpd); }