Bug 1302064 - prevent static analysis use after free checker for base. r?jorendorff draft
authorAndi-Bogdan Postelnicu <bpostelnicu@mozilla.com>
Mon, 12 Sep 2016 14:25:35 +0300
changeset 412599 0233417ffe9f0e00350af427a3d7ed4e5b46fb12
parent 412489 cfdb7af3af2e92e95f71ca2f1672bf5433beeb89
child 531026 8948dc71de6ae1e9b68918bd324635fa7e57a016
push id29213
push userbmo:bpostelnicu@mozilla.com
push dateMon, 12 Sep 2016 11:26:12 +0000
reviewersjorendorff
bugs1302064
milestone51.0a1
Bug 1302064 - prevent static analysis use after free checker for base. r?jorendorff MozReview-Commit-ID: KPotPnrAOD9
js/src/vm/ArrayBufferObject.cpp
--- a/js/src/vm/ArrayBufferObject.cpp
+++ b/js/src/vm/ArrayBufferObject.cpp
@@ -619,22 +619,22 @@ WasmArrayRawBuffer::Allocate(uint32_t nu
 /* static */ void
 WasmArrayRawBuffer::Release(void* mem)
 {
     WasmArrayRawBuffer* header = (WasmArrayRawBuffer*)((uint8_t*)mem - sizeof(WasmArrayRawBuffer));
     uint8_t* base = header->basePointer();
     MOZ_RELEASE_ASSERT(header->mappedSize() <= SIZE_MAX - gc::SystemPageSize());
     size_t mappedSizeWithHeader = header->mappedSize() + gc::SystemPageSize();
 
+    MemProfiler::RemoveNative(base);
 # ifdef XP_WIN
     VirtualFree(base, 0, MEM_RELEASE);
 # else  // XP_WIN
     munmap(base, mappedSizeWithHeader);
 # endif  // !XP_WIN
-    MemProfiler::RemoveNative(base);
 
 #  if defined(MOZ_VALGRIND) && defined(VALGRIND_ENABLE_ADDR_ERROR_REPORTING_IN_RANGE)
     VALGRIND_ENABLE_ADDR_ERROR_REPORTING_IN_RANGE(base, mappedSizeWithHeader);
 #  endif
 }
 
 WasmArrayRawBuffer*
 ArrayBufferObject::BufferContents::wasmBuffer() const