diff options
-rw-r--r-- | include/core/SkData.h | 2 | ||||
-rw-r--r-- | include/core/SkTextBlob.h | 9 | ||||
-rw-r--r-- | src/core/SkData.cpp | 4 | ||||
-rw-r--r-- | src/core/SkTextBlob.cpp | 13 |
4 files changed, 21 insertions, 7 deletions
diff --git a/include/core/SkData.h b/include/core/SkData.h index 8eca45095f..931749a9c1 100644 --- a/include/core/SkData.h +++ b/include/core/SkData.h @@ -169,7 +169,7 @@ private: ~SkData(); // Ensure the unsized delete is called. - void operator delete(void* p) { ::operator delete(p); } + void operator delete(void* p); // shared internal factory static sk_sp<SkData> PrivateNewWithCopy(const void* srcOrNull, size_t length); diff --git a/include/core/SkTextBlob.h b/include/core/SkTextBlob.h index 59151d3002..672cc20c5c 100644 --- a/include/core/SkTextBlob.h +++ b/include/core/SkTextBlob.h @@ -95,12 +95,9 @@ private: // Memory for objects of this class is created with sk_malloc rather than operator new and must // be freed with sk_free. - void operator delete(void* p) { sk_free(p); } - void* operator new(size_t) { - SK_ABORT("All blobs are created by placement new."); - return sk_malloc_throw(0); - } - void* operator new(size_t, void* p) { return p; } + void operator delete(void* p); + void* operator new(size_t); + void* operator new(size_t, void* p); static unsigned ScalarsPerGlyph(GlyphPositioning pos); diff --git a/src/core/SkData.cpp b/src/core/SkData.cpp index 253945ea56..04efb35cca 100644 --- a/src/core/SkData.cpp +++ b/src/core/SkData.cpp @@ -59,6 +59,10 @@ size_t SkData::copyRange(size_t offset, size_t length, void* buffer) const { return length; } +void SkData::operator delete(void* p) { + ::operator delete(p); +} + sk_sp<SkData> SkData::PrivateNewWithCopy(const void* srcOrNull, size_t length) { if (0 == length) { return SkData::MakeEmpty(); diff --git a/src/core/SkTextBlob.cpp b/src/core/SkTextBlob.cpp index 6e0cf64a8b..6d636ce4b6 100644 --- a/src/core/SkTextBlob.cpp +++ b/src/core/SkTextBlob.cpp @@ -347,6 +347,19 @@ unsigned SkTextBlob::ScalarsPerGlyph(GlyphPositioning pos) { return pos; } +void SkTextBlob::operator delete(void* p) { + sk_free(p); +} + +void* SkTextBlob::operator new(size_t) { + SK_ABORT("All blobs are created by placement new."); + return sk_malloc_throw(0); +} + +void* SkTextBlob::operator new(size_t, void* p) { + return p; +} + SkTextBlobRunIterator::SkTextBlobRunIterator(const SkTextBlob* blob) : fCurrentRun(SkTextBlob::RunRecord::First(blob)) { SkDEBUGCODE(fStorageTop = (uint8_t*)blob + blob->fStorageSize;) |