diff options
author | cku <cku@mozilla.com> | 2017-04-28 11:48:21 +0800 |
---|---|---|
committer | yami <34216515+kn-yami@users.noreply.github.com> | 2019-04-03 14:55:35 +0200 |
commit | 71c0318322ce998ea411f343607de524b2058799 (patch) | |
tree | 29cff490491c44f33ab40aaef4182514495048aa | |
parent | ff2f287f82630ab3887d7d5c1e64e5b888ea0beb (diff) | |
download | UXP-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.h | 3 | ||||
-rw-r--r-- | layout/svg/nsSVGMaskFrame.cpp | 3 |
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; } |