Char is unsigned by default on ARM architecture. static_cast from double to unsigned char is undefined behaviour and complier overwritten any negative value with 0.
[Validation]
tests 100% pass rate
Change-Id: Iec39a3c17b18ec7aa4f020fe5de709d66fa426fd
Signed-off-by: Michal Bistyga <m.bistyga@samsung.com>
int value_size = value_array.size();
std::unique_ptr<char[]> value_data(new char[value_size]);
for (int i = 0; i < value_size; ++i) {
- value_data[i] = static_cast<char>(value_array[i].get<double>());
+ value_data[i] = (int) value_array[i].get<double>();
}
struct Data {
std::unique_ptr<char[]> data_ptr{new char[data_size]};
for (std::size_t i = 0; i < data_size; ++i) {
- data_ptr[i] = static_cast<char>(binary_data[i].get<double>());
+ data_ptr[i] = (int) binary_data[i].get<double>();
}
int ntv_ret = bt_hdp_send_data(channel, data_ptr.get(), data_size);
std::unique_ptr<char[]> data_ptr{new char[data_size]};
for (std::size_t i = 0; i < data_size; ++i) {
- data_ptr[i] = static_cast<char>(binary_data[i].get<double>());
+ data_ptr[i] = (int) binary_data[i].get<double>();
}
if (kBluetoothError == bt_socket_send_data(socket, data_ptr.get(), data_size)) {