mirror of
https://gitlab.linphone.org/BC/public/linphone-iphone.git
synced 2026-01-31 10:19:23 +00:00
prevent a crash if the chat message listener is destroyed.
This commit is contained in:
parent
8a7cfe66d6
commit
caa0ce6109
1 changed files with 6 additions and 0 deletions
|
|
@ -3276,6 +3276,11 @@ static void message_state_changed(LinphoneChatMessage* msg, LinphoneChatMessageS
|
|||
}
|
||||
|
||||
jobject listener = (jobject) msg->message_state_changed_user_data;
|
||||
|
||||
if (listener == NULL) {
|
||||
ms_error("message_state_changed() notification without listener");
|
||||
return ;
|
||||
}
|
||||
jclass clazz = (jclass) env->GetObjectClass(listener);
|
||||
jmethodID method = env->GetMethodID(clazz, "onLinphoneChatMessageStateChanged","(Lorg/linphone/core/LinphoneChatMessage;Lorg/linphone/core/LinphoneChatMessage$State;)V");
|
||||
jobject jmessage = getChatMessage(env, msg);
|
||||
|
|
@ -3287,6 +3292,7 @@ static void message_state_changed(LinphoneChatMessage* msg, LinphoneChatMessageS
|
|||
|
||||
if (state == LinphoneChatMessageStateDelivered || state == LinphoneChatMessageStateNotDelivered) {
|
||||
env->DeleteGlobalRef(listener);
|
||||
msg->message_state_changed_user_data = NULL;
|
||||
}
|
||||
env->DeleteLocalRef(chatMessageStateClass);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue