Skip to content
This repository was archived by the owner on Aug 31, 2021. It is now read-only.

Commit dbddcd9

Browse files
HedgeHaorunrevmark
authored andcommitted
Add 't' string format for android
1 parent b2dbd98 commit dbddcd9

File tree

3 files changed

+32
-5
lines changed

3 files changed

+32
-5
lines changed

engine/src/mblandroidjava.cpp

Lines changed: 30 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -495,12 +495,23 @@ bool MCJavaStringFromNative(JNIEnv *env, const char *p_string, jstring &r_java_s
495495
}
496496
else
497497
{
498-
// HH-2017-04-22 [[ Bug 19609 ]]: Convert cstring to Java UTF string directly
499-
r_java_string = env->NewStringUTF(p_string);
500-
return true;
498+
MCString t_mcstring(p_string);
499+
return MCJavaStringFromNative(env, &t_mcstring, r_java_string);
501500
}
502501
}
503502

503+
bool MCJavaStringFromNativeUTF8(JNIEnv *env, const char *p_string, jstring &r_java_string)
504+
{
505+
if (p_string == nil)
506+
{
507+
r_java_string = nil;
508+
return true;
509+
}
510+
else
511+
{
512+
return nil != (r_java_string = env->NewStringUTF(p_string));
513+
}
514+
}
504515
bool MCJavaStringFromUnicode(JNIEnv *env, const MCString *p_string, jstring &r_java_string)
505516
{
506517
if (p_string == nil)
@@ -1404,6 +1415,8 @@ static MCJavaType native_sigchar_to_returntype(char p_sigchar)
14041415
return kMCJavaTypeVoid;
14051416
case 's':
14061417
return kMCJavaTypeCString;
1418+
case 't':
1419+
return kMCJavaTypeUtf8CString;
14071420
case 'S':
14081421
return kMCJavaTypeMCString;
14091422
case 'U':
@@ -1449,6 +1462,7 @@ static const char *return_type_to_java_sig(MCJavaType p_type)
14491462
case kMCJavaTypeBoolean: // boolean
14501463
return "Z";
14511464
case kMCJavaTypeCString: // string from char *
1465+
case kMCJavaTypeUtf8CString: // string from utf8 char *
14521466
case kMCJavaTypeMCString: // string from MCString *
14531467
case kMCJavaTypeMCStringUnicode: // string from utf16 MCString *
14541468
case kMCJavaTypeMCStringRef: // string from MCStringRef
@@ -1702,11 +1716,23 @@ bool MCJavaConvertParameters(JNIEnv *env, const char *p_signature, va_list p_arg
17021716
case kMCJavaTypeCString:
17031717
{
17041718
t_cstring = va_arg(p_args, const char *);
1705-
1719+
17061720
t_success = MCJavaStringFromNative(env, t_cstring, t_java_string);
17071721
if (t_success)
17081722
t_value . l = t_java_string;
17091723

1724+
t_delete = true;
1725+
t_object = true;
1726+
}
1727+
break;
1728+
case kMCJavaTypeUtf8CString:
1729+
{
1730+
t_cstring = va_arg(p_args, const char *);
1731+
1732+
t_success = MCJavaStringFromNativeUTF8(env, t_cstring, t_java_string);
1733+
if (t_success)
1734+
t_value . l = t_java_string;
1735+
17101736
t_delete = true;
17111737
t_object = true;
17121738
}

engine/src/mblandroidjava.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ typedef enum
4040

4141
// specialized return types
4242
kMCJavaTypeCString,
43+
kMCJavaTypeUtf8CString,
4344
kMCJavaTypeMCString,
4445
kMCJavaTypeMCStringUnicode,
4546
kMCJavaTypeMCStringRef,

libbrowser/src/libbrowser_android.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -793,7 +793,7 @@ class MCAndroidWebViewBrowser : public MCBrowserBase
793793

794794
bool SetHTMLText(const char *p_utf8_string)
795795
{
796-
MCAndroidObjectRemoteCall(m_view, "loadHtml", "vss", nil, LIBBROWSER_DUMMY_URL, p_utf8_string);
796+
MCAndroidObjectRemoteCall(m_view, "loadHtml", "vst", nil, LIBBROWSER_DUMMY_URL, p_utf8_string);
797797
return true;
798798
}
799799

0 commit comments

Comments
 (0)