summaryrefslogtreecommitdiff
path: root/platform/android/src/conversion/collection.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'platform/android/src/conversion/collection.cpp')
-rw-r--r--platform/android/src/conversion/collection.cpp17
1 files changed, 5 insertions, 12 deletions
diff --git a/platform/android/src/conversion/collection.cpp b/platform/android/src/conversion/collection.cpp
index 6775228e15..3195458aa6 100644
--- a/platform/android/src/conversion/collection.cpp
+++ b/platform/android/src/conversion/collection.cpp
@@ -11,24 +11,17 @@ std::vector<std::string> toVector(JNIEnv& env, jni::Array<jni::String> array) {
vector.reserve(len);
for (std::size_t i = 0; i < len; i++) {
- jni::String jstr = array.Get(env, i);
- vector.push_back(*convert<std::string, jni::String>(env, jstr));
- jni::DeleteLocalRef(env, jstr);
+ vector.push_back(*convert<std::string>(env, *jni::SeizeLocal(env, array.Get(env, i))));
}
return vector;
}
jni::Array<jni::String> toArray(JNIEnv& env, const std::vector<std::string>& vector) {
- static auto clazz = *jni::Class<jni::StringTag>::Find(env).NewGlobalRef(env).release();
- auto result = jni::Array<jni::String>::New(env, vector.size(), clazz);
-
- std::size_t index = 0;
- for (auto&& item : vector) {
- auto element = jni::Make<jni::String>(env, item);
- result.Set(env, index, element);
- DeleteLocalRef(env, element);
- index++;
+ auto result = jni::Array<jni::String>::New(env, vector.size());
+
+ for (std::size_t i = 0; i < vector.size(); i++) {
+ result.Set(env, i, *jni::SeizeLocal(env, jni::Make<jni::String>(env, vector.at(i))));
}
return result;