aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCharles <sircharlesaze@gmail.com>2019-11-14 10:26:41 +0100
committerCharles <sircharlesaze@gmail.com>2019-11-14 10:51:12 +0100
commit2d6500136bd78fbc2545610f6f08718c728a9028 (patch)
treee4bef4f31abd4c701d80f53b0443ae837a949001
parent80f5c6a1cef114cd5006431149506bb5d87403b6 (diff)
downloadft_printf-2d6500136bd78fbc2545610f6f08718c728a9028.tar.gz
ft_printf-2d6500136bd78fbc2545610f6f08718c728a9028.tar.bz2
ft_printf-2d6500136bd78fbc2545610f6f08718c728a9028.zip
Fixed little memory leak in handle_precisionHEADmaster
-rw-r--r--.gitignore4
-rw-r--r--Makefile7
-rw-r--r--convert.c (renamed from printer.c)9
m---------libft0
-rw-r--r--main.c77
-rwxr-xr-xtestbin23144 -> 0 bytes
6 files changed, 53 insertions, 44 deletions
diff --git a/.gitignore b/.gitignore
index 3115c5e..680d62b 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,7 +1,7 @@
*.o
-a.out
*ghc
+a.out
ft_printf
-*.a
test
+*.a
*.dSYM
diff --git a/Makefile b/Makefile
index 68acda3..4097b0c 100644
--- a/Makefile
+++ b/Makefile
@@ -6,7 +6,7 @@
# By: cacharle <marvin@42.fr> +#+ +:+ +#+ #
# +#+#+#+#+#+ +#+ #
# Created: 2019/10/28 17:41:14 by cacharle #+# #+# #
-# Updated: 2019/11/13 09:27:01 by cacharle ### ########.fr #
+# Updated: 2019/11/14 10:23:31 by cacharle ### ########.fr #
# #
# **************************************************************************** #
@@ -19,10 +19,10 @@ INCFLAGS = -I$(LIBFT_ROOT)
RM = rm -f
LIB = ar rcs
-MAKE = make -j4
+MAKE = make
NAME = libftprintf.a
-SRC = ft_printf.c utils.c printer.c parse.c list.c extract.c \
+SRC = ft_printf.c utils.c convert.c parse.c list.c extract.c \
convert_int.c convert_uint.c convert_char.c convert_str.c \
convert_ptr.c convert_hex.c convert_percent.c convert_written.c \
convert_none.c length_modifier.c
@@ -49,6 +49,7 @@ fclean: libft_fclean clean
re: fclean all
+test: CCFLAGS += -g
test: all
$(CC) $(CCFLAGS) $(LDFLAGS) -L./libft -lft $(INCFLAGS) -o test main.c
diff --git a/printer.c b/convert.c
index 0eab18b..a3a5ecf 100644
--- a/printer.c
+++ b/convert.c
@@ -6,7 +6,7 @@
/* By: cacharle <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2019/10/28 23:19:24 by cacharle #+# #+# */
-/* Updated: 2019/11/13 09:28:35 by cacharle ### ########.fr */
+/* Updated: 2019/11/14 10:22:04 by cacharle ### ########.fr */
/* */
/* ************************************************************************** */
@@ -20,6 +20,8 @@ char *convert(t_pformat *pformat, va_list ap)
{
char *str;
+ if (pformat == NULL)
+ return (NULL);
if (pformat->flags & FLAG_WIDTH_WILDCARD)
{
if (pformat->flags & FLAG_WIDTH_OVERWRITE)
@@ -98,11 +100,16 @@ char *handle_precision(t_pformat *pformat, char *str)
int len;
char *tmp;
+ if (pformat == NULL || str == NULL)
+ return (NULL);
if (ft_strchr("diuxX", pformat->specifier) && pformat->precision >= 0)
pformat->flags &= ~FLAG_ZERO;
len = ft_strlen(str);
if (pformat->precision == 0 && str[0] == '0')
+ {
+ free(str);
return (ft_strdup(""));
+ }
if (!ft_strchr("diuxXp", pformat->specifier) || len >= pformat->precision)
return (str);
if ((tmp = (char*)malloc(sizeof(char) * (pformat->precision + 1))) == NULL)
diff --git a/libft b/libft
-Subproject 5bf49994b911abc2b8ff3bdb525cdc23c71f210
+Subproject d8e5d376244c6cf92e52666634cddaaf4e492aa
diff --git a/main.c b/main.c
index e6e0031..a6b61e5 100644
--- a/main.c
+++ b/main.c
@@ -6,7 +6,7 @@
/* By: cacharle <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2019/10/28 04:25:09 by cacharle #+# #+# */
-/* Updated: 2019/11/13 09:27:58 by cacharle ### ########.fr */
+/* Updated: 2019/11/14 09:23:59 by cacharle ### ########.fr */
/* */
/* ************************************************************************** */
@@ -38,50 +38,51 @@ int main()
/* ft_printf("[%05]\n"); */
/* printf("[%05]\n"); */
- int test = 42;
- ft_printf("bonjour\n");
- ft_printf("char: %c\n", 'r');
- ft_printf("string: %s\n", "bonjour");
- ft_printf("pointer: %p\n", &test);
- ft_printf("int: %d or %i\n", 45, 54);
- ft_printf("uint: %u\n", 1 << 31);
- ft_printf("hex lower: %x\n", 0xabcf012);
- ft_printf("hex upper: %X\n", 0xabcf012);
- ft_printf("percent: %%\n");
- ft_printf("multiple stuff: %d %u %d %x %d\n", 1, -2, 3, 0xa, 5);
-
- ft_printf("precision |%.9d|\n", 43);
- printf("precision |%.9d|\n", 43);
- ft_printf("string precision |%.9s|\n", "jesuisbonjourbonjour");
- printf("string precision |%.9s|\n", "jesuisbonjourbonjour");
- ft_printf("min width |%9d|\n", 43);
- printf("min width |%9d|\n", 43);
- ft_printf("zero padding |%09d|\n", 43);
- printf("zero padding |%09d|\n", 43);
- ft_printf("left adjusted |%-9d|\n", 43);
- printf("left adjusted |%-9d|\n", 43);
- ft_printf("string padding |%9s|\n", "bon");
- printf("string padding |%9s|\n", "bon");
-
- ft_printf("width wildcard |%*d|\n", 5, 43);
- printf("width wildcard |%*d|\n", 5, 43);
- ft_printf("precision wildcard |%.*d|\n", 5, 43);
- printf("precision wildcard |%.*d|\n", 5, 43);
- ft_printf("precision/width wildcard |%*.*d|\n", 5, 3, 43);
- printf("precision/width wildcard |%*.*d|\n", 5, 3, 43);
- ft_printf("left adjusted |%*d|\n", -5, 43);
- printf("left adjusted |%*d|\n", -5, 43);
+ /* int test = 42; */
+ /* ft_printf("bonjour\n"); */
+ /* ft_printf("char: %c\n", 'r'); */
+ /* ft_printf("string: %s\n", "bonjour"); */
+ /* ft_printf("pointer: %p\n", &test); */
+ /* ft_printf("int: %d or %i\n", 45, 54); */
+ /* ft_printf("uint: %u\n", 1 << 31); */
+ /* ft_printf("hex lower: %x\n", 0xabcf012); */
+ /* ft_printf("hex upper: %X\n", 0xabcf012); */
+ /* ft_printf("percent: %%\n"); */
+ /* ft_printf("multiple stuff: %d %u %d %x %d\n", 1, -2, 3, 0xa, 5); */
+ /* */
+ /* ft_printf("precision |%.9d|\n", 43); */
+ /* printf("precision |%.9d|\n", 43); */
+ /* ft_printf("string precision |%.9s|\n", "jesuisbonjourbonjour"); */
+ /* printf("string precision |%.9s|\n", "jesuisbonjourbonjour"); */
+ /* ft_printf("min width |%9d|\n", 43); */
+ /* printf("min width |%9d|\n", 43); */
+ /* ft_printf("zero padding |%09d|\n", 43); */
+ /* printf("zero padding |%09d|\n", 43); */
+ /* ft_printf("left adjusted |%-9d|\n", 43); */
+ /* printf("left adjusted |%-9d|\n", 43); */
+ /* ft_printf("string padding |%9s|\n", "bon"); */
+ /* printf("string padding |%9s|\n", "bon"); */
+ /* */
+ /* ft_printf("width wildcard |%*d|\n", 5, 43); */
+ /* printf("width wildcard |%*d|\n", 5, 43); */
+ /* ft_printf("precision wildcard |%.*d|\n", 5, 43); */
+ /* printf("precision wildcard |%.*d|\n", 5, 43); */
+ /* ft_printf("precision/width wildcard |%*.*d|\n", 5, 3, 43); */
+ /* printf("precision/width wildcard |%*.*d|\n", 5, 3, 43); */
+ /* ft_printf("left adjusted |%*d|\n", -5, 43); */
+ /* printf("left adjusted |%*d|\n", -5, 43); */
/* ft_printf("overwrite |%*3d|\n", 5, 43); */
/* printf("overwrite |%*3d|\n", 5, 43); */
/* ft_printf("overwrite neg |%*-1d|\n", 0, 43); */
/* printf("overwrite neg |%*-1d|\n", 0, 43); */
- ft_printf("pointer field width |%15p|\n", &test);
- printf("pointer field width |%15p|\n", &test);
+ /* ft_printf("pointer field width |%15p|\n", &test); */
+ /* printf("pointer field width |%15p|\n", &test); */
- ft_printf("bonjour%n", &test);
- printf("%d\n", test);
+ /* ft_printf("bonjour%n", &test); */
+ /* printf("%d\n", test); */
+ ft_printf("%.0p, %.p", 0, 0);
/* ft_printf("%f\n", 0.14159); */
/* printf("%f\n", 0.14159); */
diff --git a/test b/test
deleted file mode 100755
index 473cbb5..0000000
--- a/test
+++ /dev/null
Binary files differ