Bug 1305791 - Clear result.mSegments if MoveFallible failed. r?billm draft
authorKan-Ru Chen <kanru@kanru.info>
Fri, 30 Sep 2016 17:37:44 +0800
changeset 419412 f07b31eb5c171c41e8ad7ffbf09a03f8489b2530
parent 417914 66a77b9bfe5dcacd50eccf85de7c0e7e15ce0ffd
child 532574 184de1e5274146dd140d6be3557427dfc2b6714d
push id30930
push userbmo:kchen@mozilla.com
push dateFri, 30 Sep 2016 09:38:09 +0000
reviewersbillm
bugs1305791
milestone52.0a1
Bug 1305791 - Clear result.mSegments if MoveFallible failed. r?billm MozReview-Commit-ID: 8UaGt1OEfhh
mfbt/BufferList.h
--- a/mfbt/BufferList.h
+++ b/mfbt/BufferList.h
@@ -392,16 +392,17 @@ BufferList<AllocPolicy>::MoveFallible(bo
   BufferList<OtherAllocPolicy> result(0, 0, mStandardCapacity, aAP);
 
   IterImpl iter = Iter();
   while (!iter.Done()) {
     size_t toAdvance = iter.RemainingInSegment();
 
     if (!toAdvance || !result.mSegments.append(typename BufferList<OtherAllocPolicy>::Segment(iter.mData, toAdvance, toAdvance))) {
       *aSuccess = false;
+      result.mSegments.clear();
       return result;
     }
     iter.Advance(*this, toAdvance);
   }
 
   result.mSize = mSize;
   mSegments.clear();
   mSize = 0;