Skip to content

Commit 9a49b22

Browse files
ulanCommit Bot
authored andcommitted
Fix alloc/dealloc size mismatch for v8::BackingStore
On newer compilers the {operator delete} with explicit {size_t} argument would be instantiated for {v8::BackingStore} and used in the destructor of {std::unique_ptr<v8::BackingStore>}. The {size_t} argument is wrong though, since the pointer actually points to a {v8::internal::BackingStore} object. The solution is to explicitly provide a {operator delete}, preventing an implicitly generated {size_t} operator. Bug:v8:11081 Change-Id: Iee0aa47a67f0e41000bea628942f7e3d70198b83 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2506712 Commit-Queue: Ulan Degenbaev <[email protected]> Reviewed-by: Camillo Bruni <[email protected]> Cr-Commit-Position: refs/heads/master@{#70916}
1 parent 804a612 commit 9a49b22

1 file changed

Lines changed: 7 additions & 0 deletions

File tree

include/v8.h

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5078,6 +5078,13 @@ class V8_EXPORT BackingStore : public v8::internal::BackingStoreBase {
50785078
*/
50795079
bool IsShared() const;
50805080

5081+
/**
5082+
* Prevent implicit instantiation of operator delete with size_t argument.
5083+
* The size_t argument would be incorrect because ptr points to the
5084+
* internal BackingStore object.
5085+
*/
5086+
void operator delete(void* ptr) { ::operator delete(ptr); }
5087+
50815088
/**
50825089
* Wrapper around ArrayBuffer::Allocator::Reallocate that preserves IsShared.
50835090
* Assumes that the backing_store was allocated by the ArrayBuffer allocator

0 commit comments

Comments
 (0)