@@ -26,26 +26,28 @@ Java_network_loki_messenger_libsession_1util_ConfigBase_needsDump(JNIEnv *env, j
2626
2727JNIEXPORT jobject JNICALL
2828Java_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);
3435
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+ });
4951}
5052
5153JNIEXPORT void JNICALL
0 commit comments