Be compatible with dalvikvm on calls to env->NewString(NULL, 0);

The previous behavior was causing libcore.java.util.OldScannerTest to
fail with NullPointerExceptions.

Change-Id: I8c9b4e496e6d17a0ad8be10888daa52ac8d178b7
diff --git a/src/jni_internal.cc b/src/jni_internal.cc
index 9936f25..82c120c 100644
--- a/src/jni_internal.cc
+++ b/src/jni_internal.cc
@@ -1837,9 +1837,6 @@
 
   static jstring NewString(JNIEnv* env, const jchar* chars, jsize char_count) {
     ScopedJniThreadState ts(env);
-    if (chars == NULL && char_count == 0) {
-      return NULL;
-    }
     String* result = String::AllocFromUtf16(char_count, chars);
     return AddLocalReference<jstring>(env, result);
   }
diff --git a/src/jni_internal_test.cc b/src/jni_internal_test.cc
index 18d8e0a..f03dbb3 100644
--- a/src/jni_internal_test.cc
+++ b/src/jni_internal_test.cc
@@ -7,6 +7,7 @@
 #include <cmath>
 
 #include "common_test.h"
+#include "gtest/gtest-death-test.h"
 #include "ScopedLocalRef.h"
 
 namespace art {
@@ -484,8 +485,6 @@
 }
 
 TEST_F(JniInternalTest, NewString) {
-  EXPECT_TRUE(env_->NewString(NULL, 0) == NULL);
-
   jchar chars[] = { 'h', 'i' };
   jstring s;
   s = env_->NewString(chars, 0);
@@ -500,6 +499,16 @@
   // TODO: check some non-ASCII strings.
 }
 
+TEST_F(JniInternalTest, NewStringNullCharsZeroLength) {
+  jstring s = env_->NewString(NULL, 0);
+  EXPECT_TRUE(s != NULL);
+  EXPECT_EQ(0, env_->GetStringLength(s));
+}
+
+TEST_F(JniInternalTest, NewStringNullCharsNonzeroLength) {
+  ASSERT_DEATH(env_->NewString(NULL, 1), "");
+}
+
 TEST_F(JniInternalTest, GetStringLength_GetStringUTFLength) {
   // Already tested in the NewString/NewStringUTF tests.
 }
diff --git a/src/object.cc b/src/object.cc
index 27cbb41..49ba5a3 100644
--- a/src/object.cc
+++ b/src/object.cc
@@ -1377,6 +1377,7 @@
 String* String::AllocFromUtf16(int32_t utf16_length,
                                const uint16_t* utf16_data_in,
                                int32_t hash_code) {
+  CHECK(utf16_data_in != NULL || utf16_length == 0);
   String* string = Alloc(GetJavaLangString(), utf16_length);
   if (string == NULL) {
     return NULL;