summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex Blasche <alexander.blasche@digia.com>2014-03-25 16:20:17 +0100
committerThe Qt Project <gerrit-noreply@qt-project.org>2014-04-02 11:05:56 +0200
commit330e42bbfdb361e2edee68cf04e0f4bb08264ab1 (patch)
treecfca37a627feb0684d405c872540f55d2f747046
parenta13d8e8862402a144ace00e409341185783927df (diff)
downloadqtlocation-330e42bbfdb361e2edee68cf04e0f4bb08264ab1.tar.gz
Android: Fix crashes due to insufficient resource cleanups
Task-number: QTBUG-37789 Change-Id: I9971fd1e9e63dedbbfe86e567e701bab688cf144 Reviewed-by: Christian Stromme <christian.stromme@digia.com> Reviewed-by: Alex Blasche <alexander.blasche@digia.com>
-rw-r--r--src/plugins/position/android/src/jnipositioning.cpp8
1 files changed, 7 insertions, 1 deletions
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)