summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author“osana” <osana.babayan@mapbox.com>2018-02-16 09:11:42 -0500
committer“osana” <osana.babayan@mapbox.com>2018-02-19 12:44:53 -0500
commit94661d6fbb0191d9127d4fa8d94945b2d9b05833 (patch)
tree45d2f43bed212a84c32ed7cce09ddac1a0cde7b1
parent4be4b4bfed627d6461ebabe581b63dd555516900 (diff)
downloadqtlocation-mapboxgl-upstream/osana-DelLocalRef-11212-boba.tar.gz
[android] missing DeleteLocalRefupstream/osana-DelLocalRef-11212-boba
-rw-r--r--platform/android/src/geojson/feature_collection.cpp24
-rw-r--r--platform/android/src/geojson/line_string.cpp3
-rw-r--r--platform/android/src/geojson/multi_polygon.cpp2
-rw-r--r--platform/android/src/geojson/point.cpp25
4 files changed, 33 insertions, 21 deletions
diff --git a/platform/android/src/geojson/feature_collection.cpp b/platform/android/src/geojson/feature_collection.cpp
index 59f1e317e6..18a41d48fa 100644
--- a/platform/android/src/geojson/feature_collection.cpp
+++ b/platform/android/src/geojson/feature_collection.cpp
@@ -7,19 +7,23 @@ namespace android {
namespace geojson {
mbgl::FeatureCollection FeatureCollection::convert(jni::JNIEnv& env, jni::Object<FeatureCollection> jCollection) {
- auto jFeatureList = FeatureCollection::features(env, jCollection);
- auto jFeatures = java::util::List::toArray<Feature>(env, jFeatureList);
- auto size = size_t(jFeatures.Length(env));
-
auto collection = mbgl::FeatureCollection();
- collection.reserve(size);
- for (size_t i = 0; i < size; i++) {
- auto jFeature = jFeatures.Get(env, i);
- collection.push_back(Feature::convert(env, jFeature));
- jni::DeleteLocalRef(env, jFeature);
- }
+ if (jCollection) {
+ auto jFeatureList = FeatureCollection::features(env, jCollection);
+ auto jFeatures = java::util::List::toArray<Feature>(env, jFeatureList);
+ auto size = size_t(jFeatures.Length(env));
+ collection.reserve(size);
+ for (size_t i = 0; i < size; i++) {
+ auto jFeature = jFeatures.Get(env, i);
+ collection.push_back(Feature::convert(env, jFeature));
+ jni::DeleteLocalRef(env, jFeature);
+ }
+
+ jni::DeleteLocalRef(env, jFeatures);
+ jni::DeleteLocalRef(env, jFeatureList);
+ }
return collection;
}
diff --git a/platform/android/src/geojson/line_string.cpp b/platform/android/src/geojson/line_string.cpp
index 9e99c72c4c..8eebd53550 100644
--- a/platform/android/src/geojson/line_string.cpp
+++ b/platform/android/src/geojson/line_string.cpp
@@ -23,8 +23,9 @@ mapbox::geojson::line_string LineString::convert(jni::JNIEnv &env, jni::Object<j
if (jPointList) {
auto jPointArray = java::util::List::toArray<Point>(env, jPointList);
-
auto size = jPointArray.Length(env);
+ lineString.reserve(size);
+
for (std::size_t i = 0; i < size; i++) {
auto jPoint = jPointArray.Get(env, i);
lineString.push_back(Point::convert(env, jPoint));
diff --git a/platform/android/src/geojson/multi_polygon.cpp b/platform/android/src/geojson/multi_polygon.cpp
index f4eb0f6b2a..aadba8c8a6 100644
--- a/platform/android/src/geojson/multi_polygon.cpp
+++ b/platform/android/src/geojson/multi_polygon.cpp
@@ -22,8 +22,8 @@ mapbox::geojson::multi_polygon MultiPolygon::convert(jni::JNIEnv &env, jni::Obje
jni::DeleteLocalRef(env, jPositionListsList);
}
- jni::DeleteLocalRef(env, jPointListsListList);
jni::DeleteLocalRef(env, jPointListsListArray);
+ jni::DeleteLocalRef(env, jPointListsListList);
}
return multiPolygon;
diff --git a/platform/android/src/geojson/point.cpp b/platform/android/src/geojson/point.cpp
index 5feb1b8521..e95376cd2e 100644
--- a/platform/android/src/geojson/point.cpp
+++ b/platform/android/src/geojson/point.cpp
@@ -1,6 +1,7 @@
#include "point.hpp"
#include "../java/util.hpp"
#include "../java_types.hpp"
+#include "../style/value.hpp"
namespace mbgl {
namespace android {
@@ -19,17 +20,23 @@ mapbox::geojson::point Point::convert(jni::JNIEnv &env, jni::Object<Point> jPoin
}
mapbox::geojson::point Point::convert(jni::JNIEnv &env, jni::Object<java::util::List/*<Double>*/> jDoubleList) {
- auto jDoubleArray = java::util::List::toArray<double>(env, jDoubleList);
+ mapbox::geojson::point point;
+
+ if (jDoubleList) {
+ auto jDoubleArray = java::util::List::toArray<jobject>(env, jDoubleList);
- jni::jdouble lon = jni::CallMethod<jni::jdouble>(env,
- jDoubleArray.Get(env, 0),
- *java::Number::doubleValueMethodId);
- jni::jdouble lat = jni::CallMethod<jni::jdouble>(env,
- jDoubleArray.Get(env, 1),
- *java::Number::doubleValueMethodId);
- mapbox::geojson::point point(lon, lat);
- jni::DeleteLocalRef(env, jDoubleArray);
+ auto lonObject = jDoubleArray.Get(env, 0);
+ auto latObject = jDoubleArray.Get(env, 1);
+ point.x = jni::CallMethod<jni::jdouble>(env, lonObject,
+ *java::Number::doubleValueMethodId);
+ point.y = jni::CallMethod<jni::jdouble>(env, latObject,
+ *java::Number::doubleValueMethodId);
+
+ jni::DeleteLocalRef(env, lonObject);
+ jni::DeleteLocalRef(env, latObject);
+ jni::DeleteLocalRef(env, jDoubleArray);
+ }
return point;
}