diff options
| -rw-r--r-- | src/engine.c | 14 | ||||
| -rw-r--r-- | src/lexer.c | 28 |
2 files changed, 17 insertions, 25 deletions
diff --git a/src/engine.c b/src/engine.c index f4b2f63..fe54a94 100644 --- a/src/engine.c +++ b/src/engine.c @@ -45,7 +45,6 @@ handle_include(char **buffer, key_match_t *match, directive_t *directive) free(partial_content); free(temp_buffer); - free(operand); } void @@ -72,14 +71,12 @@ handle_contentfor(char **buffer, temp_buffer + operand->length); free(temp_buffer); - free(operand); } void handle_eachdo(char **buffer, key_match_t *match, directive_t *directive) { eachdo_operands_t *operands = directive->operands; - char *original_content = operands->content; list_t *content_headers = engine_ingest(&operands->content); list_delete(content_headers); @@ -189,9 +186,6 @@ handle_eachdo(char **buffer, key_match_t *match, directive_t *directive) list_delete(atoms); free(content); free(temp_buffer); - free(operands->key); - free(original_content); - free(operands); } list_t * @@ -244,7 +238,6 @@ engine_ingest(char **buffer) break; case PUT: - free(directive->operands); skip++; break; case ENDEACHDO: @@ -256,11 +249,8 @@ engine_ingest(char **buffer) break; } - if (directive != NULL) - free(directive); - - if (match != NULL) - free(match); + directive_delete(directive); + free(match); } return content_headers; diff --git a/src/lexer.c b/src/lexer.c index 47f76f0..aa64c99 100644 --- a/src/lexer.c +++ b/src/lexer.c @@ -36,7 +36,7 @@ lex(char *buffer) raw_directive->operands = raw_content; list_add(directives, raw_directive); - free(raw_directive); + directive_delete(raw_directive); } buffer += match->offset + match->length; @@ -56,7 +56,7 @@ lex(char *buffer) raw_directive->operands = raw_content; list_add(directives, raw_directive); - free(raw_directive); + directive_delete(raw_directive); } return directives; @@ -147,7 +147,7 @@ lexer_handle_contentfor(directive_t *directive, if (new_match == NULL) { printf("Cannot find endcontent\n"); free(new_match); - free(directive); + directive_delete(directive); /* TODO: Handle early returns */ return; } @@ -157,18 +157,18 @@ lexer_handle_contentfor(directive_t *directive, printf("Cannot find directive: %.*s\n", new_match->length, buffer + new_match->offset); - free(new_directive); + directive_delete(new_directive); free(new_match); - free(directive); + directive_delete(directive); return; } if (new_directive->type == ENDCONTENT) { - free(new_directive); + directive_delete(new_directive); break; } - free(new_directive); + directive_delete(new_directive); free(new_match); } @@ -201,7 +201,7 @@ lexer_handle_eachdo(directive_t *directive, if (new_match == NULL) { printf("Cannot find endeachdo\n"); free(new_match); - free(directive); + directive_delete(directive); /* TODO: Handle early returns */ return; } @@ -212,19 +212,19 @@ lexer_handle_eachdo(directive_t *directive, new_match->length, buffer + new_match->offset); free(new_match); - free(directive); + directive_delete(directive); return; } if (new_directive->type == ENDEACHDO) { - free(new_directive); + directive_delete(new_directive); break; } else { /* TODO: delete_directive */ - free(new_directive->operands); + directive_delete(new_directive->operands); } - free(new_directive); + directive_delete(new_directive); free(new_match); skip++; @@ -316,7 +316,7 @@ found_start: } else if (DIRECTIVE_IS("put")) { lexer_handle_put(directive, match, buffer, n); } else { - free(directive); + directive_delete(directive); return NULL; } @@ -345,12 +345,14 @@ directive_delete(directive_t *directive) free(operands->content); free(operands->key); free(operands); + break; } case CONTENTFOR: { contentfor_operand_t *operands = directive->operands; free(operands->content); free(operands->key); free(operands); + break; } case PUT: case CONTENT: |
