summaryrefslogtreecommitdiff
path: root/storage/ndb/src/kernel/vm/KeyTable2Ref.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'storage/ndb/src/kernel/vm/KeyTable2Ref.hpp')
-rw-r--r--storage/ndb/src/kernel/vm/KeyTable2Ref.hpp22
1 files changed, 18 insertions, 4 deletions
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);
}
};