diff --git a/app/src/main/cpp/MicroPhoto.cpp b/app/src/main/cpp/MicroPhoto.cpp index 652222ff..7077c5cd 100644 --- a/app/src/main/cpp/MicroPhoto.cpp +++ b/app/src/main/cpp/MicroPhoto.cpp @@ -299,11 +299,11 @@ Java_com_xypower_mpapp_MicroPhotoService_init( env->SetObjectField(pThis, fieldId, modelName); bool udpOrTcp = (networkProtocol != 0); // 0: tcp - const char *appPathStr = env->GetStringUTFChars(appPath, 0); - const char *ipStr = env->GetStringUTFChars(ip, 0); - const char *cmdidStr = env->GetStringUTFChars(cmdid, 0); - const char *simcardStr = env->GetStringUTFChars(simcard, 0); - const char *tfCardPathStr = env->GetStringUTFChars(tfCardPath, 0); + const char *appPathStr = appPath == NULL ? NULL : env->GetStringUTFChars(appPath, 0); + const char *ipStr = ip == NULL ? NULL : env->GetStringUTFChars(ip, 0); + const char *cmdidStr = cmdid == NULL ? NULL : env->GetStringUTFChars(cmdid, 0); + const char *simcardStr = simcard == NULL ? NULL : env->GetStringUTFChars(simcard, 0); + const char *tfCardPathStr = tfCardPath == NULL ? NULL : env->GetStringUTFChars(tfCardPath, 0); JavaVM* vm = NULL; jint ret = env->GetJavaVM(&vm); @@ -314,25 +314,25 @@ Java_com_xypower_mpapp_MicroPhotoService_init( CTerminal* pTerminal = NewTerminal(protocol); - CPhoneDevice* device = new CPhoneDevice(vm, pThis, appPathStr, NETID_UNSET, versionCode); + CPhoneDevice* device = new CPhoneDevice(vm, pThis, MakeString(appPathStr), NETID_UNSET, versionCode); device->SetListener(pTerminal); device->UpdateSignalLevel(signalLevel); device->SetBuildTime(buildTime / 1000); - device->UpdateSimcard(simcardStr); - device->UpdateTfCardPath(tfCardPathStr == NULL ? "" : std::string(tfCardPathStr)); + device->UpdateSimcard(MakeString(simcardStr)); + device->UpdateTfCardPath(MakeString(tfCardPathStr)); - pTerminal->InitServerInfo(appPathStr, cmdidStr, ipStr, port, udpOrTcp, encryptData); + pTerminal->InitServerInfo(MakeString(appPathStr), MakeString(cmdidStr), MakeString(ipStr), port, udpOrTcp, encryptData); // pTerminal->SetPacketSize(1 * 1024); // 1K #ifdef USING_NRSEC pTerminal->InitEncryptionInfo(simcardStr, "/dev/spidev0.0", ""); #endif bool res = pTerminal->Startup(device); - env->ReleaseStringUTFChars(appPath, appPathStr); - env->ReleaseStringUTFChars(ip, ipStr); - env->ReleaseStringUTFChars(cmdid, cmdidStr); - env->ReleaseStringUTFChars(simcard, simcardStr); - env->ReleaseStringUTFChars(tfCardPath, tfCardPathStr); + if (appPathStr != NULL) env->ReleaseStringUTFChars(appPath, appPathStr); + if (ipStr != NULL) env->ReleaseStringUTFChars(ip, ipStr); + if (cmdidStr != NULL) env->ReleaseStringUTFChars(cmdid, cmdidStr); + if (simcardStr != NULL) env->ReleaseStringUTFChars(simcard, simcardStr); + if (tfCardPathStr != NULL) env->ReleaseStringUTFChars(tfCardPath, tfCardPathStr); if (!res) {