Bug 1430550 - Don't keep mutex locked if SourceSurfaceSkia::Map fails. r?bas draft
authorJamie Nicol <jnicol@mozilla.com>
Thu, 18 Jan 2018 16:48:08 +0000
changeset 722205 3585d4f4ec83bfdb5766df108569a39663909eef
parent 722181 0a543687fd36bc0dc4188c3d33d117b0a8174721
child 746557 b00d2dfc52fa568c243a15b3dd1d93c433f9432a
push id96087
push userbmo:jnicol@mozilla.com
push dateThu, 18 Jan 2018 16:52:12 +0000
reviewersbas
bugs1430550
milestone59.0a1
Bug 1430550 - Don't keep mutex locked if SourceSurfaceSkia::Map fails. r?bas This was leading to a mutex never being unlocked, eventually causing a crash when it was destroyed. MozReview-Commit-ID: JzEDWzKxZ4S
gfx/2d/SourceSurfaceSkia.cpp
--- a/gfx/2d/SourceSurfaceSkia.cpp
+++ b/gfx/2d/SourceSurfaceSkia.cpp
@@ -165,16 +165,19 @@ SourceSurfaceSkia::GetData()
 
 bool
 SourceSurfaceSkia::Map(MapType, MappedSurface *aMappedSurface)
 {
   mChangeMutex.Lock();
   aMappedSurface->mData = GetData();
   aMappedSurface->mStride = Stride();
   mIsMapped = !!aMappedSurface->mData;
+  if (!mIsMapped) {
+    mChangeMutex.Unlock();
+  }
   return mIsMapped;
 }
 
 void
 SourceSurfaceSkia::Unmap()
 {
   mChangeMutex.Unlock();
   MOZ_ASSERT(mIsMapped);