Bug 1448546: Adding sized operator delete overloads on Windows builds; r?froydnj draft
authorCarl Corcoran <ccorcoran@mozilla.com>
Tue, 27 Mar 2018 14:42:17 +0200
changeset 773243 eaa14c3383bb1bc2d7fca24e203f3513109a851a
parent 773144 b906009d875d1f5d29b0d1252cdb43a9b1a5889c
push id104182
push userbmo:ccorcoran@mozilla.com
push dateTue, 27 Mar 2018 17:40:27 +0000
reviewersfroydnj
bugs1448546
milestone61.0a1
Bug 1448546: Adding sized operator delete overloads on Windows builds; r?froydnj MozReview-Commit-ID: EzhNZEf0suT
memory/mozalloc/mozalloc.h
--- a/memory/mozalloc/mozalloc.h
+++ b/memory/mozalloc/mozalloc.h
@@ -193,16 +193,31 @@ void operator delete[](void* ptr) MOZALL
 }
 
 MOZALLOC_EXPORT_NEW MOZ_ALWAYS_INLINE_EVEN_DEBUG
 void operator delete[](void* ptr, const std::nothrow_t&) MOZALLOC_THROW_IF_HAS_EXCEPTIONS
 {
     return free_impl(ptr);
 }
 
+#if defined(XP_WIN)
+// We provide the global sized delete overloads unconditionally because the
+// MSVC runtime headers do, despite compiling with /Zc:sizedDealloc-
+MOZALLOC_EXPORT_NEW MOZ_ALWAYS_INLINE_EVEN_DEBUG
+void operator delete(void* ptr, size_t /*size*/) MOZALLOC_THROW_IF_HAS_EXCEPTIONS
+{
+    return free_impl(ptr);
+}
+
+MOZALLOC_EXPORT_NEW MOZ_ALWAYS_INLINE_EVEN_DEBUG
+void operator delete[](void* ptr, size_t /*size*/) MOZALLOC_THROW_IF_HAS_EXCEPTIONS
+{
+    return free_impl(ptr);
+}
+#endif
 
 /*
  * This policy is identical to MallocAllocPolicy, except it uses
  * moz_xmalloc/moz_xcalloc/moz_xrealloc instead of
  * malloc/calloc/realloc.
  */
 class InfallibleAllocPolicy
 {