Fix a logic bug
authorLukas Jiriste <ljiriste@student.42prague.com>
Sat, 15 Jun 2024 08:17:54 +0000 (10:17 +0200)
committerLukas Jiriste <ljiriste@student.42prague.com>
Sat, 15 Jun 2024 08:17:54 +0000 (10:17 +0200)
ft_parse/ft_parse.c

index 0e1148655c7fac04926aa93efae612e0349b371e..259a826c60fa209b17a0a963ea9216bc838f25b7 100644 (file)
@@ -6,7 +6,7 @@
 /*   By: ljiriste <ljiriste@student.42prague.com>   +#+  +:+       +#+        */
 /*                                                +#+#+#+#+#+   +#+           */
 /*   Created: 2024/05/20 20:51:36 by ljiriste          #+#    #+#             */
-/*   Updated: 2024/06/15 09:24:56 by ljiriste         ###   ########.fr       */
+/*   Updated: 2024/06/15 10:06:32 by ljiriste         ###   ########.fr       */
 /*                                                                            */
 /* ************************************************************************** */
 
@@ -74,6 +74,8 @@ static t_grammar_rule parse_rule(const char *line)
                j = i;
                while (!ft_isspace(line[i]) && line[i])
                        ++i;
+               if (j == i)
+                       break ;
                token.type = ft_strndup(line + j, i - j);
                ft_vec_append(&rule.constituents, &token);
        }
@@ -109,7 +111,7 @@ static int  load_rules(t_vec *rules, const char *rules_filename)
        while (line)
        {
                rule = parse_rule(line);
-               if (!is_valid_rule(&rule) && ft_vec_append(rules, &rule))
+               if (!is_valid_rule(&rule) || ft_vec_append(rules, &rule) != success)
                {
                        ft_vec_free(rules, free_rule);
                        return (2);