Hello,
I'm writing test for eina_value_convert
Almost all are ok, but I tried to check overflow handling and see
strange results:
<code>
START_TEST(eina_value_test_convert_short)
{
Eina_Value *value, conv;
short s;
const char *str;
eina_init();
value = eina_value_new(EINA_VALUE_TYPE_SHORT);
fail_unless(value != NULL);
// value too big and will be truncated
fail_unless(eina_value_set(value, 0x1e240)); // after this set
value will be truncated to 0xe240 because of line 385 in file:
eina_inline_value.x
//
short *tmem = (short *) mem;
fail_unless(eina_value_get(&value, &s)); // and this line then
produce error, but why?
fail_unless(eina_value_setup(&conv, EINA_VALUE_TYPE_STRING));
fail_unless(eina_value_convert(value, &conv));
fail_unless(eina_value_get(&conv, &str)); // in this line str == "-7616"
fail_unless(str != NULL);
......
</code>
Is it correct behaviour that value 0x1e240 is truncated to 0xe240 and
if this is true why eina_value_get(&value, &s) returns false?
Maybe need to insert addtional checks for overflow?
Vlad
------------------------------------------------------------------------------
Symantec Endpoint Protection 12 positioned as A LEADER in The Forrester
Wave(TM): Endpoint Security, Q1 2013 and "remains a good choice" in the
endpoint security space. For insight on selecting the right partner to
tackle endpoint security challenges, access the full report.
http://p.sf.net/sfu/symantec-dev2dev
_______________________________________________
enlightenment-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel