diff options
| author | Raghuram Subramani <raghus2247@gmail.com> | 2025-07-29 22:22:15 +0530 |
|---|---|---|
| committer | Raghuram Subramani <raghus2247@gmail.com> | 2025-07-29 22:22:15 +0530 |
| commit | 5b6b95cd4f875d7a619aa69bde8d1d2f93bbc254 (patch) | |
| tree | a4d94e07c3d0bd1d94658a5b1053605448836403 | |
| parent | 6065834beb75e6700339ecd40051718c014c6934 (diff) | |
engine: free operands while processing eachdo
| -rw-r--r-- | src/engine.c | 14 |
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); |
