From 89ac616c3ad72943b2474a1d51bd76cc77b18a26 Mon Sep 17 00:00:00 2001 From: Ivan Maidanski Date: Thu, 19 Jan 2012 08:35:21 +0400 Subject: [PATCH] test_stack: check_list() code refactoring and 'marks' size optimization * tests/test_stack.c (marks): Set smaller size (according to the maximum index passed to check_list). * tests/test_stack.c (check_list): Store p->data to "i" local variable (in the loop body) replacing multiple occurrences of p->data. --- tests/test_stack.c | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/tests/test_stack.c b/tests/test_stack.c index 034fb27..31f7748 100644 --- a/tests/test_stack.c +++ b/tests/test_stack.c @@ -83,7 +83,7 @@ void print_list(void) printf("%d\n", p -> data); } -static char marks[MAX_NTHREADS * MAX_NTHREADS]; +static char marks[MAX_NTHREADS * (MAX_NTHREADS + 1) / 2 + 1]; void check_list(int n) { @@ -91,16 +91,19 @@ void check_list(int n) int i; for (i = 1; i <= n; ++i) marks[i] = 0; + for (p = (list_element *)AO_REAL_HEAD_PTR(the_list); p != 0; p = (list_element *)AO_REAL_NEXT_PTR(p -> next)) { - if (p -> data > n || p -> data <= 0) - fprintf(stderr, "Found erroneous list element %d\n", p -> data); - if (marks[p -> data] != 0) - fprintf(stderr, "Found duplicate list element %d\n", p -> data); - marks[p -> data] = 1; + i = p -> data; + if (i > n || i <= 0) + fprintf(stderr, "Found erroneous list element %d\n", i); + if (marks[i] != 0) + fprintf(stderr, "Found duplicate list element %d\n", i); + marks[i] = 1; } + for (i = 1; i <= n; ++i) if (marks[i] != 1) fprintf(stderr, "Missing list element %d\n", i); -- 2.7.4