From 48862f0a4dab896ccd78ad8ffc0442a3345a93c2 Mon Sep 17 00:00:00 2001 From: Cameron Kaiser Date: Thu, 26 Apr 2018 22:31:44 -0700 Subject: [PATCH] #491: M1393367 M1452202 --- gfx/2d/FilterNodeSoftware.cpp | 2 +- xpcom/glue/PLDHashTable.cpp | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/gfx/2d/FilterNodeSoftware.cpp b/gfx/2d/FilterNodeSoftware.cpp index fd5523fd9..0cb7ea904 100644 --- a/gfx/2d/FilterNodeSoftware.cpp +++ b/gfx/2d/FilterNodeSoftware.cpp @@ -2771,7 +2771,7 @@ FilterNodeArithmeticCombineSoftware::SetAttribute(uint32_t aIndex, uint32_t aSize) { MOZ_ASSERT(aIndex == ATT_ARITHMETIC_COMBINE_COEFFICIENTS); - MOZ_ASSERT(aSize == 4); + MOZ_RELEASE_ASSERT(aSize == 4); mK1 = aFloat[0]; mK2 = aFloat[1]; diff --git a/xpcom/glue/PLDHashTable.cpp b/xpcom/glue/PLDHashTable.cpp index bf5d70c78..55b3308ea 100644 --- a/xpcom/glue/PLDHashTable.cpp +++ b/xpcom/glue/PLDHashTable.cpp @@ -220,17 +220,17 @@ PLDHashTable::operator=(PLDHashTable&& aOther) return *this; } - // Destruct |this|. - this->~PLDHashTable(); - - // |mOps| and |mEntrySize| are const so we can't assign them. Instead, we - // require that they are equal. The justification for this is that they're + // |mOps| and |mEntrySize| are required to stay the same, they're // conceptually part of the type -- indeed, if PLDHashTable was a templated // type like nsTHashtable, they *would* be part of the type -- so it only // makes sense to assign in cases where they match. MOZ_RELEASE_ASSERT(mOps == aOther.mOps); MOZ_RELEASE_ASSERT(mEntrySize == aOther.mEntrySize); + // Reconstruct |this|. + this->~PLDHashTable(); + new (this) PLDHashTable(aOther.mOps, aOther.mEntrySize, 0); + // Move non-const pieces over. mHashShift = Move(aOther.mHashShift); mEntryCount = Move(aOther.mEntryCount);