diff mbox

testsuite: fix test_array_sort pointers inderection

Message ID 1478638646-5933-1-git-send-email-yauheni.kaliuta@redhat.com (mailing list archive)
State Accepted
Headers show

Commit Message

Yauheni Kaliuta Nov. 8, 2016, 8:57 p.m. UTC
The array elements in the tests are strings, what means "char *"
in С. The comparation funtion takes pointers to the elements, so
the arguments become "char **". It means, that strcmp() cannot be
used directrly.

The patch creates a wrapper on strcmp() which perfoms
dereferencing of the "char **" to supply the actual strings to
strcmp(), and uses the wrapper as a comparation function for the
qsort() call.

Signed-off-by: Yauheni Kaliuta <yauheni.kaliuta@redhat.com>
---
 testsuite/test-array.c | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

Comments

Lucas De Marchi Nov. 9, 2016, 12:24 a.m. UTC | #1
On Tue, Nov 8, 2016 at 6:57 PM, Yauheni Kaliuta
<yauheni.kaliuta@redhat.com> wrote:
> The array elements in the tests are strings, what means "char *"
> in С. The comparation funtion takes pointers to the elements, so
> the arguments become "char **". It means, that strcmp() cannot be
> used directrly.
>
> The patch creates a wrapper on strcmp() which perfoms
> dereferencing of the "char **" to supply the actual strings to
> strcmp(), and uses the wrapper as a comparation function for the
> qsort() call.
>
> Signed-off-by: Yauheni Kaliuta <yauheni.kaliuta@redhat.com>
> ---

Applied, thanks.


Lucas De Marchi
--
To unsubscribe from this list: send the line "unsubscribe linux-modules" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/testsuite/test-array.c b/testsuite/test-array.c
index 3c72a8a109c5..ef1e1e9922c9 100644
--- a/testsuite/test-array.c
+++ b/testsuite/test-array.c
@@ -90,6 +90,13 @@  static int test_array_append_unique(const struct test *t)
 DEFINE_TEST(test_array_append_unique,
 		.description = "test array append unique");
 
+static int strptrcmp(const void *pa, const void *pb) {
+	const char *a = *(const char **)pa;
+	const char *b = *(const char **)pb;
+
+	return strcmp(a, b);
+}
+
 static int test_array_sort(const struct test *t)
 {
 	struct array array;
@@ -104,7 +111,7 @@  static int test_array_sort(const struct test *t)
 	array_append(&array, c2);
 	array_append(&array, c3);
 	array_append(&array, c1);
-	array_sort(&array, (int (*)(const void *a, const void *b)) strcmp);
+	array_sort(&array, strptrcmp);
 	assert_return(array.count == 6, EXIT_FAILURE);
 	assert_return(array.array[0] == c1, EXIT_FAILURE);
 	assert_return(array.array[1] == c1, EXIT_FAILURE);