Bug 1337829 - ImageOps::DecodeToSurface tries to complete an already complete Sourcebuffer.r=aosmond draft
authorMarco Bonardo <mbonardo@mozilla.com>
Wed, 08 Feb 2017 17:33:39 +0100
changeset 480616 f5491533d7497c2b4e610d83d34a3b3f5c46c87f
parent 479417 7f1b358fb17dfd982c5e18c34d5735cd481c7f7c
child 545006 3e7d044af53d8cf1aa70cc9c6200e0e1551f1c28
push id44598
push usermak77@bonardo.net
push dateWed, 08 Feb 2017 16:34:49 +0000
reviewersaosmond
bugs1337829
milestone54.0a1
Bug 1337829 - ImageOps::DecodeToSurface tries to complete an already complete Sourcebuffer.r=aosmond MozReview-Commit-ID: 18OM4WgQNud
image/ImageOps.cpp
--- a/image/ImageOps.cpp
+++ b/image/ImageOps.cpp
@@ -108,17 +108,20 @@ ImageOps::DecodeToSurface(nsIInputStream
 
   // Write the data into a SourceBuffer.
   NotNull<RefPtr<SourceBuffer>> sourceBuffer = WrapNotNull(new SourceBuffer());
   sourceBuffer->ExpectLength(length);
   rv = sourceBuffer->AppendFromInputStream(inputStream, length);
   if (NS_FAILED(rv)) {
     return nullptr;
   }
-  sourceBuffer->Complete(NS_OK);
+  // Make sure our sourceBuffer is marked as complete.
+  if (!sourceBuffer->IsComplete()) {
+    sourceBuffer->Complete(NS_OK);
+  }
 
   // Create a decoder.
   DecoderType decoderType =
     DecoderFactory::GetDecoderType(PromiseFlatCString(aMimeType).get());
   RefPtr<Decoder> decoder =
     DecoderFactory::CreateAnonymousDecoder(decoderType, sourceBuffer,
                                            Nothing(), ToSurfaceFlags(aFlags));
   if (!decoder) {