From 6999ec4604b4a439badaaafcc6545ae6039dacfb Mon Sep 17 00:00:00 2001 From: levlam Date: Tue, 31 Jul 2018 15:10:50 +0300 Subject: [PATCH] Fix lost updates in Java example. GitOrigin-RevId: 9081b015baed288ee7a901c89d4bdf4933aaf6d8 --- example/java/td_jni.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/example/java/td_jni.cpp b/example/java/td_jni.cpp index b9ba74a402b0..e1acfe69d811 100644 --- a/example/java/td_jni.cpp +++ b/example/java/td_jni.cpp @@ -42,10 +42,13 @@ static jint Client_nativeClientReceive(JNIEnv *env, jclass clazz, jlong client_i jdouble timeout) { auto client = get_client(client_id); jsize events_size = env->GetArrayLength(ids); // ids and events size must be of equal size + if (events_size == 0) { + return 0; + } jsize result_size = 0; auto response = client->receive(timeout); - while (response.object && result_size < events_size) { + while (response.object) { jlong result_id = static_cast(response.id); env->SetLongArrayRegion(ids, result_size, 1, &result_id); @@ -55,6 +58,10 @@ static jint Client_nativeClientReceive(JNIEnv *env, jclass clazz, jlong client_i env->DeleteLocalRef(object); result_size++; + if (result_size == events_size) { + break; + } + response = client->receive(0); } return result_size;