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

Reply via email to