eina: avoid wrong implicit conversion from unsigned to unsigned long in Eina_Value...
authorCedric BAIL <cedric.bail@free.fr>
Thu, 17 May 2012 09:59:46 +0000 (09:59 +0000)
committerCedric BAIL <cedric.bail@free.fr>
Thu, 17 May 2012 09:59:46 +0000 (09:59 +0000)
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 <albin.tonnerre@gmail.com>

SVN revision: 71196

legacy/eina/ChangeLog
legacy/eina/NEWS
legacy/eina/src/tests/eina_test_value.c

index 02b031f..d0b627e 100644 (file)
 2012-05-17  Albin Tonnerre
 
        * Fix portability issue of Eina_Value on ARM and PPC.
+       * Fix portability issue of Eina_Value test on Itanium.
+
index 04dff63..5e65a19 100644 (file)
@@ -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
 
index d369208..68ef5ec 100644 (file)
@@ -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);