DBus bool type is a uint32_t not a uint8_t, just changing how read
and write, not chaging how it is stored in eina_value to save some
bytes of RAM.
This fix the stack overflow pointed out here: https://phab.enlightenment.org/T3089
@fix
Change-Id: Ib1dc0613613165d841342c3f0727080955e2f436
}
break;
}
- case 'b'://boolean
case 'y'://byte
{
unsigned char z;
}
break;
}
+ case 'b'://boolean
+ {
+ unsigned char z;
+ unsigned i;
+ for (i = 0; i < eina_value_array_count(value_array); i++)
+ {
+ eina_value_array_get(value_array, i, &z);
+ eldbus_message_iter_basic_append(array, type[1], (uint32_t)z);
+ }
+ break;
+ }
case 'n'://int16
{
int16_t z;
eldbus_message_iter_basic_append(iter, type, txt);
break;
}
- case 'b'://boolean
case 'y'://byte
{
unsigned char byte;
eldbus_message_iter_basic_append(iter, type, byte);
break;
}
+ case 'b'://boolean
+ {
+ unsigned char boolean;
+ eina_value_struct_get(value, desc->members[idx].name, &boolean);
+ eldbus_message_iter_basic_append(iter, type, (uint32_t)boolean);
+ break;
+ }
case 'n'://int16
{
int16_t i;
eina_value_array_append(value, txt);
break;
}
- case 'b'://boolean
case 'y'://byte
{
unsigned char byte;
eina_value_array_append(value, byte);
break;
}
+ case 'b'://boolean
+ {
+ uint32_t boolean;
+ while (eldbus_message_iter_get_and_next(iter, type, &boolean))
+ eina_value_array_append(value, (uint8_t)boolean);
+ break;
+ }
case 'n'://int16
{
int16_t i;
eina_value_set(v, txt);
break;
}
- case 'b'://boolean
case 'y'://byte
{
unsigned char byte;
eina_value_set(v, byte);
break;
}
+ case 'b'://boolean
+ {
+ uint32_t value;
+ v = eina_value_new(EINA_VALUE_TYPE_UCHAR);
+ eldbus_message_iter_basic_get(iter, &value);
+ eina_value_set(v, (uint8_t)value);
+ break;
+ }
case 'n'://int16
{
int16_t i;