Merge "Delete JNI Object references created from arrays"
diff --git a/jni/com_android_bluetooth_avrcp_target.cpp b/jni/com_android_bluetooth_avrcp_target.cpp
index 0c721fb..d57d7b4 100644
--- a/jni/com_android_bluetooth_avrcp_target.cpp
+++ b/jni/com_android_bluetooth_avrcp_target.cpp
@@ -330,6 +330,7 @@
const char* value = env->GetStringUTFChars(jstr, nullptr);
info.media_id = std::string(value);
env->ReleaseStringUTFChars(jstr, value);
+ env->DeleteLocalRef(jstr);
}
jstr = (jstring)env->GetObjectField(metadata, field_title);
@@ -338,6 +339,7 @@
info.attributes.insert(
AttributeEntry(Attribute::TITLE, std::string(value)));
env->ReleaseStringUTFChars(jstr, value);
+ env->DeleteLocalRef(jstr);
}
jstr = (jstring)env->GetObjectField(metadata, field_artist);
@@ -346,6 +348,7 @@
info.attributes.insert(
AttributeEntry(Attribute::ARTIST_NAME, std::string(value)));
env->ReleaseStringUTFChars(jstr, value);
+ env->DeleteLocalRef(jstr);
}
jstr = (jstring)env->GetObjectField(metadata, field_album);
@@ -354,6 +357,7 @@
info.attributes.insert(
AttributeEntry(Attribute::ALBUM_NAME, std::string(value)));
env->ReleaseStringUTFChars(jstr, value);
+ env->DeleteLocalRef(jstr);
}
jstr = (jstring)env->GetObjectField(metadata, field_trackNum);
@@ -362,6 +366,7 @@
info.attributes.insert(
AttributeEntry(Attribute::TRACK_NUMBER, std::string(value)));
env->ReleaseStringUTFChars(jstr, value);
+ env->DeleteLocalRef(jstr);
}
jstr = (jstring)env->GetObjectField(metadata, field_numTracks);
@@ -370,6 +375,7 @@
info.attributes.insert(
AttributeEntry(Attribute::TOTAL_NUMBER_OF_TRACKS, std::string(value)));
env->ReleaseStringUTFChars(jstr, value);
+ env->DeleteLocalRef(jstr);
}
jstr = (jstring)env->GetObjectField(metadata, field_genre);
@@ -378,6 +384,7 @@
info.attributes.insert(
AttributeEntry(Attribute::GENRE, std::string(value)));
env->ReleaseStringUTFChars(jstr, value);
+ env->DeleteLocalRef(jstr);
}
jstr = (jstring)env->GetObjectField(metadata, field_playingTime);
@@ -386,6 +393,7 @@
info.attributes.insert(
AttributeEntry(Attribute::PLAYING_TIME, std::string(value)));
env->ReleaseStringUTFChars(jstr, value);
+ env->DeleteLocalRef(jstr);
}
return info;
@@ -495,6 +503,7 @@
for (int i = 0; i < size; i++) {
jobject song = sCallbackEnv->CallObjectMethod(song_list, method_get, i);
ret.push_back(getSongInfoFromJavaObj(sCallbackEnv.get(), song));
+ sCallbackEnv->DeleteLocalRef(song);
}
return ret;
@@ -553,6 +562,7 @@
const char* value = sCallbackEnv->GetStringUTFChars(jstr, nullptr);
temp.name = std::string(value);
sCallbackEnv->ReleaseStringUTFChars(jstr, value);
+ sCallbackEnv->DeleteLocalRef(jstr);
}
temp.browsing_supported =
@@ -561,6 +571,7 @@
: false;
ret_list.push_back(std::move(temp));
+ sCallbackEnv->DeleteLocalRef(player);
}
return ret_list;
@@ -662,6 +673,7 @@
ret_list.push_back(temp);
}
+ env->DeleteLocalRef(item);
}
callback.Run(std::move(ret_list));