diff options
author | unknown <jonas@perch.ndb.mysql.com> | 2006-09-03 11:11:37 +0200 |
---|---|---|
committer | unknown <jonas@perch.ndb.mysql.com> | 2006-09-03 11:11:37 +0200 |
commit | 8e1a9cd140cc9f0c4b053dd4e162e4d2f45245c5 (patch) | |
tree | 3ac7a77785ce08a950a5210116bfc9090b1330b6 | |
parent | 3ba0b6e0f0ac6596f18a4cf2178546c72adf4ebc (diff) | |
download | mariadb-git-8e1a9cd140cc9f0c4b053dd4e162e4d2f45245c5.tar.gz |
ndb -
fix ndb-violations of strict aliasing found by gcc4.1
(crashes in ndb_dd_*)
storage/ndb/src/kernel/blocks/dbdict/Dbdict.cpp:
Fix strict-aliasing
storage/ndb/src/kernel/vm/KeyTable2Ref.hpp:
Fix strict-aliasing
storage/ndb/src/kernel/vm/Pool.hpp:
Fix strict-aliasing
-rw-r--r-- | storage/ndb/src/kernel/blocks/dbdict/Dbdict.cpp | 4 | ||||
-rw-r--r-- | storage/ndb/src/kernel/vm/KeyTable2Ref.hpp | 22 | ||||
-rw-r--r-- | storage/ndb/src/kernel/vm/Pool.hpp | 5 |
3 files changed, 24 insertions, 7 deletions
diff --git a/storage/ndb/src/kernel/blocks/dbdict/Dbdict.cpp b/storage/ndb/src/kernel/blocks/dbdict/Dbdict.cpp index 02b0cb83847..45eed73455c 100644 --- a/storage/ndb/src/kernel/blocks/dbdict/Dbdict.cpp +++ b/storage/ndb/src/kernel/blocks/dbdict/Dbdict.cpp @@ -7295,7 +7295,7 @@ void Dbdict::execGET_TABINFOREQ(Signal* signal) if(objEntry->m_tableType==DictTabInfo::Datafile) { jam(); - GetTabInfoReq *req= (GetTabInfoReq*)signal->theData; + GetTabInfoReq *req= (GetTabInfoReq*)signal->getDataPtrSend(); req->senderData= c_retrieveRecord.retrievePage; req->senderRef= reference(); req->requestType= GetTabInfoReq::RequestById; @@ -7307,7 +7307,7 @@ void Dbdict::execGET_TABINFOREQ(Signal* signal) else if(objEntry->m_tableType==DictTabInfo::LogfileGroup) { jam(); - GetTabInfoReq *req= (GetTabInfoReq*)signal->theData; + GetTabInfoReq *req= (GetTabInfoReq*)signal->getDataPtrSend(); req->senderData= c_retrieveRecord.retrievePage; req->senderRef= reference(); req->requestType= GetTabInfoReq::RequestById; diff --git a/storage/ndb/src/kernel/vm/KeyTable2Ref.hpp b/storage/ndb/src/kernel/vm/KeyTable2Ref.hpp index 8ede144a53e..29950f1a8a6 100644 --- a/storage/ndb/src/kernel/vm/KeyTable2Ref.hpp +++ b/storage/ndb/src/kernel/vm/KeyTable2Ref.hpp @@ -32,19 +32,33 @@ public: bool find(Ptr<T>& ptr, Uint32 key) const { U rec; rec.key = key; - return m_ref.find(*(Ptr<U>*)&ptr, rec); + Ptr<U> tmp; + bool ret = m_ref.find(tmp, rec); + ptr.i = tmp.i; + ptr.p = static_cast<T*>(tmp.p); + return ret; } bool seize(Ptr<T> & ptr) { - return m_ref.seize(*(Ptr<U>*)&ptr); + Ptr<U> tmp; + bool ret = m_ref.seize(tmp); + ptr.i = tmp.i; + ptr.p = static_cast<T*>(tmp.p); + return ret; } void add(Ptr<T> & ptr) { - m_ref.add(*(Ptr<U>*)&ptr); + Ptr<U> tmp; + tmp.i = ptr.i; + tmp.p = static_cast<U*>(ptr.p); + m_ref.add(tmp); } void release(Ptr<T> & ptr) { - m_ref.release(*(Ptr<U>*)&ptr); + Ptr<U> tmp; + tmp.i = ptr.i; + tmp.p = static_cast<U*>(ptr.p); + m_ref.release(tmp); } }; diff --git a/storage/ndb/src/kernel/vm/Pool.hpp b/storage/ndb/src/kernel/vm/Pool.hpp index 9ac6ea2fb46..70fcdf8b56a 100644 --- a/storage/ndb/src/kernel/vm/Pool.hpp +++ b/storage/ndb/src/kernel/vm/Pool.hpp @@ -324,7 +324,10 @@ inline void RecordPool<T, P>::release(Ptr<T> ptr) { - m_pool.release(*(Ptr<void>*)&ptr); + Ptr<void> tmp; + tmp.i = ptr.i; + tmp.p = ptr.p; + m_pool.release(tmp); } #endif |