vlc | branch: master | Thomas Guillem <[email protected]> | Tue Nov 14 14:32:58 
2017 +0100| [fd09bcfd9b8b32fbe0fb98d2899068229fda17e2] | committer: Thomas 
Guillem

mmdevice: fix assert/UB when changing volume without any devices

If there is no audio devices, Open() will succeed but MMSession() will fail.
Then, MMThread() will wait for any events in order to call MMSession() again.
In that case, don't try to call MMsession() without a valid device when volume
or mute is changed from the user.

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

 modules/audio_output/mmdevice.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/modules/audio_output/mmdevice.c b/modules/audio_output/mmdevice.c
index 4f32cf0ea8..b6d116622e 100644
--- a/modules/audio_output/mmdevice.c
+++ b/modules/audio_output/mmdevice.c
@@ -1037,7 +1037,7 @@ static void *MMThread(void *data)
     EnterCriticalSection(&sys->lock);
 
     do
-        if (FAILED(MMSession(aout, it)))
+        if (sys->requested_device == NULL || FAILED(MMSession(aout, it)))
             SleepConditionVariableCS(&sys->work, &sys->lock, INFINITE);
     while (sys->it != NULL);
 

_______________________________________________
vlc-commits mailing list
[email protected]
https://mailman.videolan.org/listinfo/vlc-commits

Reply via email to