unit-tests: Pass linked_list->invoke* varargs as uintptr_t
Passing integers of unspecified length may result in passing an integer shorter than uintptr_t. When reading them back, we might get more data than passed, resulting in a failure.
This commit is contained in:
@@ -246,10 +246,10 @@ struct invoke_t {
|
||||
|
||||
static void invoke(intptr_t item, void *a, void *b, void *c, void *d, int *sum)
|
||||
{
|
||||
ck_assert(a == (void*)1);
|
||||
ck_assert(b == (void*)2);
|
||||
ck_assert(c == (void*)3);
|
||||
ck_assert(d == (void*)4);
|
||||
ck_assert_int_eq((uintptr_t)a, 1);
|
||||
ck_assert_int_eq((uintptr_t)b, 2);
|
||||
ck_assert_int_eq((uintptr_t)c, 3);
|
||||
ck_assert_int_eq((uintptr_t)d, 4);
|
||||
*sum += item;
|
||||
}
|
||||
|
||||
@@ -267,7 +267,9 @@ START_TEST(test_invoke_function)
|
||||
list->insert_last(list, (void*)3);
|
||||
list->insert_last(list, (void*)4);
|
||||
list->insert_last(list, (void*)5);
|
||||
list->invoke_function(list, (linked_list_invoke_t)invoke, 1, 2, 3, 4, &sum);
|
||||
list->invoke_function(list, (linked_list_invoke_t)invoke,
|
||||
(uintptr_t)1, (uintptr_t)2,
|
||||
(uintptr_t)3, (uintptr_t)4, &sum);
|
||||
ck_assert_int_eq(sum, 15);
|
||||
}
|
||||
END_TEST
|
||||
@@ -287,7 +289,9 @@ START_TEST(test_invoke_offset)
|
||||
{
|
||||
list->insert_last(list, &items[i]);
|
||||
}
|
||||
list->invoke_offset(list, offsetof(invoke_t, invoke), 1, 2, 3, 4, &sum);
|
||||
list->invoke_offset(list, offsetof(invoke_t, invoke),
|
||||
(uintptr_t)1, (uintptr_t)2,
|
||||
(uintptr_t)3, (uintptr_t)4, &sum);
|
||||
ck_assert_int_eq(sum, 15);
|
||||
}
|
||||
END_TEST
|
||||
|
||||
Reference in New Issue
Block a user