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); }