Skip to content
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 8 additions & 1 deletion vnext/Microsoft.ReactNative.Cxx/StructInfo.h
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@ struct FieldInfo {
FieldInfo(TValue TClass::*fieldPtr) noexcept
: m_fieldReader{FieldReader<TClass, TValue>},
m_fieldWriter{FieldWriter<TClass, TValue>},
m_fieldPtrStore{*reinterpret_cast<uintptr_t *>(&fieldPtr)} {
m_fieldPtrStore{StoreFieldPtr(fieldPtr)} {
static_assert(sizeof(m_fieldPtrStore) >= sizeof(fieldPtr));
}

Expand All @@ -94,6 +94,13 @@ struct FieldInfo {
}

private:
template <class TClass, class TValue>
static uintptr_t StoreFieldPtr(TValue TClass::*fieldPtr) noexcept {
uintptr_t result{};
std::memcpy(&result, &fieldPtr, sizeof(fieldPtr));
return result;
}

FieldReaderType m_fieldReader;
FieldWriterType m_fieldWriter;
const uintptr_t m_fieldPtrStore;
Expand Down
Loading