Skip to content

Commit

Permalink
fix: still reachable memory leaks
Browse files Browse the repository at this point in the history
  • Loading branch information
romanmikh committed Sep 25, 2024
1 parent 64e9f0a commit 8d4379d
Show file tree
Hide file tree
Showing 10 changed files with 37 additions and 16 deletions.
10 changes: 5 additions & 5 deletions inc/execute.h
Original file line number Diff line number Diff line change
Expand Up @@ -18,20 +18,20 @@
# include "env.h"

/* execute */
int execute_ast(t_ast *node, t_ms_data *data);
int execute(t_ms_data *data);
int execute_ast(t_ast *node, t_ms_data *data);
int execute(t_ms_data *data);

/* utils */
char *ft_find_path(char *cmd, t_env *envp);
void ft_free_2d_arr(char **arr);
int ft_perror(char *str);
int ft_perror(char *str);
void close_fds(int in, int out);
void handle_io_fd(t_ms_data *data);
void handle_std_io(int *std_io, int std_fileno);

/* shell variable execution */
int handle_shell_variable(t_ast *node, t_ms_data *data);
int handle_get_shell_variable(t_ms_data *data, const char *key);
int handle_shell_variable(t_ast *node, t_ms_data *data);
int handle_get_shell_variable(t_ms_data *data, const char *key);
void shell_variable_update(t_ms_data *data, int status);

#endif
Binary file added minishell
Binary file not shown.
5 changes: 4 additions & 1 deletion src/check_tokenise/input_checker_helpers.c
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,11 @@
char *trim_input(char *str)
{
char *trimmed_str;
char *tmp;

trimmed_str = ft_strtrim(str, " \t\n\r\v\f");
tmp = str;
trimmed_str = ft_strtrim(tmp, " \t\n\r\v\f");
free(tmp);
if (!trimmed_str)
return (0);
return (trimmed_str);
Expand Down
5 changes: 4 additions & 1 deletion src/check_tokenise/tokeniser.c
Original file line number Diff line number Diff line change
Expand Up @@ -67,11 +67,14 @@ char *handle_special_chars(char *str, t_token **tokens)
t_token *new_token(char *value, t_token_type type)
{
t_token *token;
char *tmp;

token = malloc(sizeof(t_token));
if (!token)
return (NULL);
token->data = ft_strdup(value);
tmp = ft_strdup(value);
token->data = tmp;
free(tmp);
if (!token->data)
{
free(token);
Expand Down
6 changes: 5 additions & 1 deletion src/check_tokenise/tokeniser_helpers.c
Original file line number Diff line number Diff line change
Expand Up @@ -47,14 +47,18 @@ void print_ast_args(t_ast *node)
void append_word_if_valid(char *start, char *str, t_token **tokens)
{
char *word;
t_token *tmp_token;

if (str > start)
{
word = ft_strndup(start, str - start);
if (word)
{
append_token(tokens, new_token(word, PHRASE));
tmp_token = new_token(word, PHRASE);
append_token(tokens, tmp_token);
free(word);
free(tmp_token->data);
free(tmp_token);
}
else
ft_printf("Error: unable to allocate memory for token\n");
Expand Down
2 changes: 1 addition & 1 deletion src/execute/execute.c
Original file line number Diff line number Diff line change
Expand Up @@ -55,4 +55,4 @@ int execute_ast(t_ast *node, t_ms_data *data)
return (execute(data));
}
return (EXIT_SUCCESS);
}
}
1 change: 0 additions & 1 deletion src/execute/utils_1.c
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,6 @@ static void relative_path_handle(char *cmd, char *path, char **tmp_full_path);
- @return char* returns the full path of the command
*/


/** TODO:
* rewrite ft_find_path for working full path when $PATH deleted
*/
Expand Down
14 changes: 10 additions & 4 deletions src/main.c
Original file line number Diff line number Diff line change
Expand Up @@ -50,25 +50,31 @@ static void process_ast_and_io(t_ms_data *data, \
static void main_loop(t_ms_data *data, t_loop_data *loop_data)
{
t_token *tokens_start;
char *tmp;
t_ast *tmp_tree;

while (1)
{
loop_data->prompt = generate_prompt(data);
//loop_data->prompt = generate_prompt(data);
set_signals_interactive();
loop_data->input = readline(loop_data->prompt);
loop_data->input = readline(">");
set_signals_noninteractive();
if (loop_data->input == NULL)
{
write(STDOUT_FILENO, "exit\n", 5);
break ;
}
make_history(loop_data->input);
loop_data->trimmed_input = trim_input(loop_data->input);
tmp = trim_input(loop_data->input);
loop_data->trimmed_input = tmp;
free(tmp);
if (input_error_checks(loop_data))
continue ;
loop_data->tokens = tokenise(loop_data->trimmed_input);
tokens_start = loop_data->tokens;
loop_data->tree = parse_tokens(&loop_data->tokens, data);
tmp_tree = parse_tokens(&loop_data->tokens, data);
loop_data->tree = tmp_tree;
free(tmp_tree);
process_ast_and_io(data, loop_data, tokens_start);
}
clear_history_file();
Expand Down
5 changes: 4 additions & 1 deletion src/parser/AST_utils.c
Original file line number Diff line number Diff line change
Expand Up @@ -73,11 +73,14 @@ t_ast *manage_commands(t_token **tokens, t_ms_data *data)
{
t_ast *command_node;
int cmd_arg_count;
char **tmp_args;

command_node = new_ast_node();
command_node->type = PHRASE;
cmd_arg_count = cmd_arg_len(*tokens);
command_node->args = malloc(sizeof(char *) * (cmd_arg_count + 1));
tmp_args = malloc(sizeof(char *) * (cmd_arg_count + 1));
command_node->args = tmp_args;
free(tmp_args);
if (!command_node->args)
return (NULL);
set_command_args(command_node, tokens, cmd_arg_count);
Expand Down
5 changes: 4 additions & 1 deletion src/parser/loc_env_var_handler.c
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ void post_process_command_args(t_ast *command_node, int arg_count, \
{
int i;
char *processed_arg;
char *tmp;

i = 0;
while (i < arg_count)
Expand All @@ -35,7 +36,9 @@ void post_process_command_args(t_ast *command_node, int arg_count, \
ft_strlen(command_node->args[i]) - 2);
}
free(command_node->args[i]);
command_node->args[i] = ft_strdup(processed_arg);
tmp = ft_strdup(processed_arg);
command_node->args[i] = tmp;
free(tmp);
free(processed_arg);
i++;
}
Expand Down

0 comments on commit 8d4379d

Please sign in to comment.