Please consider the attached patch to be included into the 0.26 branch:

1. Fix for an ARM compile error
2. Turns the linearstore build off by default in cmake

Thanks,
Kim van der Riet
Index: cpp/src/linearstore.cmake
===================================================================
--- cpp/src/linearstore.cmake	(revision 1545661)
+++ cpp/src/linearstore.cmake	(working copy)
@@ -46,7 +46,7 @@
 		            # allow linearstore to be built
 		            #
                     message(STATUS "BerkeleyDB for C++, libaio and uuid found, Linearstore support enabled")
-		            set (linearstore_default ON)
+		            #set (linearstore_default ON)
 		        else (HAVE_UUID AND HAVE_UUID_H)
                     if (NOT HAVE_UUID)
                         message(STATUS "Linearstore requires uuid which is absent.")
Index: cpp/src/qpid/linearstore/jrnl/deq_rec.cpp
===================================================================
--- cpp/src/qpid/linearstore/jrnl/deq_rec.cpp	(revision 1545661)
+++ cpp/src/qpid/linearstore/jrnl/deq_rec.cpp	(working copy)
@@ -280,9 +280,11 @@
         //_deq_hdr.hdr_copy(h);
         ::rec_hdr_copy(&_deq_hdr._rhdr, &h);
         rd_cnt = sizeof(rec_hdr_t);
-        _deq_hdr._deq_rid = *(uint64_t*)((char*)rptr + rd_cnt);
+        // = *(uint64_t*)((char*)rptr + rd_cnt);
+        std::memcpy((void*)&_deq_hdr._deq_rid, (char*)rptr + rd_cnt, sizeof(u_int64_t));
         rd_cnt += sizeof(uint64_t);
-        _deq_hdr._xidsize = *(std::size_t*)((char*)rptr + rd_cnt);
+        //_deq_hdr._xidsize = *(std::size_t*)((char*)rptr + rd_cnt);
+        std::memcpy((void*)&_deq_hdr._xidsize, (char*)rptr + rd_cnt, sizeof(std::size_t));
         rd_cnt = sizeof(deq_hdr_t);
         chk_hdr();
         if (_deq_hdr._xidsize)
Index: cpp/src/qpid/linearstore/jrnl/enq_rec.cpp
===================================================================
--- cpp/src/qpid/linearstore/jrnl/enq_rec.cpp	(revision 1545661)
+++ cpp/src/qpid/linearstore/jrnl/enq_rec.cpp	(working copy)
@@ -352,12 +352,14 @@
         //_enq_hdr.hdr_copy(h);
         ::rec_hdr_copy(&_enq_hdr._rhdr, &h);
         rd_cnt = sizeof(rec_hdr_t);
-        _enq_hdr._xidsize = *(std::size_t*)((char*)rptr + rd_cnt);
+        //_enq_hdr._xidsize = *(std::size_t*)((char*)rptr + rd_cnt);
+        std::memcpy((void*)&_enq_hdr._xidsize, (char*)rptr + rd_cnt, sizeof(std::size_t));
         rd_cnt += sizeof(std::size_t);
 #if defined(JRNL_32_BIT)
         rd_cnt += sizeof(uint32_t); // Filler 0
 #endif
-        _enq_hdr._dsize = *(std::size_t*)((char*)rptr + rd_cnt);
+        //_enq_hdr._dsize = *(std::size_t*)((char*)rptr + rd_cnt);
+        std::memcpy((void*)&_enq_hdr._dsize, (char*)rptr + rd_cnt, sizeof(std::size_t));
         rd_cnt = sizeof(enq_hdr_t);
         chk_hdr();
         if (_enq_hdr._xidsize + (::is_enq_external(&_enq_hdr) ? 0 : _enq_hdr._dsize))
Index: cpp/src/qpid/linearstore/jrnl/txn_rec.cpp
===================================================================
--- cpp/src/qpid/linearstore/jrnl/txn_rec.cpp	(revision 1545661)
+++ cpp/src/qpid/linearstore/jrnl/txn_rec.cpp	(working copy)
@@ -263,7 +263,8 @@
 #if defined(JRNL_BIG_ENDIAN) && defined(JRNL_32_BIT)
         rd_cnt += sizeof(uint32_t); // Filler 0
 #endif
-        _txn_hdr._xidsize = *(std::size_t*)((char*)rptr + rd_cnt);
+        //_txn_hdr._xidsize = *(std::size_t*)((char*)rptr + rd_cnt);
+        std::memcpy((void*)&_txn_hdr._xidsize, (char*)rptr + rd_cnt, sizeof(std::size_t));
         rd_cnt = sizeof(txn_hdr_t);
         chk_hdr();
         _buff = std::malloc(_txn_hdr._xidsize);

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to