@@ -312,7 +312,6 @@ void registerNativeCallback(void *target, char* targetName, char *funName, void
312
312
jobject callbackOJ = getEnv ()->NewGlobalRef (getEnv ()->CallStaticObjectMethodA (callbackManager, registerCallback, argValues));
313
313
callbackObjCache[target] = callbackOJ;
314
314
targetCache[targetAddr] = target;
315
- NSLog (" HUIZZ dartport %d" , dartPort);
316
315
dartPortCache[targetAddr] = dartPort;
317
316
318
317
registerCallbackManager (targetAddr, funName, callback);
@@ -419,11 +418,16 @@ JNIEXPORT jobject JNICALL Java_com_dartnative_dart_1native_CallbackInvocationHan
419
418
}
420
419
else if (strcmp (argTypes[i], " Ljava/lang/String;" ) == 0 ) {
421
420
jstring argString = (jstring) argument;
422
- arguments[i] = (char *) env->GetStringUTFChars (argString, 0 );
421
+ arguments[i] = argString == nullptr ? (char *) " "
422
+ : (char *) env->GetStringUTFChars (argString, 0 );
423
423
env->DeleteLocalRef (argString);
424
424
}
425
425
}
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
+
427
431
argTypes[argTypeLength] = returnType;
428
432
429
433
sem_t sem;
@@ -452,7 +456,8 @@ JNIEXPORT jobject JNICALL Java_com_dartnative_dart_1native_CallbackInvocationHan
452
456
if (returnType == nullptr ) {
453
457
NSLog (" void" );
454
458
} 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 ]);
456
461
} else if (strcmp (returnType, " Z" ) == 0 ) {
457
462
jclass booleanClass = env->FindClass (" java/lang/Boolean" );
458
463
jmethodID methodID = env->GetMethodID (booleanClass, " <init>" , " (Z)V" );
0 commit comments