diff options
author | Ben Wagner <bungeman@google.com> | 2016-10-19 17:15:44 -0400 |
---|---|---|
committer | Mike Klein <mtklein@chromium.org> | 2016-10-19 21:41:00 +0000 |
commit | e1d6ff172e219d3be61949b0e44091f4c85de2ad (patch) | |
tree | 3dd2914495b6c54dcfbbdaea7b136ba0609d4bf9 | |
parent | f4ace0124f408aa52d111f6ed30ac80833d00c9a (diff) |
Class delete call unsized delete when size not known.
Some classes directly call global operator new to reserve space in
addition to the space the class will occupy. These clases must be
deleted with the unsized global operator new. If a build is configured
such that sized global operator new is called from a delete expression,
this must be overridden by such classes.
TBR=reed
Only affects private bits of SkData.
Change-Id: I797935db17a37aa8c2ca7b562a4ea65a7978a9f0
Reviewed-on: https://skia-review.googlesource.com/3678
Reviewed-by: Ben Wagner <bungeman@google.com>
Reviewed-by: Mike Klein <mtklein@chromium.org>
Commit-Queue: Ben Wagner <bungeman@google.com>
Commit-Queue: Mike Klein <mtklein@chromium.org>
-rw-r--r-- | include/core/SkData.h | 3 | ||||
-rw-r--r-- | src/core/SkDescriptor.h | 3 |
2 files changed, 6 insertions, 0 deletions
diff --git a/include/core/SkData.h b/include/core/SkData.h index 379f308b52..0622c9f0fa 100644 --- a/include/core/SkData.h +++ b/include/core/SkData.h @@ -168,6 +168,9 @@ private: explicit SkData(size_t size); // inplace new/delete ~SkData(); + // Ensure the unsized delete is called. + void operator delete(void* p) { ::operator delete(p); } + // Called the first time someone calls NewEmpty to initialize the singleton. friend SkData* sk_new_empty_data(); diff --git a/src/core/SkDescriptor.h b/src/core/SkDescriptor.h index 0f859137b0..0e91c3c2cf 100644 --- a/src/core/SkDescriptor.h +++ b/src/core/SkDescriptor.h @@ -25,6 +25,9 @@ public: return std::unique_ptr<SkDescriptor>(static_cast<SkDescriptor*>(::operator new (length))); } + // Ensure the unsized delete is called. + void operator delete(void* p) { ::operator delete(p); } + void init() { fLength = sizeof(SkDescriptor); fCount = 0; |