From d1ff7007d9f325f623dadf5bfaf2cdd77a8b615e Mon Sep 17 00:00:00 2001 From: discomfitor Date: Mon, 11 Jun 2012 07:29:46 +0000 Subject: [PATCH] fix size of returned array in str_split, doc clarification incoming git-svn-id: http://svn.enlightenment.org/svn/e/trunk/eina@71930 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33 --- src/lib/eina_str.c | 10 +++------- src/tests/eina_test_str.c | 20 ++++++++++---------- 2 files changed, 13 insertions(+), 17 deletions(-) diff --git a/src/lib/eina_str.c b/src/lib/eina_str.c index 4ad77c4..2a54c00 100644 --- a/src/lib/eina_str.c +++ b/src/lib/eina_str.c @@ -162,7 +162,7 @@ eina_str_split_full_helper(const char *str, str_array[0] = s; str_array[1] = NULL; if (elements) - *elements = 2; + *elements = 1; return str_array; } @@ -186,7 +186,7 @@ eina_str_split_full_helper(const char *str, str_array[x] = s + x; str_array[x] = NULL; if (elements) - *elements = x + 1; + *elements = x; return str_array; } /* copy tokens and string */ @@ -283,11 +283,7 @@ eina_str_split_full_helper(const char *str, } str_array[tokens] = NULL; if (elements) - { - *elements = tokens; - if ((!max_tokens) || (tokens == (unsigned int)max_tokens)) - (*elements)++; - } + *elements = tokens; return str_array; } diff --git a/src/tests/eina_test_str.c b/src/tests/eina_test_str.c index b1bc4ff..7fefc26 100644 --- a/src/tests/eina_test_str.c +++ b/src/tests/eina_test_str.c @@ -96,7 +96,7 @@ START_TEST(str_split) result = eina_str_split_full("nomatch", "x", -1, &elements); fail_if(result == NULL); - fail_if(elements != 2); + fail_if(elements != 1); fail_if(strcmp(result[0], "nomatch") != 0); fail_if(result[1]); free(result[0]); @@ -104,7 +104,7 @@ START_TEST(str_split) result = eina_str_split_full("nomatch", "xyz", -1, &elements); fail_if(result == NULL); - fail_if(elements != 2); + fail_if(elements != 1); fail_if(strcmp(result[0], "nomatch") != 0); fail_if(result[1]); free(result[0]); @@ -112,8 +112,8 @@ START_TEST(str_split) result = eina_str_split_full("match:match:match", ":", -1, &elements); fail_if(result == NULL); - fail_if(elements != 4); - for (elements = 0; elements < 4 - 1; elements++) + fail_if(elements != 3); + for (elements = 0; elements < 3 - 1; elements++) fail_if(strcmp(result[elements], "match") != 0); fail_if(result[3]); free(result[0]); @@ -121,7 +121,7 @@ START_TEST(str_split) result = eina_str_split_full("a:b:c", ":", -1, &elements); fail_if(result == NULL); - fail_if(elements != 4); + fail_if(elements != 3); fail_if(strcmp(result[0], "a") != 0); fail_if(strcmp(result[1], "b") != 0); fail_if(strcmp(result[2], "c") != 0); @@ -131,7 +131,7 @@ START_TEST(str_split) result = eina_str_split_full("a:b:", ":", -1, &elements); fail_if(result == NULL); - fail_if(elements != 4); + fail_if(elements != 3); fail_if(strcmp(result[0], "a") != 0); fail_if(strcmp(result[1], "b") != 0); fail_if(strcmp(result[2], "") != 0); @@ -141,7 +141,7 @@ START_TEST(str_split) result = eina_str_split_full(":b:c", ":", -1, &elements); fail_if(result == NULL); - fail_if(elements != 4); + fail_if(elements != 3); fail_if(strcmp(result[0], "") != 0); fail_if(strcmp(result[1], "b") != 0); fail_if(strcmp(result[2], "c") != 0); @@ -151,7 +151,7 @@ START_TEST(str_split) result = eina_str_split_full(":", ":", -1, &elements); fail_if(result == NULL); - fail_if(elements != 3); + fail_if(elements != 2); fail_if(strcmp(result[0], "") != 0); fail_if(strcmp(result[1], "") != 0); fail_if(result[2]); @@ -160,7 +160,7 @@ START_TEST(str_split) result = eina_str_split_full("a", "!!!!!!!!!", -1, &elements); fail_if(result == NULL); - fail_if(elements != 2); + fail_if(elements != 1); fail_if(strcmp(result[0], "a") != 0); fail_if(result[1]); free(result[0]); @@ -168,7 +168,7 @@ START_TEST(str_split) result = eina_str_split_full("aaba", "ab", -1, &elements); fail_if(result == NULL); - fail_if(elements != 3); + fail_if(elements != 2); fail_if(strcmp(result[0], "a") != 0); fail_if(strcmp(result[1], "a") != 0); fail_if(result[2]); -- 2.7.4