From c64cf9a5a4613ecf905147261c9a8e38b9bd969d Mon Sep 17 00:00:00 2001 From: Jack Halford Date: Thu, 10 Nov 2016 12:08:01 +0100 Subject: [PATCH] function to free char** for mem leaks --- fillit/fillit | Bin 29348 -> 29476 bytes fillit/includes/fillit.h | 4 +-- fillit/includes/libft.h | 5 +++- fillit/src/fillit/fillit_check_waste.c | 38 ++++++++++++++----------- fillit/src/fillit/fillit_fit_blob.c | 14 ++++----- fillit/src/fillit/fillit_parser.c | 2 +- fillit/src/fillit/fillit_solver.c | 2 +- fillit/src/fillit/lib_board.c | 2 +- fillit/src/fillit/lib_board2.c | 2 +- fillit/src/fillit/lib_ttmn.c | 2 +- fillit/src/fillit/main.c | 4 ++- fillit/src/libft/ft_lst_cfree.c | 20 +++++++++++++ fillit/src/libft/ft_sstrfree.c | 25 ++++++++++++++++ 13 files changed, 86 insertions(+), 34 deletions(-) create mode 100644 fillit/src/libft/ft_lst_cfree.c create mode 100644 fillit/src/libft/ft_sstrfree.c diff --git a/fillit/fillit b/fillit/fillit index 0884ee09522611847016aad2aaba8e71ccff46b5..ec7701439f2df3591cd6baa930d39c7a5e590313 100755 GIT binary patch delta 4796 zcmZ{n3vg3a8ppqTlQgM_>4QFawtzqZfhv?zplo>r0#dDyIwC3!$t?uaCgdTH-I_YF zLcCO?M_FK%>8|cBuCBxh!+@+<9&Q- z@B6;g@&e^JzV8yS@y}-JG7w zT1{nA4SUmcZ(dwMG}Ic4CkKzcF_D|~ML!nHGfU-c>EL1c4_Sz!w(GsyxK*{K?JBVo zc|*gELcdDWw`A;UD6Q6?Q)^S{C!mVjdLmb4Yx^jaBP~5-ZPUWHSCk=ByV{aTE9kXq z>*29S^BCdgYp0dv5HBXzjU3%Q>>P-wIQg?K&j&1|jxvU$qul zos1sYs@9&oaxHRIvbHUT`lgJQKoz-4)@MYFnS34emh<|ybCI+$3i&^6V7X8)9_qdN z@7nfdQ{|xfj%}*wWTl{TkO%U zc~RTT(b`yg`E)H}r#fZkra=wB=cj|JjppVt}O+*HCkJY;zN27 zSyj)~ixw2iwc<2;d-XjiEp9j6J)M11xIj9^DvPS~|27S+IBh+4wKikjKSfHf7|u2n zmFKin@zyKWYp;R@RjjLMWWPlqKEtNjRqXqs3hO~sp1twN?AA_c-bT|dR#n`V_f8=y zYO{xRu789ilrA>amDPi z0E}wOMa(yL;K6jwAf8$1lI9=%m)dffuZZ;6L5Zg;x~2R8j@7`GX=i!3WykXj_h^#UCZcodA;KI(lG;N`TXwYARU$6&F&x_mz`eU zIyxyg(rMY@a?wTEuh0(&6Q2=Ah}M}r7(R5e+vA}NFe>ydZ={+Ve+H474WrNFa4NLH z(Bwt$HW|>@IWT4B!W3+3UPjvuUfP~b@{33=X%Tk(M9(p~idAXkwSy(1?C<}S7l$JHRXgiAWmAsbD?|_qT9$=Mb-_Kn=;8YVB z6+VWdqnTG|<_n%Sn_YC&tgH@E%Ipqee9oI!dEL!)$?T!4Wlg{OPLf@Kn<{T4KE*n$R*T8tEL zmB>h`r!^VDStKKcGnO@U7RFc`S0{D(Ec?M_z4h5_MB0=c!dA{^xk_nvJUis`A>Z9> zx-w+miR@+c_iQ6|ZsnnZ^m%r`>!BN1;12%^Oy{L+ta`czkM0g0yGN5LNc=J*Q&OiK zW3MPBd989rj!AV5bv1Q0Nx7~Qm)H-L5mE!Ypj3z7!iWAgR7vLPm+toj$H(aWk>G~$ zI-l&b3;tAa%%>?;8wx$NxJ_g!8zqR^X*Ni%1QV`}oc)4Rf?EWaR_b!R?iOJWJ>B9HB@FMXg}mF0=|u z1ee$7tn~Q{UfsvDb$g58*c_dsf^j9$;=L@mZmz~*>JSRwJl)}K!DQ2Uui%Vb=fi?K z7wUYxj~D5DMsUqyoi7M(6?{oBjpBC9zl?*JuYvdoy}|&&rJ4iLFwVCSHHdR_l;DR2 zPZIp7;7U=yQ#3eVaE*w!7>wrlY!Ka!=kcE^z^iZKHSDyfB)s7!ZTn5kZsKh>F)k_O z#s$n(#E^;s4F?t62&0fBa->PE<9Gld|+%TViSRI>{{V!HJK(vV4nn6<_A@ PdVTDp)u-`)hyVTq4I6aS delta 4629 zcmZXX4RBLc7RS$fNtzVIl$O#$5n33ed`ZEU52aY3!2m|$3XB722~FBY(ln%rAY)B5 z!ZtqZ#=Wl6mBspr=qPpKvZ%Wlpju#^CC(yNENf&~Nd|Y!u8RdhyZ@Vavx{tI-g)AOrs*+kF8QNkz$cNH+Rt~}4BRJl^RTW)Iqph3E2>e0_w zP**M`*dE=A{D^~S2Wm~mlZU6gA$pf}`*kcmTrbtI_eYN{S#2N+o35nZL^sWfDQQ;7 z95(f#*vBU4-(bB@*!|qzp<7!`q*xNhy_STMckqln`IE5aY_I9WAbyJJL?|YOO(%rI zyd%brVpM~^bD%9@u0N)%I>GV_W(6KXM(<8Rf6Pi-TJa~KPnPFGhXFxv;)*HWIdDm_ zoXvy}wVfqn#~AM3QFZxNwN|nZF?vl`przCs5c_#u#S#yjJ`Nx0R4gA4Tnb&3jN9x` z^JdJ7KdG!bi@wzc5WiNjoJekiEp(BLk6niXg7K+J)j=qxv!SFm40(0i!ED?2Ue$I5 zuY-qD@t+0<(Ze-auQ~AgdCSSOIXu51R}|9~bEv20-owl=qAXAwHucwrEq#imKWvF9 zmcCF*3R`*@}Ff zGGav(f4j2kiRAXc5HSl__LN$OmBhQyTchREam@fe4xj&V0Yv30J?Q77ZvyGR3*(j_S8ix}!t)#yqxS z&f~vU)UvKKiETxSHDy3v^DLXf^BJVWUcT}Cqyb5>EWs`~~41FEM*M;td zxolNYm2o_HVf&GV!I)Irt{cHRi?-#vN1|e88)I!K{=VdNR#EK8Yn%f$+EAp)0#Bi=`1PReXc|!)#_4<&b7D_o%6IXcl{J)RJLSt9bLP;)=gNxtGO86`JqHK=tZ& zL$5&za}!UlF2vfZw+dlWC60#A;Bv!e5XG9BMo#g>n*kd;c- zHo8+E70-ONxlR+swd1ON-kjE-Y`YpT)|4lPL`7s*pjgiONQu& zV^_-Zrs=GttVCWpojo$WAiBJ)Uz77S4!R_<=@ZwE{}u0Ghi)R)g<=RDl*5*O;7E>^ z{#y;kC)TppCyvR@!TARL`N{0~#PUfng$@qF6{lE=WmaPK+dSsZfx$s>+FYAc=wFI$a}}KbBpFg*Hmnk z-J0H*96)y!=2e(Ff{+_hY9XN-ks1R~Ab%+5XCfc6Qg*a{oiH$!#^l(|K@X@JUS{`R@EmJ6zKmKD$V`>R>ZEGGq0o79N59ngTWyUFifU}W7AO5l55G%Tk`1w?QbMEYjsvez(lNP#j>|T?ozBQ!2YrKn z#OEVIS2d5dAb>bdmy1rr=%913MsDNQ8i?Rx7(Fgqy@P&~n_JMQM>Xi-VwfT(n0(Fd zI(k~uLXYH<{D95nwA(OBdo*50tHVcc!8g8y$65{%<08RD+``3OsNYI|)dYMkHu{~G zG&V|U?9N7XoN3iOc4$d<(f69xdZ&|~1i1ap^qAJuWTP+!w(A#&6TF)T<07&WBEd!1 zDjaJ(;ZL-7hl@^X9UQ*aI(-f=o!2(oJe1bD9h>Qbw$&Nf>YyJGEw~0XV{4=qw}Zao z)3z2ITnCZnqWfMh?t_S|C(_wmu9kZ0($&)|I^ITHml>W9G>*0+Y zB-td@HP~r8iV-KT<;?Ii;O_f*fQ=b`mAksYF?WXdfrI#}4Xvk3Id*ze@7Uz0!%Ov< zVL76|zs2dMlX@3@q30v?FTI_aNrF9@Ub1hnxNZb$Tn*>4zW^ZIY8NLlwkA z)YMbNfX!s!nI1D>P59^q0~*+EKm%_YwA3AxNK1)FGBSh{Lq-k<44bJ3#>h6Vj;nHe z35Rq$d^8>xR#gfa(6*2qZpFB|U5|EaaL>StUJ#s~s`Beu`!tn*FPQH@?te&d z_Y#$l3y$Be@)ucui^{32|DCit6W{_@;Ec86#?1o`!7bx@+`v78#|qvdc!uDef@=hK z30}!2H%t3bqQy+EVL} zSM86h9H6uauv0k1#rVFOtswrL>=PWscba$Tu;6aoxjBC!xD~Qt6-1db({kb-9phQ z94cn06}*D;DpY=0ut%^WI4$^D!9iR}P^1?H(=3(wzbBp`zF!&pev|{5ImfpQWjZVz ztb&gV&Z|`Irv#_*Y3KfDv-V<@zZYDC`w_S6@M-4pN%$8EUN7R6$rMl*g-}!ohq&PR zf-7(-<8hV?jtE|z4LDo1+XdI)3d#Lj1P2AT3C=4~?d>w=pZCxz6ihh8MTK30t+>AO zfO`Zd1ivG=VxDUMKyX^{v21OzT9uy?Or{J6XqQl=&8ov5!Lg+(zmw%^;Clp*5WG(C7|s~$m}qdS;Dl&!CKzTu8=2qYYk2k5 zTnm?VS1Z8wYuI%Sd#~XwEae(E%#NB3cpC9Eu}#edWhm4*Abw^6JMr9)XJa(nJVlBg RbZ?TPw|TBeY?=4Oe*ol5MB@Me diff --git a/fillit/includes/fillit.h b/fillit/includes/fillit.h index 9135afe4..9d418d84 100644 --- a/fillit/includes/fillit.h +++ b/fillit/includes/fillit.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/03 17:38:16 by jhalford #+# #+# */ -/* Updated: 2016/11/04 14:07:38 by jhalford ### ########.fr */ +/* Updated: 2016/11/08 16:51:11 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -47,7 +47,7 @@ int ft_solved(char **board); int ft_check_waste(char **board, t_list *lttmn, int space, int size); int ft_fit_blob( - char **board, t_list *lttmn, int space, int size, int blob_size, int i); + char **board, t_list *lttmn, int space, int size); int ft_floodfill_recursive(char **board, int size, int i, char c); int ft_floodfill_stack(char **board, int size, int i, char c); diff --git a/fillit/includes/libft.h b/fillit/includes/libft.h index 10ea2935..ab6897eb 100644 --- a/fillit/includes/libft.h +++ b/fillit/includes/libft.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/03 15:00:29 by jhalford #+# #+# */ -/* Updated: 2016/11/04 13:35:02 by jhalford ### ########.fr */ +/* Updated: 2016/11/08 17:23:41 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -96,5 +96,8 @@ t_list *ft_lstmap(t_list *lst, t_list *(*f)(t_list *elem)); void ft_lsteadd(t_list **alst, t_list *new); int ft_lstsize(t_list *lst); +void ft_lst_cfree(void *ptr, size_t size); int get_next_line(int const fd, char **line); + +void ft_sstrfree(char **sstr); #endif diff --git a/fillit/src/fillit/fillit_check_waste.c b/fillit/src/fillit/fillit_check_waste.c index be5ef640..c2ba19cd 100644 --- a/fillit/src/fillit/fillit_check_waste.c +++ b/fillit/src/fillit/fillit_check_waste.c @@ -6,24 +6,17 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/04 13:24:35 by jhalford #+# #+# */ -/* Updated: 2016/11/04 13:30:16 by jhalford ### ########.fr */ +/* Updated: 2016/11/08 17:27:04 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ #include "fillit.h" -int ft_check_waste(char **board, t_list *lttmn, int space, int size) +static int ft_waste_loop(char **board, t_list *lttmn, int space, int size) { - t_ttmn *ttmn; - int i; int blob_size; + int i; - if (!lttmn) - return (ft_solved(board)); - ttmn = (t_ttmn *)lttmn->content; - if (ttmn->placed) - return (ft_solver(board, lttmn->next, space, size)); - space = size * size - 4 * g_ttmn; i = -1; while (++i < size * size) { @@ -33,22 +26,33 @@ int ft_check_waste(char **board, t_list *lttmn, int space, int size) blob_size = ft_floodfill_recursive(board, size, i, '*'); space -= blob_size % 4; if (space < 0) - { - ft_board_remove(board, "^*"); return (0); - } if (blob_size / 4 == 1) { - if (ft_fit_blob(board, lttmn, space, size, blob_size, i)) + if (ft_fit_blob(board, lttmn, space, size)) return (1); space -= 4; if (space < 0) - { - ft_board_remove(board, "^*"); return (0); - } } } + return (2); +} + +int ft_check_waste(char **board, t_list *lttmn, int space, int size) +{ + int loop_ret; + + if (!lttmn) + return (ft_solved(board)); + if (((t_ttmn*)lttmn->content)->placed) + return (ft_solver(board, lttmn->next, space, size)); + if ((loop_ret = ft_waste_loop(board, lttmn, space, size)) < 2) + { + if (loop_ret == 0) + ft_board_remove(board, "^*"); + return (loop_ret); + } ft_board_remove(board, "^*"); return (ft_solver(board, lttmn, space, size)); } diff --git a/fillit/src/fillit/fillit_fit_blob.c b/fillit/src/fillit/fillit_fit_blob.c index 62001b42..972e4413 100644 --- a/fillit/src/fillit/fillit_fit_blob.c +++ b/fillit/src/fillit/fillit_fit_blob.c @@ -6,27 +6,27 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/03 17:39:49 by jhalford #+# #+# */ -/* Updated: 2016/11/03 17:42:03 by jhalford ### ########.fr */ +/* Updated: 2016/11/08 16:59:50 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ #include "fillit.h" int ft_fit_blob( - char **board, t_list *lttmn, int space, int size, int blob_size, int y) + char **board, + t_list *lttmn, + int space, + int size) { t_ttmn *ttmn; t_list *list; int i; - int n; - n = blob_size; - i = y - 1; + i = -1; while (++i < size * size) { if (board[i / size][i % size] == '*') { - n--; list = lttmn; while (list) { @@ -41,8 +41,6 @@ int ft_fit_blob( ttmn->placed = 0; } } - if (n < 4) - return (0); } return (0); } diff --git a/fillit/src/fillit/fillit_parser.c b/fillit/src/fillit/fillit_parser.c index 2ec12a0d..a39693dc 100644 --- a/fillit/src/fillit/fillit_parser.c +++ b/fillit/src/fillit/fillit_parser.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/03 17:29:51 by jhalford #+# #+# */ -/* Updated: 2016/11/04 13:48:55 by jhalford ### ########.fr */ +/* Updated: 2016/11/07 12:16:01 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/fillit/src/fillit/fillit_solver.c b/fillit/src/fillit/fillit_solver.c index dc386230..a0d6388f 100644 --- a/fillit/src/fillit/fillit_solver.c +++ b/fillit/src/fillit/fillit_solver.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/03 17:36:27 by jhalford #+# #+# */ -/* Updated: 2016/11/04 13:49:41 by jhalford ### ########.fr */ +/* Updated: 2016/11/08 17:26:58 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/fillit/src/fillit/lib_board.c b/fillit/src/fillit/lib_board.c index 9732d4ac..5af72e04 100644 --- a/fillit/src/fillit/lib_board.c +++ b/fillit/src/fillit/lib_board.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/03 17:34:39 by jhalford #+# #+# */ -/* Updated: 2016/11/04 13:25:08 by jhalford ### ########.fr */ +/* Updated: 2016/11/08 17:26:20 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/fillit/src/fillit/lib_board2.c b/fillit/src/fillit/lib_board2.c index 035fb0a2..17cd8188 100644 --- a/fillit/src/fillit/lib_board2.c +++ b/fillit/src/fillit/lib_board2.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/03 17:31:46 by jhalford #+# #+# */ -/* Updated: 2016/11/04 13:38:18 by jhalford ### ########.fr */ +/* Updated: 2016/11/08 16:49:44 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/fillit/src/fillit/lib_ttmn.c b/fillit/src/fillit/lib_ttmn.c index 13081f4c..191c8155 100644 --- a/fillit/src/fillit/lib_ttmn.c +++ b/fillit/src/fillit/lib_ttmn.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/03 17:32:01 by jhalford #+# #+# */ -/* Updated: 2016/11/03 17:34:16 by jhalford ### ########.fr */ +/* Updated: 2016/11/07 12:14:50 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/fillit/src/fillit/main.c b/fillit/src/fillit/main.c index cd590e93..f5e31db9 100644 --- a/fillit/src/fillit/main.c +++ b/fillit/src/fillit/main.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/03 17:31:13 by jhalford #+# #+# */ -/* Updated: 2016/11/04 13:48:23 by jhalford ### ########.fr */ +/* Updated: 2016/11/08 17:26:50 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -36,8 +36,10 @@ int main(int ac, char **av) board = ft_board_init(size); ft_lstiter(lttmn, &ft_ttmn_reset); ft_solver(board, lttmn, size * size - 4 * g_ttmn, size); + ft_sstrfree(board); size--; } + ft_lstdel(<tmn, &ft_lst_cfree); ft_board_print(g_sol); return (0); } diff --git a/fillit/src/libft/ft_lst_cfree.c b/fillit/src/libft/ft_lst_cfree.c new file mode 100644 index 00000000..33e6cb3b --- /dev/null +++ b/fillit/src/libft/ft_lst_cfree.c @@ -0,0 +1,20 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_lst_cfree.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: jhalford +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2016/11/04 11:09:10 by jhalford #+# #+# */ +/* Updated: 2016/11/08 17:23:34 by jhalford ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +void ft_lst_cfree(void *ptr, size_t size) +{ + (void)size; + if (ptr) + free(ptr); +} diff --git a/fillit/src/libft/ft_sstrfree.c b/fillit/src/libft/ft_sstrfree.c new file mode 100644 index 00000000..a39fd2c2 --- /dev/null +++ b/fillit/src/libft/ft_sstrfree.c @@ -0,0 +1,25 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_sstrfree.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: jhalford +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2016/11/08 17:01:24 by jhalford #+# #+# */ +/* Updated: 2016/11/08 17:09:26 by jhalford ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +void ft_sstrfree(char **sstr) +{ + int i; + + i = 0; + while (sstr[i]) + { + ft_strdel(sstr + i); + i++; + } +}