Skip to content

Commit dd15621

Browse files
committed
Merge branch 'release/0.3.19'
2 parents af97d6e + ad694ba commit dd15621

File tree

4 files changed

+15
-6
lines changed

4 files changed

+15
-6
lines changed

dart_native/CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
## 0.3.19
2+
3+
* [Fix] Some crash on Android.
4+
15
## 0.3.18
26

37
* [Feature] Support multi-isolates.

dart_native/android/src/main/jni/dart_native.cpp

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -312,7 +312,6 @@ void registerNativeCallback(void *target, char* targetName, char *funName, void
312312
jobject callbackOJ = getEnv()->NewGlobalRef(getEnv()->CallStaticObjectMethodA(callbackManager, registerCallback, argValues));
313313
callbackObjCache[target] = callbackOJ;
314314
targetCache[targetAddr] = target;
315-
NSLog("HUIZZ dartport %d", dartPort);
316315
dartPortCache[targetAddr] = dartPort;
317316

318317
registerCallbackManager(targetAddr, funName, callback);
@@ -419,11 +418,16 @@ JNIEXPORT jobject JNICALL Java_com_dartnative_dart_1native_CallbackInvocationHan
419418
}
420419
else if (strcmp(argTypes[i], "Ljava/lang/String;") == 0) {
421420
jstring argString = (jstring) argument;
422-
arguments[i] = (char *) env->GetStringUTFChars(argString, 0);
421+
arguments[i] = argString == nullptr ? (char *) ""
422+
: (char *) env->GetStringUTFChars(argString, 0);
423423
env->DeleteLocalRef(argString);
424424
}
425425
}
426-
char *returnType = (char *) env->GetStringUTFChars(return_type, 0);
426+
427+
/// when return void, jstring which from native is null.
428+
char *returnType = return_type == nullptr ? nullptr
429+
: (char *) env->GetStringUTFChars(return_type, 0);
430+
427431
argTypes[argTypeLength] = returnType;
428432

429433
sem_t sem;
@@ -452,7 +456,8 @@ JNIEXPORT jobject JNICALL Java_com_dartnative_dart_1native_CallbackInvocationHan
452456
if (returnType == nullptr) {
453457
NSLog("void");
454458
} else if (strcmp(returnType, "Ljava/lang/String;") == 0) {
455-
callbackResult = env->NewStringUTF((char *) arguments[0]);
459+
callbackResult = env->NewStringUTF(arguments[0] == nullptr ? (char *) ""
460+
: (char *) arguments[0]);
456461
} else if (strcmp(returnType, "Z") == 0) {
457462
jclass booleanClass = env->FindClass("java/lang/Boolean");
458463
jmethodID methodID = env->GetMethodID(booleanClass, "<init>", "(Z)V");

dart_native/example/pubspec.lock

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -168,7 +168,7 @@ packages:
168168
path: ".."
169169
relative: true
170170
source: path
171-
version: "0.3.18"
171+
version: "0.3.19"
172172
dart_native_gen:
173173
dependency: transitive
174174
description:

dart_native/pubspec.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
name: dart_native
22
description: Write native code using Dart. This package liberates you from native code and low performance channel.
3-
version: 0.3.18
3+
version: 0.3.19
44
homepage: https://github.com/dart-native/dart_native
55

66
environment:

0 commit comments

Comments
 (0)