瀏覽代碼

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)
Mary 5 年之前
父節點
當前提交
d23511c25c
共有 1 個文件被更改,包括 1 次插入1 次删除
  1. 1 1
      Ryujinx.Audio/Renderer/Dsp/Effect/DelayLine.cs

+ 1 - 1
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);
         }