diff --git a/dom/indexedDB/ActorsParent.cpp b/dom/indexedDB/ActorsParent.cpp index 9203f9ee41..52f221d78a 100644 --- a/dom/indexedDB/ActorsParent.cpp +++ b/dom/indexedDB/ActorsParent.cpp @@ -26311,13 +26311,17 @@ ObjectStoreAddOrPutRequestOp::DoDatabaseWork(DatabaseConnection* aConnection) return rv; } } else { - nsCString flatCloneData; - flatCloneData.SetLength(cloneDataSize); - auto iter = cloneData.Start(); - cloneData.ReadBytes(iter, flatCloneData.BeginWriting(), cloneDataSize); + AutoTArray flatCloneData; // 4096 from JSStructuredCloneData + if (!flatCloneData.SetLength(cloneDataSize, fallible)) { + return NS_ERROR_OUT_OF_MEMORY; + } + { // iter scope + auto iter = cloneData.Start(); + MOZ_ALWAYS_TRUE(cloneData.ReadBytes(iter, flatCloneData.Elements(), cloneDataSize)); + } // Compress the bytes before adding into the database. - const char* uncompressed = flatCloneData.BeginReading(); + const char* uncompressed = flatCloneData.Elements(); size_t uncompressedLength = cloneDataSize; size_t compressedLength = snappy::MaxCompressedLength(uncompressedLength);