From 85b83f3cc7c2cc617226a2d509e0e2b8be8963c6 Mon Sep 17 00:00:00 2001 From: Maoake Date: Tue, 23 Dec 2025 09:21:17 +0000 Subject: [PATCH] fixing the leak valgrind and conditionnal jump on some functions cause i forget to initialize the var to NULL i just need to remember this --- algorithms/medium_algo.c | 5 ----- algorithms/medium_utils/utils_medium.c | 3 +-- algorithms/medium_utils/utils_struct_tab.c | 20 +++++++---------- main.c | 13 ++++++----- parsing.c | 2 ++ parsing_2.c | 4 +++- push_swap | Bin 22000 -> 22000 bytes push_swap.h | 2 +- test_one.c | 24 ++++++++++----------- 9 files changed, 32 insertions(+), 41 deletions(-) diff --git a/algorithms/medium_algo.c b/algorithms/medium_algo.c index 99807a8..0c405e0 100644 --- a/algorithms/medium_algo.c +++ b/algorithms/medium_algo.c @@ -14,10 +14,5 @@ void bucket_algo(void) { - /*int range; - t_tab *preset; - - range = range_bucket(piles->a); - preset = get_tabs(piles->a, range);*/ return ; } diff --git a/algorithms/medium_utils/utils_medium.c b/algorithms/medium_utils/utils_medium.c index 1f715b7..0e09104 100644 --- a/algorithms/medium_utils/utils_medium.c +++ b/algorithms/medium_utils/utils_medium.c @@ -34,8 +34,7 @@ int get_next_lower(t_stack *first, int old_lower) int next_lower; tmp = first; - next_lower = 2147483646; - + next_lower = 2147483647; while (tmp->next != first) { if (old_lower < tmp->value && tmp->value <= next_lower) diff --git a/algorithms/medium_utils/utils_struct_tab.c b/algorithms/medium_utils/utils_struct_tab.c index 8096765..e9ec8ab 100644 --- a/algorithms/medium_utils/utils_struct_tab.c +++ b/algorithms/medium_utils/utils_struct_tab.c @@ -20,13 +20,12 @@ t_tab *allocate_tab(int range_max, int nb) tab = malloc(sizeof(t_tab)); if (!tab) return (NULL); + tab->next = NULL; tab->max_range = range_max; tab->nb_in = nb; return (tab); } -#include - t_tab *get_tabs(t_stack *first, int range) { t_tab *tmp; @@ -44,7 +43,7 @@ t_tab *get_tabs(t_stack *first, int range) { tmp->next = get_next_tab(first, tmp, range); if (!(tmp->next)) - return (free_tab(first_tab)); + return (free_tab(&first_tab)); tmp = tmp->next; scan_nb_in_tab += tmp->nb_in; } @@ -78,15 +77,12 @@ t_tab *get_next_tab(t_stack *first, t_tab *tab, int range) return (next_tab); } -t_tab *free_tab(t_tab *first) +t_tab *free_tab(t_tab **first) { - t_tab *tmp; - - while (first) - { - tmp = first->next; - free(first); - first = tmp; - } + if (!(*first)) + return (NULL); + if ((*first)->next) + free_tab(&(*first)->next); + free(*first); return (NULL); } diff --git a/main.c b/main.c index b5721c3..16a59a2 100644 --- a/main.c +++ b/main.c @@ -50,14 +50,14 @@ int verif_no_double(int *tab, int len, int value) int adding_number(int *tab, int len) { - int stock; + int stock; stock = tab[0]; while (!verif_no_double(tab, len, stock)) { stock = 0 + rand() % (250 - 0 + 1); } - return stock; + return (stock); } int *auto_shuffle(int len_tab) @@ -72,21 +72,20 @@ int *auto_shuffle(int len_tab) tab[0] = 0 + rand() % (250 - 0 + 1); while (i < len_tab) { - tab[i] = adding_number(tab, i); + tab[i] = adding_number(tab, i - 1); i++; } return (tab); } - int main(int argc, char **argv) { if (argc > 1) { - if (strcmp(argv[1], "-t1") == 0) - test1(argc, argv++); - else if (strcmp(argv[1], "-t2") == 0) + if (strcmp(argv[1], "-t2") == 0) test2(argv++); + else + test1(argc, argv); } return (0); } diff --git a/parsing.c b/parsing.c index abf65e6..786cfb3 100644 --- a/parsing.c +++ b/parsing.c @@ -45,6 +45,8 @@ t_stacks *init_big_stacks(int argc, char **argv) t_stack *a; stacks = malloc(sizeof(t_stacks)); + stacks->a = NULL; + stacks->b = NULL; if (!stacks) return (NULL); a = parsing(argc, argv); diff --git a/parsing_2.c b/parsing_2.c index 8ca0abe..1eeeeb0 100644 --- a/parsing_2.c +++ b/parsing_2.c @@ -17,7 +17,7 @@ void print_tabs(t_tab *preset) { t_tab *tab; - + tab = preset; while (tab) { @@ -59,6 +59,8 @@ t_stacks *init_big_stacks2(int *tab, int len) t_stack *a; stacks = malloc(sizeof(t_stacks)); + stacks->a = NULL; + stacks->b = NULL; if (!stacks) return (NULL); a = parsing2(tab, len); diff --git a/push_swap b/push_swap index 4d299d9c7cb188b110187eb82374d404568d4684..2a0c1e774ed3f73de9cf0da471ccda7fec259ce7 100755 GIT binary patch delta 3144 zcmaJ^4Nz3q6~1=?mnHsyEId|_WdQ*vHV6`-HKF`Hcx2KV5Jo$3!eG&un*K~n>SUr_ zDU#;R4i!Cg8q>stnIuie{5i`^W9mdOB!p(tsKdmzA#o+Et`W&nnPmN`x8Hs5?KazK zyEA*g`_B2!x#!;V-Q^KJ%)^KI>&ZN&GlLnQ&J0@0?{I8RHXk=rGyf{>t}62>hSXx~ zNZY*H;zW@~ZD*ZFe?Fc3oAR=qqQWG`E~ja}_OMUA2`)@m6a2Z($GGi) zot7&(^v4W^@1YMfTzo%W$|&YrC@pi@x}DdB&~z*&7aTYCYffv71JZhThuI_cH>Bfo zA<_qY>WrEGZ?rzM@*6L>7}MX?^fLw}^wBk>^QjSEO(N=kD&BdN{F&SNHOf&c_(f__ zTs%TMlmh+%?NgSyrz8Kj5;~$}^9xurkFF?1{1iE}JbV-F$#SPwS&PbZXiQ*?va^=) z#nQ!R>A9>zzM0<1D)v_3h-7V&w(2V(jEX1TZrAklTJKDartf~QOY?QI*+r`)v4ayQ_Snq`jc*CO5%9vi!ZHYm)=LHPo08oK-Q$IAz%9xvdC_G zVZH6v*Y;>8^{3zfPk@6KFtf*}?M49s7y~l@OX#^wBIn&$OY1l78yv=lWT4hJ((N*n zpjsoBC75p~S|rU^lPqc3rXSKVcrco)Dp4X(t<`KNvaxV^@w@A!yFys!IN+>~PrE9>m!gm*|jTnTJL5eJA8o=QaH=sCp?H zsh_~3L3)Df@~gc8w8;pbiUyZNgQ0=11wSp#v0#}>$_<4@Vroo<8V!rt+vo{YN|H2L zy-bfj&Q9fPqU$0DSgyBmi!_j0C{n0-X@$$G{4p4V!5L z)&aYLj{^sRuKqP=g98l{ZFcmlqd;mBJ zd;>TSObH{w0>k5v z#=H=_FzEq44Ll4yW~a>ZeAmFILKLAZtihftp%C8+d?VCSUd)^6(Q-FGO$RaFqNC;R zW))p~NfK)pr#^10U$j8&O|TtWXqUgZ#~Zpgp1xhZJhg$){JxfP421dK$p(d zDf|JtR#(b%Xk~qq%f3Rc!q`0~utCUTDO`{-1CDgQh12F2xAZc@H$F{RKX za}|{}D4sSekL6_7E$#l5wrQ)e$ag?;GSg2zrr``tfO~`H8WjE} zIaK#j~8UY}O)erL@LUeu!!t6+TVhYiz>%%TS}@ z2wShF+iA41*!xVn8D@wL(`txI7Sm@HZrn52*IV{Sb4`Ay39Qw!--eej`7!PlaFb=P zb{l3^Yy!LAvR^e1fgWs1b1f+}okqtoebC~3Li?MP<{HauNEO~b%bQ(bMj6_|^w*ZX zQr;1KqAMP-?0%YSD&=pHM^hXH)={sgTCLc%EzbyG-!y@JY(;FO9<7OArU|XomFqN} zw=7NtE{Hs*yZmX*$CLRHI@MB|5>-Ll3QB2hgy>pYOC7QIdeU1fQ^M9J!)5g6*0qab S{{mDYFC9rt_vdXmY5NxnDi4SN delta 2987 zcmZ{m4Nz3q702IQFbg!x00M89mHhzB#z`s&@}-Fdmbd$CBLpfPsj)U0QZ=2a<5a4o z;=-V{Z+1vWk4cq|on*#N+9c+~O(x*<15K3Lsb5W^I5CsOE_Ka6_X6yYJj{&OP^>^Y*>?t1SL1dozt?Oy&yOHJM8}Y+?G2H2ro5EoZl~J8Ja1B&o%; zHoK=xmnKO^O`qmA*(#nGKV&&{z1g+*UF(-0k!7+c^mdBb!affDG3zHLwt*g+TNZdY zC`IIba)0hl?nDksQMrGfDcBa_Q{}v@j70BORaHsplOhbdOQlQO{;sJ7*CbB9*Cs3D za^FOj(tSr(I^%uaci8q#SdPnm!)bC*ko)si&x2px)4@Bcx^uYGt||0Co+c}eZSi0m zOiw5mqIXgRAyzrtxcHv&dfhnpo^e~8hj$@0l$iT-X7ZaUQ=CV;^F(_kvNp)i6Z6PH zX!YY%dIUatFVDjsp;%r)Ny}|jl@%UpcUjot-2nVGJ=)-rM>hi0=!g{Ni9o!gC`lGC37mMoL`kJcUw1?Z*yR2>c9GX;B>Ih8s;V9G>UkKU+>pJ- zH&>)+tRg6dzt$@3Y%q&U`z?VR`FfJh=t;W#g{t;RVYEzmsTA3Ed{#$IePv{xH;NvS zD+A`o5X!sU5AQqO&j9>r71!0K(ls^RPA_S@naBQ+l;AbthuDZl!5k$Yi9W2GYw~xd zyCSrtAZ%j0LiWNo#>PUM9BUc78#?Fw5zBw(x)xaiJ&{QEgh=h~2ivt2!euSmRFNiv zZ69)p9z!2bv4ZVqnr-9(p-GTCKI5$xYu3zG;MAyxa+-(u7RB7QbR+hJK$arg526Tv zsWh?e58NZl5;3BnM|0pW@=AF?Xe%^nU`2xezQ)T8GD4D~478X;Lc&KYbM0i3*(; zwZeur6_2sd%K5Kl(6D*)o-zkpME0`!z~(2PdT@Tn0@v#K9cwa#*7_#DWL{R)GO!bT94z>!s%{2f z2KRyQgM;9)h^mf)FN~`JHG#>MaaFaV%q#w-sx@Hl6;)jYJ`HXKw?yFp{Pk5h0KfMc z9DtcIRZW0Rpfyzx_JB3u5V#7Q0=I&XPQV`Q00+Ut;3(*u48Q>7@Y4;%pp!929>D7XQ+Bz?&eDQ%4|7vXxs$y@ zn=qcI-Q~{Zg{af-xNd!B)-Oz6%Y9N`is?7^oB2D=g|7js^$X(K|C6+w~Ok6GYHm^;kbVbKP_(nXOcG&j+8;?J5T=BwMw!=xOxq zBQuq^+;i3e<=z;5zuIAXBSy~xpTuYYxE7-$)eo>d8mo3PFR>aYTM=^C?3zPoAFVNk zOF|jTUN zBf4|mQuYq9M$s1GC&SgGL*QlPnr2$mD7wRjA7fFtZLE&trN^%v+R*4>jCMo!IlC^a z(;+NGLAj@Tw=OtLC!u?uZZwMQc}ka@Ia)(waf6}xxto?qKIW%hX^ZW;Q#Wfh++8!2 z>L}Y+iYBP{iR@3*?(?JKFZsmue7yYl)j~&op1{Cd{Z4xxFkObf79PxABXF&YA#XP1 zD;>K2lRAV}Lw?Ju3$(7qbd@2u8PRzR{ndv2w4MZ7=g+nsDApJG|1H1P89G0v-F|WT zX=AlnUlev4tH+CUfz~*fK4-{tj6zNCxW|yMp&R~Ec8c7xn10u#+j^;9_Sou;yINf+ zd~8^hQ?Kl2C+MVHYHKvUneQ4pi_zmePhu#0`CroTeRQs+G-J98!X=c^>SF #include -int test1(int argc, char **argv) +int test1(int argc, char **argv) { t_stacks *stacks; @@ -32,18 +32,17 @@ int test1(int argc, char **argv) stack_clear_all(stacks->a, stacks->a); if (stacks->b) stack_clear_all(stacks->b, stacks->b); + free(stacks); return (0); } -int test2(char **argv){ - +int test2(char **argv) +{ int *tab; int len; t_tab *preset; t_stacks *piles; - int i; - i = 0; len = ft_atoi(argv[2]); if (len < 1) { @@ -51,16 +50,15 @@ int test2(char **argv){ return (0); } tab = auto_shuffle(len); - while (i < len) - { - printf("tab(%d) [%d]\n", i, tab[i]); - i++; - } piles = init_big_stacks2(tab, len); - printf("RANGE BUCKET %d\n", range_bucket(piles->a)); preset = get_tabs(piles->a, range_bucket(piles->a)); print_tabs(preset); free(tab); - free_tab(preset); + free_tab(&preset); + if (piles->a) + stack_clear_all(piles->a, piles->a); + if (piles->b) + stack_clear_all(piles->b, piles->b); + free(piles); return (0); -} \ No newline at end of file +}