Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mapsme/omim.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArsentiy Milchakov <milcars@mapswithme.com>2017-05-10 17:42:57 +0300
committerGitHub <noreply@github.com>2017-05-10 17:42:57 +0300
commitc196052ce879b1d1729040add04c1385276821ad (patch)
treeb262f344d3646790c085a626d22e5c5b15359e3e
parentbd4df1fbfca63e7c3a4a17801d3e411cdf1bd70d (diff)
parentecfeac34c09c12b19acba49d478ba3af00014abc (diff)
Merge pull request #6025 from alexzatsepin/MAPSME-4457-local-refs-table-overflowbeta-798
[android] Fixed local references overflow in HttpClient while vieport…
-rw-r--r--android/jni/com/mapswithme/util/HttpClient.cpp27
1 files changed, 13 insertions, 14 deletions
diff --git a/android/jni/com/mapswithme/util/HttpClient.cpp b/android/jni/com/mapswithme/util/HttpClient.cpp
index 49e71dbff3..05870ac83b 100644
--- a/android/jni/com/mapswithme/util/HttpClient.cpp
+++ b/android/jni/com/mapswithme/util/HttpClient.cpp
@@ -105,14 +105,15 @@ void SetHeaders(ScopedEnv & env, jobject const params,
RethrowOnJniException(env);
using HeaderPair = unordered_map<string, string>::value_type;
- env->CallVoidMethod(
- params, setHeaders,
- jni::ToJavaArray(env.get(), g_httpHeaderClazz, headers, [](JNIEnv * env,
- HeaderPair const & item) {
- return env->NewObject(g_httpHeaderClazz, headerInit,
- jni::TScopedLocalRef(env, jni::ToJavaString(env, item.first)).get(),
- jni::TScopedLocalRef(env, jni::ToJavaString(env, item.second)).get());
- }));
+ auto headerFunc = [](JNIEnv * env, HeaderPair const & item)
+ {
+ jni::TScopedLocalRef first(env, jni::ToJavaString(env, item.first));
+ jni::TScopedLocalRef second(env, jni::ToJavaString(env, item.second));
+ return env->NewObject(g_httpHeaderClazz, headerInit, first.get(), second.get());
+ };
+ jni::TScopedLocalObjectArrayRef jHeaders(env.get(), jni::ToJavaArray(env.get(), g_httpHeaderClazz,
+ headers, headerFunc));
+ env->CallVoidMethod(params, setHeaders, jHeaders.get());
RethrowOnJniException(env);
}
@@ -243,17 +244,15 @@ bool HttpClient::RunHttpRequest()
env->GetStaticMethodID(g_httpClientClazz, "run",
"(Lcom/mapswithme/util/HttpClient$Params;)Lcom/mapswithme/util/HttpClient$Params;");
- // Current Java implementation simply reuses input params instance, so we don't need to
- // call DeleteLocalRef(response).
- jobject const response =
- env->CallStaticObjectMethod(g_httpClientClazz, httpClientClassRun, httpParamsObject.get());
+ jni::ScopedLocalRef<jobject> const response(env.get(), env->CallStaticObjectMethod(g_httpClientClazz,
+ httpClientClassRun, httpParamsObject.get()));
if (jni::HandleJavaException(env.get()))
return false;
try
{
- GetInt(env, response, ids.GetId("httpResponseCode"), m_errorCode);
- GetString(env, response, ids.GetId("receivedUrl"), m_urlReceived);
+ GetInt(env, response.get(), ids.GetId("httpResponseCode"), m_errorCode);
+ GetString(env, response.get(), ids.GetId("receivedUrl"), m_urlReceived);
::LoadHeaders(env, httpParamsObject.get(), m_headers);
}
catch (JniException const & ex)