eina: avoid wrong implicit conversion from unsigned to unsigned long in Eina_Value...
authorcedric <cedric>
Thu, 17 May 2012 09:59:46 +0000 (09:59 +0000)
committercedric <cedric@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
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>

git-svn-id: http://svn.enlightenment.org/svn/e/trunk/eina@71196 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33

ChangeLog
NEWS
src/tests/eina_test_value.c

index 02b031f..d0b627e 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
 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/NEWS b/NEWS
index 04dff63..5e65a19 100644 (file)
--- a/NEWS
+++ b/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
 
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);