Write NULL as "" so readString() always returns a non-NULL string.

BUG=
R=reed@google.com

Review URL: https://codereview.chromium.org/22862002

git-svn-id: http://skia.googlecode.com/svn/trunk@10754 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/include/core/SkWriter32.h b/include/core/SkWriter32.h
index 82cf346..308e288 100644
--- a/include/core/SkWriter32.h
+++ b/include/core/SkWriter32.h
@@ -168,7 +168,9 @@
      *  Writes a string to the writer, which can be retrieved with
      *  SkReader32::readString().
      *  The length can be specified, or if -1 is passed, it will be computed by
-     *  calling strlen(). The length must be < 0xFFFF
+     *  calling strlen(). The length must be < max size_t.
+     *
+     *  If you write NULL, it will be read as "".
      */
     void writeString(const char* str, size_t len = (size_t)-1);
 
diff --git a/src/core/SkWriter32.cpp b/src/core/SkWriter32.cpp
index e41e2df..ca21c5a 100644
--- a/src/core/SkWriter32.cpp
+++ b/src/core/SkWriter32.cpp
@@ -246,12 +246,6 @@
 
 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
@@ -275,9 +269,8 @@
 
 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;
+        str = "";
+        len = 0;
     }
     if ((long)len < 0) {
         len = strlen(str);
diff --git a/tests/Writer32Test.cpp b/tests/Writer32Test.cpp
index 6ecfcf3..194164d 100644
--- a/tests/Writer32Test.cpp
+++ b/tests/Writer32Test.cpp
@@ -24,29 +24,11 @@
 static void test_string_null(skiatest::Reporter* reporter) {
     uint8_t storage[8];
     SkWriter32 writer(0, storage, sizeof(storage));
-    SkReader32 reader(storage, sizeof(storage));
-
-    const char* str;
-    size_t len;
 
     // Can we write NULL?
     writer.writeString(NULL);
-    const int32_t null[] = { 0xFFFF };
-    check_contents(reporter, writer, null, sizeof(null));
-    str = reader.readString(&len);
-    REPORTER_ASSERT(reporter, NULL == str);
-    REPORTER_ASSERT(reporter, 0 == len);
-
-    writer.reset(storage, sizeof(storage));
-    reader.rewind();
-
-    // Is NULL distinct from ""?
-    writer.writeString("");
-    const int32_t empty[] = { 0x0, 0x0 };
-    check_contents(reporter, writer, empty, sizeof(empty));
-    str = reader.readString(&len);
-    REPORTER_ASSERT(reporter, 0 == strcmp("", str));
-    REPORTER_ASSERT(reporter, 0 == len);
+    const int32_t expected[] = { 0x0, 0x0 };
+    check_contents(reporter, writer, expected, sizeof(expected));
 }
 
 static void test_rewind(skiatest::Reporter* reporter) {