From 80f7338602a47de791a2ce66e7c52c9ba0beba33 Mon Sep 17 00:00:00 2001 From: Jason Simmons Date: Tue, 19 Jan 2016 12:13:15 -0800 Subject: [PATCH] Fix Dart/JNI string conversion to treat the data as UTF-16 --- sky/engine/bindings/jni/jni_object.cc | 6 +++--- sky/engine/bindings/jni/jni_object.h | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/sky/engine/bindings/jni/jni_object.cc b/sky/engine/bindings/jni/jni_object.cc index 065bec0efa5..8384561a550 100644 --- a/sky/engine/bindings/jni/jni_object.cc +++ b/sky/engine/bindings/jni/jni_object.cc @@ -133,7 +133,7 @@ jstring JniString::java_string() { return static_cast(java_object()); } -std::string JniString::GetText() { +Dart_Handle JniString::GetText() { Dart_Handle exception = nullptr; { ENTER_JNI(); @@ -144,7 +144,7 @@ std::string JniString::GetText() { const jchar* chars = env->GetStringChars(java_string(), NULL); if (CheckJniException(env, &exception)) goto fail; - std::string result(reinterpret_cast(chars), length); + Dart_Handle result = Dart_NewStringFromUTF16(chars, length); env->ReleaseStringChars(java_string(), chars); return result; @@ -152,7 +152,7 @@ std::string JniString::GetText() { fail: Dart_ThrowException(exception); ASSERT_NOT_REACHED(); - return std::string(); + return Dart_Null(); } } // namespace blink diff --git a/sky/engine/bindings/jni/jni_object.h b/sky/engine/bindings/jni/jni_object.h index c4c89d3847d..f28b2ec8869 100644 --- a/sky/engine/bindings/jni/jni_object.h +++ b/sky/engine/bindings/jni/jni_object.h @@ -48,7 +48,7 @@ class JniString : public JniObject { public: ~JniString() override; - std::string GetText(); + Dart_Handle GetText(); private: JniString(JNIEnv* env, jstring string);