From 089c3880193558eb113eb9134484dbc05e7f68e1 Mon Sep 17 00:00:00 2001 From: DHrpcs3 Date: Wed, 1 Oct 2025 10:17:25 +0300 Subject: [PATCH] cellAudio: avoid buffers count overflow Limit desired buffer count, add logging --- ps3fw/cellAudio.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/ps3fw/cellAudio.cpp b/ps3fw/cellAudio.cpp index b3d4826ee..072309dc1 100644 --- a/ps3fw/cellAudio.cpp +++ b/ps3fw/cellAudio.cpp @@ -108,6 +108,14 @@ void cell_audio_config::reset(bool backend_changed) maximum_block_period = (6 * audio_block_period) / 5; desired_full_buffers = buffering_enabled ? static_cast(desired_buffer_duration / audio_block_period) + 3 : 2; + + if (desired_full_buffers > MAX_AUDIO_BUFFERS + EXTRA_AUDIO_BUFFERS) + { + cellAudio.error("%s: desired_full_buffers truncation: value = %d, frame size = %f, output channel count = %d, input channel count = %d, desired buffer duration = %d", + backend->GetName(), desired_full_buffers, cb_frame_len, ch_cnt, audio_channels, desired_buffer_duration); + desired_full_buffers = MAX_AUDIO_BUFFERS - EXTRA_AUDIO_BUFFERS; + } + num_allocated_buffers = desired_full_buffers + EXTRA_AUDIO_BUFFERS; fully_untouched_timeout = static_cast(audio_block_period) * 2;