Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit cefd74bb authored by Dorin Drimus's avatar Dorin Drimus Committed by Cherrypicker Worker
Browse files

Use local status for convert profile

When converting and filtering the list of audio profile from native to Java, if we reuse the global jStatus for the profiles loop, a wrong value for the last element can propagate as the global return value. Using a local status fixes the issue.

Bug: 246759253
Change-Id: Ifd2bd3cb2b2252c08055c95375fe499e3f23ce02
Test:  atest DirectAudioProfilesForAttributesTest
(cherry picked from commit 4469c2a0)
Merged-In: Ifd2bd3cb2b2252c08055c95375fe499e3f23ce02
parent d5d35fb2
Loading
Loading
Loading
Loading
+5 −4
Original line number Diff line number Diff line
@@ -2937,13 +2937,14 @@ static jint android_media_AudioSystem_getDirectProfilesForAttributes(JNIEnv *env

    for (const auto &audioProfile : audioProfiles) {
        jobject jAudioProfile;
        jStatus = convertAudioProfileFromNative(env, &jAudioProfile, &audioProfile, false);
        if (jStatus == AUDIO_JAVA_BAD_VALUE) {
        jint jConvertProfileStatus = convertAudioProfileFromNative(
                                        env, &jAudioProfile, &audioProfile, false);
        if (jConvertProfileStatus == AUDIO_JAVA_BAD_VALUE) {
            // skipping Java layer unsupported audio formats
            continue;
        }
        if (jStatus != AUDIO_JAVA_SUCCESS) {
            return jStatus;
        if (jConvertProfileStatus != AUDIO_JAVA_SUCCESS) {
            return jConvertProfileStatus;
        }
        env->CallBooleanMethod(jAudioProfilesList, gArrayListMethods.add, jAudioProfile);
        env->DeleteLocalRef(jAudioProfile);