start trying to fix memory leaks
This commit is contained in:
@@ -17,7 +17,13 @@ int main(int argc, char *argv[]) {
|
|||||||
|
|
||||||
darray_init(&tokens, sizeof(Token));
|
darray_init(&tokens, sizeof(Token));
|
||||||
|
|
||||||
LexerState state = {path, fopen(path, "r"), 0, 0, &tokens};
|
FILE * file = fopen(path, "r");
|
||||||
|
|
||||||
|
if (!file) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
LexerState state = {path, file, 0, 0, &tokens};
|
||||||
lexer(state);
|
lexer(state);
|
||||||
fclose(state.file);
|
fclose(state.file);
|
||||||
|
|
||||||
@@ -29,6 +35,5 @@ int main(int argc, char *argv[]) {
|
|||||||
darray_free(&tokens, free_token);
|
darray_free(&tokens, free_token);
|
||||||
|
|
||||||
darray_free(&ast, free_parsed);
|
darray_free(&ast, free_parsed);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -54,6 +54,8 @@ void free_parse_assign(void *ptr) {
|
|||||||
ParsedValue *parsedValue = ptr;
|
ParsedValue *parsedValue = ptr;
|
||||||
ParsedAssign *parsedAssign = parsedValue->data;
|
ParsedAssign *parsedAssign = parsedValue->data;
|
||||||
free_parsed(parsedAssign->to);
|
free_parsed(parsedAssign->to);
|
||||||
|
free(parsedAssign->to);
|
||||||
free_parsed(parsedAssign->from);
|
free_parsed(parsedAssign->from);
|
||||||
|
free(parsedAssign->from);
|
||||||
free(parsedAssign);
|
free(parsedAssign);
|
||||||
}
|
}
|
||||||
@@ -4,10 +4,13 @@
|
|||||||
#include <stddef.h>
|
#include <stddef.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
ParsedValue *convert_to_operation(DArray * to_operate_on, DArray * operations) {
|
ParsedValue *convert_to_operation(DArray * to_operate_on, DArray * operations) {
|
||||||
if (to_operate_on->size == 1) {
|
if (to_operate_on->size == 1) {
|
||||||
return darray_get(to_operate_on, 0);
|
ParsedValue * parsedValue = malloc(sizeof(ParsedValue));
|
||||||
|
memcpy(parsedValue, darray_get(to_operate_on, 0), sizeof(ParsedValue));
|
||||||
|
return parsedValue;
|
||||||
}
|
}
|
||||||
TokenType operation = 0;
|
TokenType operation = 0;
|
||||||
DArray positions;
|
DArray positions;
|
||||||
@@ -68,8 +71,8 @@ ParsedValue *parse_operations(char *file, DArray *tokens, size_t *index,
|
|||||||
darray_push(&to_operate_on, parse_token_full(file, tokens, index, true, false));
|
darray_push(&to_operate_on, parse_token_full(file, tokens, index, true, false));
|
||||||
}
|
}
|
||||||
ParsedValue *output = convert_to_operation(&to_operate_on, &operations);
|
ParsedValue *output = convert_to_operation(&to_operate_on, &operations);
|
||||||
darray_free(&to_operate_on, free_parsed);
|
darray_free(&to_operate_on, NULL);
|
||||||
darray_free(&operations, free_parsed);
|
darray_free(&operations, NULL);
|
||||||
return output;
|
return output;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -17,6 +17,7 @@
|
|||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
#include <gmp.h>
|
||||||
|
|
||||||
const char *ValueTypeNames[] = {
|
const char *ValueTypeNames[] = {
|
||||||
"string", "assign", "identifier", "number", "if statement", "access",
|
"string", "assign", "identifier", "number", "if statement", "access",
|
||||||
@@ -196,6 +197,8 @@ void free_parsed(void *ptr) {
|
|||||||
free_parse_access(parsed);
|
free_parse_access(parsed);
|
||||||
break;
|
break;
|
||||||
case AST_NUMBER:
|
case AST_NUMBER:
|
||||||
|
mpz_clear(parsed->data);
|
||||||
|
break;
|
||||||
case AST_NULL:
|
case AST_NULL:
|
||||||
case AST_BOOLEAN:
|
case AST_BOOLEAN:
|
||||||
break;
|
break;
|
||||||
|
|||||||
Reference in New Issue
Block a user