Commit fcbf19b764a9f6fed1db6a1d79a2f2f3fa1338d6

Sylvain 2021-04-28T21:04:47

AAudio: make sure stream is not null to prevent crash in RequestStop (see #3710)

diff --git a/src/audio/aaudio/SDL_aaudio.c b/src/audio/aaudio/SDL_aaudio.c
index f6f265e..b9cad6b 100644
--- a/src/audio/aaudio/SDL_aaudio.c
+++ b/src/audio/aaudio/SDL_aaudio.c
@@ -165,18 +165,20 @@ aaudio_CloseDevice(_THIS)
     aaudio_result_t res;
     LOGI(__func__);
 
-    res = ctx.AAudioStream_requestStop(private->stream);
-    if (res != AAUDIO_OK) {
-        LOGI("SDL Failed AAudioStream_requestStop %d", res);
-        SDL_SetError("%s : %s", __func__, ctx.AAudio_convertResultToText(res));
-        return;
-    }
+    if (private->stream) {
+        res = ctx.AAudioStream_requestStop(private->stream);
+        if (res != AAUDIO_OK) {
+            LOGI("SDL Failed AAudioStream_requestStop %d", res);
+            SDL_SetError("%s : %s", __func__, ctx.AAudio_convertResultToText(res));
+            return;
+        }
 
-    res = ctx.AAudioStream_close(private->stream);
-    if (res != AAUDIO_OK) {
-        LOGI("SDL Failed AAudioStreamBuilder_delete %d", res);
-        SDL_SetError("%s : %s", __func__, ctx.AAudio_convertResultToText(res));
-        return;
+        res = ctx.AAudioStream_close(private->stream);
+        if (res != AAUDIO_OK) {
+            LOGI("SDL Failed AAudioStreamBuilder_delete %d", res);
+            SDL_SetError("%s : %s", __func__, ctx.AAudio_convertResultToText(res));
+            return;
+        }
     }
 
     if (this->iscapture) {