Bug 1337829 - ImageOps::DecodeToSurface tries to complete an already complete Sourcebuffer.r=aosmond
MozReview-Commit-ID: 18OM4WgQNud
--- 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) {