Index: src/core/SkWriter32.cpp |
diff --git a/src/core/SkWriter32.cpp b/src/core/SkWriter32.cpp |
index 56edd19698031ace0308c7a09bf1ad93585c600e..e41e2df0c470423c34d017bc51e324165d9ed19a 100644 |
--- a/src/core/SkWriter32.cpp |
+++ b/src/core/SkWriter32.cpp |
@@ -246,6 +246,12 @@ void SkWriter32::validate() const { |
const char* SkReader32::readString(size_t* outLen) { |
size_t len = this->readInt(); |
+ if (0xFFFF == len) { |
+ if (outLen) { |
+ *outLen = 0; |
+ } |
+ return NULL; |
+ } |
const void* ptr = this->peek(); |
// skip over teh string + '\0' and then pad to a multiple of 4 |
@@ -268,8 +274,12 @@ size_t SkReader32::readIntoString(SkString* copy) { |
} |
void SkWriter32::writeString(const char str[], size_t len) { |
+ if (NULL == str) { |
+ // We're already requiring len < 0xFFFF, so we can use that to mark NULL. |
+ this->write32(0xFFFF); |
+ return; |
+ } |
if ((long)len < 0) { |
- SkASSERT(str); |
len = strlen(str); |
} |
this->write32(len); |