aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRaghuram Subramani <raghus2247@gmail.com>2025-07-29 22:22:15 +0530
committerRaghuram Subramani <raghus2247@gmail.com>2025-07-29 22:22:15 +0530
commit5b6b95cd4f875d7a619aa69bde8d1d2f93bbc254 (patch)
treea4d94e07c3d0bd1d94658a5b1053605448836403
parent6065834beb75e6700339ecd40051718c014c6934 (diff)
engine: free operands while processing eachdo
-rw-r--r--src/engine.c14
1 files changed, 9 insertions, 5 deletions
diff --git a/src/engine.c b/src/engine.c
index bcd7b56..8bc62e7 100644
--- a/src/engine.c
+++ b/src/engine.c
@@ -130,11 +130,11 @@ handle_eachdo(char **buffer, key_match_t *match, directive_t *directive)
free(content);
for (size_t i = 0; i < directives->size; i++) {
- directive_t *directive = list_get(directives, i);
- switch (directive->type) {
+ directive_t *_directive = list_get(directives, i);
+ switch (_directive->type) {
case _RAW: {
- list_wrap_and_add(atoms, strdup(directive->operands));
- length += strlen(directive->operands);
+ list_wrap_and_add(atoms, strdup(_directive->operands));
+ length += strlen(_directive->operands);
break;
}
@@ -181,8 +181,12 @@ handle_eachdo(char **buffer, key_match_t *match, directive_t *directive)
content,
temp_buffer + operands->length);
- list_delete(atoms);
+ for (size_t i = 0; i < directives->size; i++) {
+ directive_t *_directive = list_get(directives, i);
+ free(_directive->operands);
+ }
list_delete(directives);
+ list_delete(atoms);
free(content);
free(temp_buffer);
free(operands);