summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorcku <cku@mozilla.com>2017-04-28 11:48:21 +0800
committeryami <34216515+kn-yami@users.noreply.github.com>2019-04-03 14:55:35 +0200
commit71c0318322ce998ea411f343607de524b2058799 (patch)
tree29cff490491c44f33ab40aaef4182514495048aa
parentff2f287f82630ab3887d7d5c1e64e5b888ea0beb (diff)
downloadUXP-71c0318322ce998ea411f343607de524b2058799.tar
UXP-71c0318322ce998ea411f343607de524b2058799.tar.gz
UXP-71c0318322ce998ea411f343607de524b2058799.tar.lz
UXP-71c0318322ce998ea411f343607de524b2058799.tar.xz
UXP-71c0318322ce998ea411f343607de524b2058799.zip
Bug 1360343 - ensure maskSurface is not null before dereference, since it can be null because of OOM or gfx device reset. r=dvander
MozReview-Commit-ID: HX2qsWLZpMg --HG-- extra : rebase_source : 046befc11151461a682842c31e2ce39247a5e1d8
-rw-r--r--gfx/2d/2D.h3
-rw-r--r--layout/svg/nsSVGMaskFrame.cpp3
2 files changed, 5 insertions, 1 deletions
diff --git a/gfx/2d/2D.h b/gfx/2d/2D.h
index c1fba3463..e2020dc9e 100644
--- a/gfx/2d/2D.h
+++ b/gfx/2d/2D.h
@@ -488,6 +488,9 @@ public:
/**
* Returns a DataSourceSurface with the same data as this one, but
* guaranteed to have surface->GetType() == SurfaceType::DATA.
+ *
+ * The returning surface might be null, because of OOM or gfx device reset.
+ * The caller needs to do null-check before using it.
*/
virtual already_AddRefed<DataSourceSurface> GetDataSurface() override;
diff --git a/layout/svg/nsSVGMaskFrame.cpp b/layout/svg/nsSVGMaskFrame.cpp
index b8e4b32ae..a22833d61 100644
--- a/layout/svg/nsSVGMaskFrame.cpp
+++ b/layout/svg/nsSVGMaskFrame.cpp
@@ -274,7 +274,8 @@ nsSVGMaskFrame::GetMaskForMaskedFrame(gfxContext* aContext,
}
RefPtr<DataSourceSurface> maskSurface = maskSnapshot->GetDataSurface();
DataSourceSurface::MappedSurface map;
- if (!maskSurface->Map(DataSourceSurface::MapType::READ, &map)) {
+ if (!maskSurface ||
+ !maskSurface->Map(DataSourceSurface::MapType::READ, &map)) {
return nullptr;
}