@@ -26,26 +26,28 @@ Java_network_loki_messenger_libsession_1util_ConfigBase_needsDump(JNIEnv *env, j
26
26
27
27
JNIEXPORT jobject JNICALL
28
28
Java_network_loki_messenger_libsession_1util_ConfigBase_push (JNIEnv *env, jobject thiz) {
29
- std::lock_guard lock{util::util_mutex_};
30
- auto config = ptrToConfigBase (env, thiz);
31
- auto push_tuple = config->push ();
32
- auto to_push_str = std::get<1 >(push_tuple);
33
- auto to_delete = std::get<2 >(push_tuple);
29
+ return jni_utils::run_catching_cxx_exception_or_throws<jobject>(env, [=] {
30
+ std::lock_guard lock{util::util_mutex_};
31
+ auto config = ptrToConfigBase (env, thiz);
32
+ auto push_tuple = config->push ();
33
+ auto to_push_str = std::get<1 >(push_tuple);
34
+ auto to_delete = std::get<2 >(push_tuple);
34
35
35
- jbyteArray returnByteArray = util::bytes_from_vector (env, to_push_str);
36
- jlong seqNo = std::get<0 >(push_tuple);
37
- jclass returnObjectClass = env->FindClass (" network/loki/messenger/libsession_util/util/ConfigPush" );
38
- jclass stackClass = env->FindClass (" java/util/Stack" );
39
- jmethodID methodId = env->GetMethodID (returnObjectClass, " <init>" , " ([BJLjava/util/List;)V" );
40
- jmethodID stack_init = env->GetMethodID (stackClass, " <init>" , " ()V" );
41
- jobject our_stack = env->NewObject (stackClass, stack_init);
42
- jmethodID push_stack = env->GetMethodID (stackClass, " push" , " (Ljava/lang/Object;)Ljava/lang/Object;" );
43
- for (auto entry : to_delete) {
44
- auto entry_jstring = env->NewStringUTF (entry.data ());
45
- env->CallObjectMethod (our_stack, push_stack, entry_jstring);
46
- }
47
- jobject returnObject = env->NewObject (returnObjectClass, methodId, returnByteArray, seqNo, our_stack);
48
- return returnObject;
36
+ jbyteArray returnByteArray = util::bytes_from_vector (env, to_push_str);
37
+ jlong seqNo = std::get<0 >(push_tuple);
38
+ jclass returnObjectClass = env->FindClass (" network/loki/messenger/libsession_util/util/ConfigPush" );
39
+ jclass stackClass = env->FindClass (" java/util/Stack" );
40
+ jmethodID methodId = env->GetMethodID (returnObjectClass, " <init>" , " ([BJLjava/util/List;)V" );
41
+ jmethodID stack_init = env->GetMethodID (stackClass, " <init>" , " ()V" );
42
+ jobject our_stack = env->NewObject (stackClass, stack_init);
43
+ jmethodID push_stack = env->GetMethodID (stackClass, " push" , " (Ljava/lang/Object;)Ljava/lang/Object;" );
44
+ for (auto entry : to_delete) {
45
+ auto entry_jstring = env->NewStringUTF (entry.data ());
46
+ env->CallObjectMethod (our_stack, push_stack, entry_jstring);
47
+ }
48
+ jobject returnObject = env->NewObject (returnObjectClass, methodId, returnByteArray, seqNo, our_stack);
49
+ return returnObject;
50
+ });
49
51
}
50
52
51
53
JNIEXPORT void JNICALL
0 commit comments