diff options
-rw-r--r-- | src/core/SkRWBuffer.cpp | 4 | ||||
-rw-r--r-- | tests/DataRefTest.cpp | 7 |
2 files changed, 10 insertions, 1 deletions
diff --git a/src/core/SkRWBuffer.cpp b/src/core/SkRWBuffer.cpp index 0784378d99..c0a93bdf53 100644 --- a/src/core/SkRWBuffer.cpp +++ b/src/core/SkRWBuffer.cpp @@ -168,7 +168,9 @@ SkRWBuffer::SkRWBuffer(size_t initialCapacity) : fHead(nullptr), fTail(nullptr), SkRWBuffer::~SkRWBuffer() { this->validate(); - fHead->unref(); + if (fHead) { + fHead->unref(); + } } void SkRWBuffer::append(const void* src, size_t length) { diff --git a/tests/DataRefTest.cpp b/tests/DataRefTest.cpp index f1e645ec7e..a474019e92 100644 --- a/tests/DataRefTest.cpp +++ b/tests/DataRefTest.cpp @@ -328,3 +328,10 @@ DEF_TEST(RWBuffer_size, r) { REPORTER_ASSERT(r, !iter.next()); REPORTER_ASSERT(r, 0 == iter.size()); } + +// Tests that it is safe to destruct an SkRWBuffer without appending +// anything to it. +DEF_TEST(RWBuffer_noAppend, r) { + SkRWBuffer buffer; + REPORTER_ASSERT(r, 0 == buffer.size()); +} |