Add error messages, fix "leak"
authorLukáš Jiřiště <gymnazium.jiriste@gmail.com>
Sun, 9 Jun 2024 16:48:41 +0000 (18:48 +0200)
committerLukáš Jiřiště <gymnazium.jiriste@gmail.com>
Sun, 9 Jun 2024 16:48:41 +0000 (18:48 +0200)
src/load.c

index 10e63110be083fff0b9b36f69c3a1c7f59b6735a..3b8334285e3e3fdb402743f8e8d3312c0309d3d7 100644 (file)
@@ -35,12 +35,10 @@ static int  process_train(char **split_line, t_vec *catalog, unsigned short era)
        new_train.era = era;
        new_train.size = ft_atoi(split_line[2]);
        new_train.base = process_characteristics(split_line);
-       if (ft_vec_append(catalog, &new_train) != success)
-       {
-               free(new_train.name);
-               return (4);
-       }
-       return (0);
+       if (ft_vec_append(catalog, &new_train) == success)
+               return (0);
+       free(new_train.name);
+       return (4);
 }
 
 static int     process_upgrade(char **split_line, t_vec *catalog)
@@ -58,9 +56,15 @@ static int   process_upgrade(char **split_line, t_vec *catalog)
        {
                train = ft_vec_access(catalog, i);
                if (!ft_strcmp(split_line[1], train->name))
-                       return (4 * (ft_vec_append(&train->upgrades, &upgrade) != success));
+               {
+                       if (ft_vec_append(&train->upgrades, &upgrade) == success)
+                               return (0);
+                       free(upgrade.name);
+                       return (4);
+               }
                ++i;
        }
+       free(upgrade.name);
        return (5);
 }
 
@@ -75,9 +79,13 @@ static int   process_line(const char *line, t_vec *catalog, unsigned short era)
        if (!split_line)
                return (1);
        if (!ft_strcmp(split_line[1], "passengers") || !ft_strcmp(split_line[1], "cargo"))
-               process_train(split_line, catalog, era);
+       {
+               if (process_train(split_line, catalog, era))
+                       ft_printf("Error loading train %s!\n", split_line[0]);
+       }
        else if (ft_strcmp(split_line[1], "coupling"))
-               process_upgrade(split_line, catalog);
+               if (process_upgrade(split_line, catalog))
+                       ft_printf("Error loading upgrade %s for train %s!\n", split_line[0], split_line[1]);
        i = 0;
        while (split_line[i])
                free(split_line[i++]);