From 6ee55aafb4b711e8fbbc8f4966f1840d1d9d8490 Mon Sep 17 00:00:00 2001 From: "Herman S." <429230+has207@users.noreply.github.com> Date: Sat, 21 Feb 2026 00:37:23 +0900 Subject: [PATCH] [XMA] Guard against subframe_decode_count being 0 --- src/xenia/apu/xma_context_new.cc | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/xenia/apu/xma_context_new.cc b/src/xenia/apu/xma_context_new.cc index cb12d79f1..30f081b34 100644 --- a/src/xenia/apu/xma_context_new.cc +++ b/src/xenia/apu/xma_context_new.cc @@ -291,9 +291,12 @@ void XmaContextNew::Consume(RingBuffer* XE_RESTRICT output_rb, } } - int8_t subframes_to_write = - std::min((int8_t)current_frame_remaining_subframes_, - (int8_t)data->subframe_decode_count); + // Guard against subframe_decode_count == 0 which would cause zero progress + // and an infinite loop in Work(). Treat 0 as 1 (minimum progress). + const uint8_t effective_sdc = + std::max(static_cast(1), data->subframe_decode_count); + int8_t subframes_to_write = std::min( + (int8_t)current_frame_remaining_subframes_, (int8_t)effective_sdc); // Clamp to loop end limit if active. if (loop_frame_output_limit_ > 0) {