[vlc-commits] mmdevice: fix crash when all devices are removed during playback

Thomas Guillem git at videolan.org
Tue Apr 17 19:24:19 CEST 2018


vlc | branch: master | Thomas Guillem <thomas at gllm.fr> | Tue Apr 17 18:44:02 2018 +0200| [f80de9d8983892e84d6bc032fef2c787c22aa65a] | committer: Thomas Guillem

mmdevice: fix crash when all devices are removed during playback

Check the return value of the DeviceRestartLocked() function (returns 0 if
sys->dev is valid).

> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=f80de9d8983892e84d6bc032fef2c787c22aa65a
---

 modules/audio_output/mmdevice.c | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/modules/audio_output/mmdevice.c b/modules/audio_output/mmdevice.c
index aa48a3164c..1e88f0f1f2 100644
--- a/modules/audio_output/mmdevice.c
+++ b/modules/audio_output/mmdevice.c
@@ -1147,8 +1147,13 @@ static int Start(audio_output_t *aout, audio_sample_format_t *restrict fmt)
     EnterMTA();
     EnterCriticalSection(&sys->lock);
 
-    if (sys->request_device_restart)
-        DeviceRestartLocked(aout);
+    if (sys->request_device_restart && DeviceRestartLocked(aout) != 0)
+    {
+        LeaveCriticalSection(&sys->lock);
+        LeaveMTA();
+        vlc_object_release(s);
+        return -1;
+    }
 
     for (;;)
     {



More information about the vlc-commits mailing list