Changeset 231300 in webkit
- Timestamp:
- May 3, 2018 3:17:02 AM (5 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 3 edited
-
ChangeLog (modified) (1 diff)
-
platform/graphics/texmap/TextureMapperLayer.cpp (modified) (2 diffs)
-
platform/graphics/texmap/TextureMapperLayer.h (modified) (5 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r231297 r231300 1 2018-05-03 Miguel Gomez <magomez@igalia.com> 2 3 WebCore::TextureMapperLayer object used after freed 4 https://bugs.webkit.org/show_bug.cgi?id=184729 5 6 Reviewed by Michael Catanzaro. 7 8 Replace the raw pointers with WeakPtr for effectTarget, maskLayer and replicaLayer 9 inside TextureMapperLayer. 10 11 * platform/graphics/texmap/TextureMapperLayer.cpp: 12 (WebCore::TextureMapperLayer::~TextureMapperLayer): 13 (WebCore::TextureMapperLayer::setMaskLayer): 14 (WebCore::TextureMapperLayer::setReplicaLayer): 15 * platform/graphics/texmap/TextureMapperLayer.h: 16 1 17 2018-05-03 Basuke Suzuki <Basuke.Suzuki@sony.com> 2 18 -
trunk/Source/WebCore/platform/graphics/texmap/TextureMapperLayer.cpp
r230955 r231300 49 49 50 50 removeFromParent(); 51 52 if (m_effectTarget) {53 if (m_effectTarget->m_state.maskLayer == this)54 m_effectTarget->m_state.maskLayer = nullptr;55 if (m_effectTarget->m_state.replicaLayer == this)56 m_effectTarget->m_state.replicaLayer = nullptr;57 }58 51 } 59 52 … … 502 495 void TextureMapperLayer::setMaskLayer(TextureMapperLayer* maskLayer) 503 496 { 504 if (maskLayer) 505 maskLayer->m_effectTarget = this; 506 m_state.maskLayer = maskLayer; 497 if (maskLayer) { 498 maskLayer->m_effectTarget = createWeakPtr(); 499 m_state.maskLayer = maskLayer->createWeakPtr(); 500 } else 501 m_state.maskLayer = nullptr; 507 502 } 508 503 509 504 void TextureMapperLayer::setReplicaLayer(TextureMapperLayer* replicaLayer) 510 505 { 511 if (replicaLayer) 512 replicaLayer->m_effectTarget = this; 513 m_state.replicaLayer = replicaLayer; 506 if (replicaLayer) { 507 replicaLayer->m_effectTarget = createWeakPtr(); 508 m_state.replicaLayer = replicaLayer->createWeakPtr(); 509 } else 510 m_state.replicaLayer = nullptr; 514 511 } 515 512 -
trunk/Source/WebCore/platform/graphics/texmap/TextureMapperLayer.h
r230991 r231300 26 26 #include "TextureMapperAnimation.h" 27 27 #include "TextureMapperBackingStore.h" 28 #include <wtf/WeakPtr.h> 28 29 29 30 namespace WebCore { … … 40 41 TextureMapperLayer(); 41 42 virtual ~TextureMapperLayer(); 43 WeakPtr<TextureMapperLayer> createWeakPtr() { return m_weakFactory.createWeakPtr(*this); } 42 44 43 45 void setID(uint32_t id) { m_id = id; } … … 140 142 } 141 143 144 WeakPtrFactory<TextureMapperLayer> m_weakFactory; 142 145 Vector<TextureMapperLayer*> m_children; 143 146 TextureMapperLayer* m_parent { nullptr }; 144 TextureMapperLayer* m_effectTarget { nullptr };147 WeakPtr<TextureMapperLayer> m_effectTarget; 145 148 TextureMapperBackingStore* m_backingStore { nullptr }; 146 149 TextureMapperPlatformLayer* m_contentsLayer { nullptr }; … … 159 162 FloatSize contentsTileSize; 160 163 FloatSize contentsTilePhase; 161 TextureMapperLayer*maskLayer;162 TextureMapperLayer*replicaLayer;164 WeakPtr<TextureMapperLayer> maskLayer; 165 WeakPtr<TextureMapperLayer> replicaLayer; 163 166 Color solidColor; 164 167 FilterOperations filters; … … 180 183 : anchorPoint(0.5, 0.5, 0) 181 184 , opacity(1) 182 , maskLayer(0)183 , replicaLayer(0)184 185 , debugBorderWidth(0) 185 186 , repaintCount(0)
Note: See TracChangeset
for help on using the changeset viewer.