Hi Sebastian,
This patch seems to fix the issue.
diff --git a/src/pappsomspp/core/processing/cbor/mzcbor/binarydataarray.cpp
b/src/pappsomspp/core/processing/cbor/mzcbor/binarydataarray.cpp
index a6aa3ed..f2746f4 100644
--- a/src/pappsomspp/core/processing/cbor/mzcbor/binarydataarray.cpp
+++ b/src/pappsomspp/core/processing/cbor/mzcbor/binarydataarray.cpp
@@ -31,6 +31,7 @@
#include "pappsomspp/core/pappsoexception.h"
#include <qjsonarray.h>
#include <zlib.h>
+#include <QtEndian>
void
pappso::cbor::mzcbor::BinaryDataArray::fromCbor(CborStreamReader &reader)
@@ -491,26 +492,27 @@
pappso::cbor::mzcbor::BinaryDataArray::decodeVector(std::size_t estimated_length
std::size_t j = 0;
for(std::size_t i = 0; i < data_heap.size(); i += size_in_byte)
{
+ const unsigned char* src = data_heap.data() + i;
if(bits == 32)
{
if(isInt)
{
- double_list[j] = *(std::int32_t *)&data_heap[i];
+ double_list[j] = qFromLittleEndian<qint32>(src);
}
else
{
- double_list[j] = *(std::float_t *)&data_heap[i];
+ double_list[j] = qFromLittleEndian<float>(src);
}
}
else
{
if(isInt)
{
- double_list[j] = *(std::int64_t *)&data_heap[i];
+ double_list[j] = qFromLittleEndian<qint64>(src);
}
else
{
- double_list[j] = *(double *)&data_heap[i];
+ double_list[j] = qFromLittleEndian<double>(src);
}
}
// double_ptr++;
@@ -524,26 +526,28 @@
pappso::cbor::mzcbor::BinaryDataArray::decodeVector(std::size_t estimated_length
std::size_t j = 0;
for(std::size_t i = 0; i < (std::size_t)byteArray.size(); i +=
size_in_byte)
{
+ const unsigned char *src =
+ reinterpret_cast<const unsigned char*>(byteArray.constData()) + i;
if(bits == 32)
{
if(isInt)
{
- double_list[j] = *(std::int32_t *)&byteArray.constData()[i];
+ double_list[j] = qFromLittleEndian<qint32>(src);
}
else
{
- double_list[j] = *(std::float_t *)&byteArray.constData()[i];
+ double_list[j] = qFromLittleEndian<float>(src);
}
}
else
{
if(isInt)
{
- double_list[j] = *(std::int64_t *)&byteArray.constData()[i];
+ double_list[j] = qFromLittleEndian<qint64>(src);
}
else
{
- double_list[j] = *(double *)&byteArray.constData()[i];
+ double_list[j] = qFromLittleEndian<double>(src);
}
}
// double_ptr++;
Thanks,
Pranav