From 330e42bbfdb361e2edee68cf04e0f4bb08264ab1 Mon Sep 17 00:00:00 2001 From: Alex Blasche Date: Tue, 25 Mar 2014 16:20:17 +0100 Subject: Android: Fix crashes due to insufficient resource cleanups Task-number: QTBUG-37789 Change-Id: I9971fd1e9e63dedbbfe86e567e701bab688cf144 Reviewed-by: Christian Stromme Reviewed-by: Alex Blasche --- src/plugins/position/android/src/jnipositioning.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/plugins/position/android/src/jnipositioning.cpp b/src/plugins/position/android/src/jnipositioning.cpp index 6b49b9fe..afae1c8e 100644 --- a/src/plugins/position/android/src/jnipositioning.cpp +++ b/src/plugins/position/android/src/jnipositioning.cpp @@ -167,7 +167,9 @@ namespace AndroidPositioning { __android_log_print(ANDROID_LOG_INFO, logTag, "Unknown positioningMethod"); } } + env.jniEnv->ReleaseIntArrayElements(jProviders, providers, 0); + env.jniEnv->DeleteLocalRef(jProviders); return ret; } @@ -261,6 +263,7 @@ namespace AndroidPositioning { info.setAttribute(QGeoPositionInfo::Direction, bearing); } + jniEnv->DeleteLocalRef(thisClass); return info; } @@ -340,7 +343,10 @@ namespace AndroidPositioning { if (location == 0) return QGeoPositionInfo(); - return positionInfoFromJavaLocation(env.jniEnv, location); + const QGeoPositionInfo info = positionInfoFromJavaLocation(env.jniEnv, location); + env.jniEnv->DeleteLocalRef(location); + + return info; } inline int positioningMethodToInt(QGeoPositionInfoSource::PositioningMethods m) -- cgit v1.2.3