Repaired the function, so it can return "0" and doesn't write outside allocated memory.
authorLukas Jiriste <ljiriste@student.42prague.com>
Fri, 8 Sep 2023 10:11:54 +0000 (12:11 +0200)
committerLukas Jiriste <ljiriste@student.42prague.com>
Fri, 8 Sep 2023 10:11:54 +0000 (12:11 +0200)
ft_itoa_base.c

index 7e0b901aba85c82411ebf893e5734f777f50e94c..45d19ef1379866fd02c8c26772132c4eb9b35825 100644 (file)
@@ -6,7 +6,7 @@
 /*   By: ljiriste <marvin@42.fr>                    +#+  +:+       +#+        */
 /*                                                +#+#+#+#+#+   +#+           */
 /*   Created: 2023/09/05 09:46:11 by ljiriste          #+#    #+#             */
-/*   Updated: 2023/09/05 11:46:44 by ljiriste         ###   ########.fr       */
+/*   Updated: 2023/09/08 12:09:56 by ljiriste         ###   ########.fr       */
 /*                                                                            */
 /* ************************************************************************** */
 
@@ -73,10 +73,12 @@ char        *ft_itoa_base(intmax_t n, const char *base)
                return (res);
        if (n < 0)
                res[0] = '-';
-       res[size--] = '\0';
+       res[--size] = '\0';
+       if (n == 0)
+               res[0] = base[0];
        while (n != 0)
        {
-               res[size--] = base[abs_max(n % base_len)];
+               res[--size] = base[abs_max(n % base_len)];
                n /= base_len;
        }
        return (res);