aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--include/core/SkData.h2
-rw-r--r--include/core/SkTextBlob.h9
-rw-r--r--src/core/SkData.cpp4
-rw-r--r--src/core/SkTextBlob.cpp13
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;)