From fa1569eb9b59fac0b1e44aa72a53790b8aab2dd4 Mon Sep 17 00:00:00 2001 From: Cedric BAIL Date: Thu, 17 May 2012 09:59:46 +0000 Subject: [PATCH] eina: avoid wrong implicit conversion from unsigned to unsigned long in Eina_Value tests There is no automatic promotion of unsigned to unsigned long when using va_arg, which means it is illegal to pass an 'unsigned' value and then use it as an unsigned long in eina_arg_vset. Doing so yields incorrect results on some architectures like itanium Patch by Albin 'Lutin' Tonnerre SVN revision: 71196 --- legacy/eina/ChangeLog | 2 ++ legacy/eina/NEWS | 2 ++ legacy/eina/src/tests/eina_test_value.c | 12 ++++++------ 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/legacy/eina/ChangeLog b/legacy/eina/ChangeLog index 02b031fd72..d0b627e541 100644 --- a/legacy/eina/ChangeLog +++ b/legacy/eina/ChangeLog @@ -278,3 +278,5 @@ 2012-05-17 Albin Tonnerre * Fix portability issue of Eina_Value on ARM and PPC. + * Fix portability issue of Eina_Value test on Itanium. + diff --git a/legacy/eina/NEWS b/legacy/eina/NEWS index 04dff6356f..5e65a196e4 100644 --- a/legacy/eina/NEWS +++ b/legacy/eina/NEWS @@ -12,6 +12,8 @@ Fixes: * Rounding issue with eina_f32p32_cos and eina_f32p32_sin when getting close to 1.0. * Portability issue with Eina_Value when char are not signed by default (case on ARM and PPC). + * Portability issue with Eina_Value test suite when unsigned where not promoted to + unsigned long (case on Itanium). Eina 1.2.0 diff --git a/legacy/eina/src/tests/eina_test_value.c b/legacy/eina/src/tests/eina_test_value.c index d3692081ad..68ef5ec0c6 100644 --- a/legacy/eina/src/tests/eina_test_value.c +++ b/legacy/eina/src/tests/eina_test_value.c @@ -99,9 +99,9 @@ START_TEST(eina_value_test_simple) eina_value_flush(value); fail_unless(eina_value_setup(value, EINA_VALUE_TYPE_ULONG)); - fail_unless(eina_value_set(value, 3000000001U)); + fail_unless(eina_value_set(value, 3000000001UL)); fail_unless(eina_value_get(value, &ul)); - fail_unless(ul == 3000000001U); + fail_unless(ul == 3000000001UL); eina_value_flush(value); fail_unless(eina_value_setup(value, EINA_VALUE_TYPE_UINT64)); @@ -540,10 +540,10 @@ START_TEST(eina_value_test_pvariant) eina_value_flush(value); fail_unless(eina_value_setup(value, EINA_VALUE_TYPE_ULONG)); - in_ul = 3000000001U; + in_ul = 3000000001UL; fail_unless(eina_value_pset(value, &in_ul)); fail_unless(eina_value_pget(value, &ul)); - fail_unless(ul == 3000000001U); + fail_unless(ul == 3000000001UL); eina_value_flush(value); fail_unless(eina_value_setup(value, EINA_VALUE_TYPE_UINT64)); @@ -713,10 +713,10 @@ START_TEST(eina_value_test_to_string) eina_value_flush(value); fail_unless(eina_value_setup(value, EINA_VALUE_TYPE_ULONG)); - in_ul = 3000000001U; + in_ul = 3000000001UL; fail_unless(eina_value_pset(value, &in_ul)); fail_unless(eina_value_pget(value, &ul)); - fail_unless(ul == 3000000001U); + fail_unless(ul == 3000000001UL); snprintf(buf, sizeof(buf), "%lu", in_ul); out = eina_value_to_string(value); fail_unless(out != NULL);