From 15ca9cfe3f79ff8a8622e7c20b5dacbda09c85c0 Mon Sep 17 00:00:00 2001 From: David GAILLETON Date: Fri, 9 Jan 2026 14:57:42 +0100 Subject: [PATCH 1/3] FIX: exit if str is null --- secure_write.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/secure_write.c b/secure_write.c index cc75fcc..ddf01e1 100644 --- a/secure_write.c +++ b/secure_write.c @@ -6,7 +6,7 @@ /* By: dgaillet +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2026/01/08 14:30:38 by dgaillet #+# #+# */ -/* Updated: 2026/01/09 12:05:56 by dgaillet ### ########lyon.fr */ +/* Updated: 2026/01/09 14:55:16 by dgaillet ### ########lyon.fr */ /* */ /* ************************************************************************** */ @@ -17,6 +17,6 @@ void secure_write(int fd, char *str, int len) { if (len < 0) return ; - if (write(fd, str, len) < 0) + if (!str || write(fd, str, len) < 0) exit (EXIT_FAILURE); } From 52220b5b49824109aff8ad84f509a95f937c3c00 Mon Sep 17 00:00:00 2001 From: David GAILLETON Date: Wed, 14 Jan 2026 11:15:31 +0100 Subject: [PATCH 2/3] Add index in t_stack + indexer function to add it --- .clang-format | 31 +++++++++++++++++++++++ Makefile | 2 +- checker_linux | Bin 0 -> 38192 bytes includes/parsing.h | 1 + includes/push_swap.h | 1 + main.c | 2 +- parsing/indexer.c | 54 ++++++++++++++++++++++++++++++++++++++++ stack_utils/stack_add.c | 1 + test_one.c | 1 + 9 files changed, 91 insertions(+), 2 deletions(-) create mode 100644 .clang-format create mode 100755 checker_linux create mode 100644 parsing/indexer.c diff --git a/.clang-format b/.clang-format new file mode 100644 index 0000000..b344245 --- /dev/null +++ b/.clang-format @@ -0,0 +1,31 @@ +Language: C + +AlignConsecutiveDeclarations: false +AlignConsecutiveMacros: false +AlignEscapedNewlinesLeft: true +AllowAllParametersOfDeclarationOnNextLine: false +AllowShortBlocksOnASingleLine: false +AllowShortFunctionsOnASingleLine: None +AlwaysBreakAfterReturnType: None +AlwaysBreakBeforeMultilineStrings: false +BinPackArguments: true +BinPackParameters: true +BreakBeforeBraces: Allman +BreakBeforeTernaryOperators: false +ColumnLimit: 80 +IndentWidth: 4 +KeepEmptyLinesAtTheStartOfBlocks: false +MaxEmptyLinesToKeep: 1 +PointerAlignment: Right +PenaltyBreakBeforeFirstCallParameter: 1 +PenaltyBreakString: 1 +PenaltyExcessCharacter: 0 +SpaceAfterCStyleCast: true +SpaceBeforeAssignmentOperators: true +SpaceBeforeParens: ControlStatements +SpaceInEmptyParentheses: false +SpacesInCStyleCastParentheses: false +SpacesInParentheses: false +SpacesInSquareBrackets: false +TabWidth: 4 +UseTab: Always diff --git a/Makefile b/Makefile index 4929b90..415f9f6 100644 --- a/Makefile +++ b/Makefile @@ -33,7 +33,7 @@ INSERTION = insertion.c FLAGS_FILES = algorithms_sort.c flag.c bench.c PARSING = ft_atoi.c parsing.c ft_strncmp.c ft_split.c ft_strlen.c ft_substr.c checker.c ft_itoa.c ft_isdigit.c \ - ft_strjoin.c ft_strlcat.c ft_strlcpy.c parsing_2.c disorder.c + ft_strjoin.c ft_strlcat.c ft_strlcpy.c parsing_2.c disorder.c indexer.c CHECKER_FILES = check_error.c verif_flag.c verif_is_digit.c verif_overflow.c verif_double.c diff --git a/checker_linux b/checker_linux new file mode 100755 index 0000000000000000000000000000000000000000..002d5930236c65f1a695bf2fe08489bec0c49745 GIT binary patch literal 38192 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 Z+eg>0QN!_&s{El1isOi86qsE8{{pOBm#zQ+ literal 0 HcmV?d00001 diff --git a/includes/parsing.h b/includes/parsing.h index 9beb240..8501ce0 100644 --- a/includes/parsing.h +++ b/includes/parsing.h @@ -34,5 +34,6 @@ int ft_strlcat(char *dst, const char *src, int size); char *join_all(int argc, char **argv); char **split_all(char *tab); float compute_disorder(char **strs, int pos); +void indexer(t_stacks *stacks); #endif diff --git a/includes/push_swap.h b/includes/push_swap.h index 0631636..5ef3312 100644 --- a/includes/push_swap.h +++ b/includes/push_swap.h @@ -16,6 +16,7 @@ typedef struct s_stack { int value; + long long index; struct s_stack *next; struct s_stack *previous; } t_stack; diff --git a/main.c b/main.c index fbbec01..b4e75b5 100644 --- a/main.c +++ b/main.c @@ -32,7 +32,7 @@ int main(int argc, char **argv) if (check_error(tab, mod)) test1(tab, len, mod); else - write(2, "Error\n", 7); + write(2, "Error\n", 6); free_tab(tab); return (0); } diff --git a/parsing/indexer.c b/parsing/indexer.c new file mode 100644 index 0000000..bdcc097 --- /dev/null +++ b/parsing/indexer.c @@ -0,0 +1,54 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* indexer.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: dgaillet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2026/01/14 10:14:06 by dgaillet #+# #+# */ +/* Updated: 2026/01/14 10:14:08 by dgaillet ### ########lyon.fr */ +/* */ +/* ************************************************************************** */ + +#include "push_swap.h" + +static t_stack *first_without_index(t_stack *stack) +{ + t_stack *first; + + if (stack->index < 0) + return (stack); + first = stack; + stack = stack->next; + while (stack != first) + { + if (stack->index < 0) + return (stack); + stack = stack->next; + } + return ((void *) 0); +} + +void indexer(t_stacks *stacks) +{ + int i; + int len; + t_stack *lower; + t_stack *temp; + + i = 0; + len = stack_a_len(stacks); + while (i < len) + { + lower = first_without_index(stacks->a); + temp = lower->next; + while (temp != stacks->a) + { + if (lower->value > temp->value && temp->index < 0) + lower = temp; + temp = temp->next; + } + lower->index = i; + i++; + } +} diff --git a/stack_utils/stack_add.c b/stack_utils/stack_add.c index 5effe0f..18006f3 100644 --- a/stack_utils/stack_add.c +++ b/stack_utils/stack_add.c @@ -21,6 +21,7 @@ t_stack *new_stack(int value) if (!new) return (NULL); new->value = value; + new->index = -1; new->next = NULL; new->previous = NULL; return (new); diff --git a/test_one.c b/test_one.c index d909127..885422b 100644 --- a/test_one.c +++ b/test_one.c @@ -23,6 +23,7 @@ int test1(char **tab, int len, int mod) if (mod == -1) return (0); stacks = init_stacks(len, tab, mod); + indexer(stacks); if (!stacks) return (0); if (check_order(stacks->a)) From 60011b1b11e9025752ad12e05886a0222fb49828 Mon Sep 17 00:00:00 2001 From: David GAILLETON Date: Wed, 14 Jan 2026 11:42:10 +0100 Subject: [PATCH 3/3] Fix bench valgrind error (Write size) --- algorithms/radix/radix.c | 12 ++++++------ flags/bench.c | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/algorithms/radix/radix.c b/algorithms/radix/radix.c index 31e8a82..249c2d5 100644 --- a/algorithms/radix/radix.c +++ b/algorithms/radix/radix.c @@ -12,17 +12,17 @@ #include "push_swap.h" -static int still_unit_value(t_stacks *stacks, int unit) +static int still_unit_index(t_stacks *stacks, int unit) { t_stack *temp; temp = stacks->a; - if (!temp || temp->value >= unit) + if (!temp || temp->index >= unit) return (1); temp = temp->next; while (temp != stacks->a) { - if (temp->value >= unit) + if (temp->index >= unit) return (1); temp = temp->next; } @@ -43,9 +43,9 @@ static void push_by_number_to_b(t_stacks *stacks, int unit, int nb) temp = temp->next; } i = 0; - while (i < s_len && still_unit_value(stacks, unit)) + while (i < s_len && still_unit_index(stacks, unit)) { - if (stacks->a && (stacks->a->value % (unit * 10)) / unit == nb) + if (stacks->a && (stacks->a->index % (unit * 10)) / unit == nb) pb(stacks); else ra(stacks); @@ -58,7 +58,7 @@ static void rec_sort(t_stacks *stacks, int unit) int i; i = 0; - if (!still_unit_value(stacks, unit)) + if (!still_unit_index(stacks, unit)) return ; while (i <= 9) { diff --git a/flags/bench.c b/flags/bench.c index 31b5d2a..9c59efe 100644 --- a/flags/bench.c +++ b/flags/bench.c @@ -31,7 +31,7 @@ static void print_disorder(t_stacks *stacks) secure_write(2, ".", 1); if (ft_strlen(str) == 1) secure_write(2, "0", 1); - secure_write(2, &str[ft_strlen(str) - 2], 2); + secure_write(2, &str[ft_strlen(str) - 2], ft_strlen(str) - 2); secure_write(2, "%\n", 2); free(str); }