diff options
author | Alex Blasche <alexander.blasche@digia.com> | 2014-03-25 16:20:17 +0100 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2014-04-02 11:05:56 +0200 |
commit | 330e42bbfdb361e2edee68cf04e0f4bb08264ab1 (patch) | |
tree | cfca37a627feb0684d405c872540f55d2f747046 /src/plugins/position/android/src | |
parent | a13d8e8862402a144ace00e409341185783927df (diff) | |
download | qtlocation-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>
Diffstat (limited to 'src/plugins/position/android/src')
-rw-r--r-- | src/plugins/position/android/src/jnipositioning.cpp | 8 |
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) |