Fix mbsrtowcs(3) src param for finished string.

A mistake I made while cleaning this up the first time through.
mbstrtowcs(3) sets the src param to null if it finishes the string.

Change-Id: I6263646e25d9537043b7025fd1dd6ae195f365e2
(cherry picked from commit b6cc8e00cd562bd0f81fe44a6bc646540a862f32)
diff --git a/libc/bionic/wchar.cpp b/libc/bionic/wchar.cpp
index 438ce03..524ba07 100644
--- a/libc/bionic/wchar.cpp
+++ b/libc/bionic/wchar.cpp
@@ -84,6 +84,7 @@
       if (static_cast<uint8_t>((*src)[i]) < 0x80) {
         // Fast path for plain ASCII characters.
         if ((*src)[i] == '\0') {
+          *src = nullptr;
           return reset_and_return(o, state);
         }
         r = 1;
@@ -96,6 +97,7 @@
           return reset_and_return_illegal(EILSEQ, state);
         }
         if (r == 0) {
+          *src = nullptr;
           return reset_and_return(o, state);
         }
       }
@@ -118,7 +120,8 @@
       dst[o] = (*src)[i];
       r = 1;
       if ((*src)[i] == '\0') {
-        break;
+        *src = nullptr;
+        return reset_and_return(o, state);
       }
     } else {
       r = mbrtowc(dst + o, *src + i, nmc - i, state);
diff --git a/tests/wchar_test.cpp b/tests/wchar_test.cpp
index f052ce6..d02c4bf 100644
--- a/tests/wchar_test.cpp
+++ b/tests/wchar_test.cpp
@@ -351,7 +351,7 @@
   // Check that we didn't clobber the rest of out.
   ASSERT_EQ(L'x', out[3]);
   // Check that valid has advanced to the end of the string.
-  ASSERT_EQ(L'\0', *valid);
+  ASSERT_EQ(nullptr, valid);
 
   const char* invalid = "A" "\xc2\x20" "ef";
   ASSERT_EQ(static_cast<size_t>(-1), mbsrtowcs(out, &invalid, 4, ps));