diff --git a/src/builtins/free_exit.c b/src/builtins/free_exit.c
index 9bab737..7b144c1 100644
--- a/src/builtins/free_exit.c
+++ b/src/builtins/free_exit.c
@@ -6,7 +6,7 @@
 /*   By: mmoussou <mmoussou@student.42angouleme.fr  +#+  +:+       +#+        */
 /*                                                +#+#+#+#+#+   +#+           */
 /*   Created: 2024/07/15 12:28:36 by adjoly            #+#    #+#             */
-/*   Updated: 2024/07/15 15:50:55 by mmoussou         ###   ########.fr       */
+/*   Updated: 2024/07/15 16:07:23 by mmoussou         ###   ########.fr       */
 /*                                                                            */
 /* ************************************************************************** */
 
@@ -17,7 +17,7 @@ void	free_exit(t_env *env, char **env_array)
 {
 	int	i;
 
-	i = 0;
+	i = 3;
 	while (i < 1024)
 	{
 		close(i);
diff --git a/src/builtins/ft_exit.c b/src/builtins/ft_exit.c
index e7aeb78..7879337 100644
--- a/src/builtins/ft_exit.c
+++ b/src/builtins/ft_exit.c
@@ -6,7 +6,7 @@
 /*   By: mmoussou <mmoussou@student.42angouleme.fr  +#+  +:+       +#+        */
 /*                                                +#+#+#+#+#+   +#+           */
 /*   Created: 2024/07/14 13:46:57 by adjoly            #+#    #+#             */
-/*   Updated: 2024/07/15 15:49:06 by mmoussou         ###   ########.fr       */
+/*   Updated: 2024/07/15 16:07:11 by mmoussou         ###   ########.fr       */
 /*                                                                            */
 /* ************************************************************************** */
 
@@ -31,12 +31,30 @@ int	check_exit_value(char *str)
 	return (0);
 }
 
-void	ft_exit(char **argv, int ac, char **env_array, t_env *env)
+void	exit_args_handler(char **argv, int ac, char **env_array, t_env *env)
 {
 	int	return_value;
 
+	if (ac > 2)
+	{
+		printf("minishell: exit: too many arguments\n");
+		get_exit_code(1);
+		return ;
+	}
+	return_value = atoi(argv[1]);
+	if (return_value == -1)
+		return_value += 255;
+	free_exit(env, env_array);
+	exit(get_exit_code(return_value));
+}
+
+void	ft_exit(char **argv, int ac, char **env_array, t_env *env)
+{
 	if (ac < 2)
+	{
+		free_exit(env, env_array);
 		exit(get_exit_code(-1));
+	}
 	if (check_exit_value(argv[1]))
 	{
 		printf("minishell: exit: %s: numeric argument required\n", argv[1]);
@@ -44,17 +62,5 @@ void	ft_exit(char **argv, int ac, char **env_array, t_env *env)
 		exit(2);
 	}
 	else
-	{
-		if (ac > 2)
-			printf("minishell: exit: too many arguments\n");
-		else
-		{
-			return_value = atoi(argv[1]);
-			if (return_value == -1)
-				return_value += 255;
-			free_exit(env, env_array);
-			exit(get_exit_code(return_value));
-		}
-	}
-	get_exit_code(1);
+		exit_args_handler(argv, ac, env_array, env);
 }