From b250bcdf06745f4fa23555a94a91c250f7183fe1 Mon Sep 17 00:00:00 2001 From: David Reid Date: Sat, 14 Jul 2018 00:21:17 +0000 Subject: [PATCH] ALSA: Fix a potential infinite loop in MMAP mode. --- mini_al.h | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/mini_al.h b/mini_al.h index 03144f1d..1f63bedb 100644 --- a/mini_al.h +++ b/mini_al.h @@ -9746,7 +9746,6 @@ mal_bool32 mal_device_write__alsa(mal_device* pDevice) return MAL_FALSE; } - if (pDevice->alsa.isUsingMMap) { // mmap. mal_bool32 requiresRestart; @@ -9786,7 +9785,11 @@ mal_bool32 mal_device_write__alsa(mal_device* pDevice) } } - framesAvailable -= mappedFrames; + if (framesAvailable >= mappedFrames) { + framesAvailable -= mappedFrames; + } else { + framesAvailable = 0; + } } } else { // readi/writei. @@ -9880,7 +9883,11 @@ mal_bool32 mal_device_read__alsa(mal_device* pDevice) } } - framesAvailable -= mappedFrames; + if (framesAvailable >= mappedFrames) { + framesAvailable -= mappedFrames; + } else { + framesAvailable = 0; + } } } else { // readi/writei.