From: <sv...@op...> - 2024-11-18 22:15:40
|
Author: sagamusix Date: Mon Nov 18 23:15:33 2024 New Revision: 22232 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=22232 Log: [Fix] I3DL2Reverb: Avoid NaNs in room filter calculation. Found with afl++ + ubsan. Modified: trunk/OpenMPT/soundlib/plugins/dmo/I3DL2Reverb.cpp Modified: trunk/OpenMPT/soundlib/plugins/dmo/I3DL2Reverb.cpp ============================================================================== --- trunk/OpenMPT/soundlib/plugins/dmo/I3DL2Reverb.cpp Mon Nov 18 22:40:48 2024 (r22231) +++ trunk/OpenMPT/soundlib/plugins/dmo/I3DL2Reverb.cpp Mon Nov 18 23:15:33 2024 (r22232) @@ -505,7 +505,7 @@ m_roomFilter = 0.0f; } else { - float freq = std::cos(HFReference() * (2.0f * mpt::numbers::pi_v<float>) / m_effectiveSampleRate); + float freq = std::min(std::cos(HFReference() * (2.0f * mpt::numbers::pi_v<float>) / m_effectiveSampleRate), 0.9999f); float roomFilter = (freq * (roomHF + roomHF) - 2.0f + std::sqrt(freq * (roomHF * roomHF * freq * 4.0f) + roomHF * 8.0f - roomHF * roomHF * 4.0f - roomHF * freq * 8.0f)) / (roomHF + roomHF - 2.0f); m_roomFilter = Clamp(roomFilter, 0.0f, 1.0f); } |