| Index: third_party/WebKit/Source/platform/heap/Persistent.h
|
| diff --git a/third_party/WebKit/Source/platform/heap/Persistent.h b/third_party/WebKit/Source/platform/heap/Persistent.h
|
| index d885e5dec7722f6e944f4fbbe1dd56d0a30133fb..08a293e316d5c5de9a692a8227184f66e7d2f322 100644
|
| --- a/third_party/WebKit/Source/platform/heap/Persistent.h
|
| +++ b/third_party/WebKit/Source/platform/heap/Persistent.h
|
| @@ -167,17 +167,21 @@ class PersistentBase {
|
| protected:
|
| NO_SANITIZE_ADDRESS
|
| T* atomicGet() {
|
| - return reinterpret_cast<T*>(
|
| - acquireLoad(reinterpret_cast<void* volatile*>(&m_raw)));
|
| + return reinterpret_cast<T*>(acquireLoad(reinterpret_cast<void* volatile*>(
|
| + const_cast<typename std::remove_const<T>::type**>(&m_raw))));
|
| }
|
|
|
| private:
|
| NO_SANITIZE_ADDRESS
|
| void assign(T* ptr) {
|
| - if (crossThreadnessConfiguration == CrossThreadPersistentConfiguration)
|
| - releaseStore(reinterpret_cast<void* volatile*>(&m_raw), ptr);
|
| - else
|
| + if (crossThreadnessConfiguration == CrossThreadPersistentConfiguration) {
|
| + releaseStore(
|
| + reinterpret_cast<void* volatile*>(
|
| + const_cast<typename std::remove_const<T>::type**>(&m_raw)),
|
| + const_cast<typename std::remove_const<T>::type*>(ptr));
|
| + } else {
|
| m_raw = ptr;
|
| + }
|
| checkPointer();
|
| if (m_raw) {
|
| if (!m_persistentNode)
|
|
|