From d23511c25c22fc47c54da28854034c5fbc143e33 Mon Sep 17 00:00:00 2001 From: Mary Date: Sun, 18 Apr 2021 02:20:06 +0200 Subject: [PATCH] Amadeus: Allow out of bound read on empty delay lines (#2223) This allows to handle an OOB with delay lines when DelayTimeMax = 0. On real hardware, it will end up reading garbage at the given user work buffer address. As we do not use those buffers and allocate them ourself for simplicy, this could possibly cause a crash. Proposed solution here is to only increase the size of _workBuffer by one like what is done in DelayLineReverb3d already. This fixes FEZ. (Ryujinx/Ryujinx-Games-List#3526) --- Ryujinx.Audio/Renderer/Dsp/Effect/DelayLine.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Ryujinx.Audio/Renderer/Dsp/Effect/DelayLine.cs b/Ryujinx.Audio/Renderer/Dsp/Effect/DelayLine.cs index d178e6993..1774f5428 100644 --- a/Ryujinx.Audio/Renderer/Dsp/Effect/DelayLine.cs +++ b/Ryujinx.Audio/Renderer/Dsp/Effect/DelayLine.cs @@ -33,7 +33,7 @@ namespace Ryujinx.Audio.Renderer.Dsp.Effect { _sampleRate = sampleRate; SampleCountMax = IDelayLine.GetSampleCount(_sampleRate, delayTimeMax); - _workBuffer = new float[SampleCountMax]; + _workBuffer = new float[SampleCountMax + 1]; SetDelay(delayTimeMax); }