Fix initialization of table rows
authorLukas Jiriste <ljiriste@student.42prague.com>
Wed, 10 Jul 2024 19:36:35 +0000 (21:36 +0200)
committerLukas Jiriste <ljiriste@student.42prague.com>
Sun, 21 Jul 2024 18:21:22 +0000 (20:21 +0200)
The initialization was caused by an inappropriate use of
ft_vec_insert_range. I was not sure whether it fills the range with the
single element or whether it insert range and I misread the source code

ft_parse/ft_parsing_table_generate.c

index 3a275f061292b847b90afa746189b436c9be39ed..62503e822aa82bf4feb543658cb4f02c220d9ec4 100644 (file)
@@ -6,7 +6,7 @@
 /*   By: ljiriste <ljiriste@student.42prague.com>   +#+  +:+       +#+        */
 /*                                                +#+#+#+#+#+   +#+           */
 /*   Created: 2024/06/27 11:16:53 by ljiriste          #+#    #+#             */
-/*   Updated: 2024/07/10 20:25:44 by ljiriste         ###   ########.fr       */
+/*   Updated: 2024/07/10 21:33:47 by ljiriste         ###   ########.fr       */
 /*                                                                            */
 /* ************************************************************************** */
 
@@ -641,25 +641,41 @@ t_ft_stat construct_states(t_vec *states, const t_vec *rules, const t_vec *token
 
 t_ft_stat      prefill_lookahead(t_vec *lookahead, size_t size)
 {
-       t_ft_stat       res;
+       t_ft_stat                       res;
+       size_t                          i;
        const t_parser_action refuse = {.type = parser_refuse, .number = 0};
 
        res = ft_vec_reserve(lookahead, size);
        if (res != success)
                return (res);
-       res = ft_vec_insert_range(lookahead, &refuse, size, 0);
-       return (res);
+       i = 0;
+       while (i < size)
+       {
+               res = ft_vec_append(lookahead, &refuse);
+               if (res != success)
+                       return (res);
+               ++i;
+       }
+       return (success);
 }
 
 t_ft_stat      prefill_gotos(t_vec *gotos, size_t size)
 {
        t_ft_stat               res;
+       size_t                  i;
        const ssize_t   refuse = -1;
 
        res = ft_vec_reserve(gotos, size);
        if (res != success)
                return (res);
-       res = ft_vec_insert_range(gotos, &refuse, size, 0);
+       i = 0;
+       while (i < size)
+       {
+               res = ft_vec_append(gotos, &refuse);
+               if (res != success)
+                       return (res);
+               ++i;
+       }
        return (res);
 }