From 8fd495f906f03e59cdc3e68ec33d0b9b6f257427 Mon Sep 17 00:00:00 2001 From: lizzie Date: Wed, 27 May 2026 00:04:27 +0200 Subject: [video_core] fix std::bitset<> dirty tracker OOB, fix slightly wrong index format estimate (#4006) u8 may have been 0xff, (aka. 255), but bitset was only 255 elements, so doing bitset[255] is technically OOB additionally the max size estimate for index formats was not correct, there can be up to 256 elements with a u8 format index, not just 255 Signed-off-by: lizzie Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/4006 Reviewed-by: crueter Reviewed-by: MaranBr --- src/video_core/dma_pusher.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'src/video_core/dma_pusher.cpp') diff --git a/src/video_core/dma_pusher.cpp b/src/video_core/dma_pusher.cpp index f98e20171a..8a7798e035 100644 --- a/src/video_core/dma_pusher.cpp +++ b/src/video_core/dma_pusher.cpp @@ -181,12 +181,12 @@ void DmaPusher::CallMethod(u32 argument) const { }); } else { auto subchannel = subchannels[dma_state.subchannel]; - if (!subchannel->execution_mask[dma_state.method]) { - subchannel->method_sink.emplace_back(dma_state.method, argument); - } else { + if (subchannel->execution_mask[dma_state.method]) { subchannel->ConsumeSink(); subchannel->current_dma_segment = dma_state.dma_get + dma_state.dma_word_offset; subchannel->CallMethod(dma_state.method, argument, dma_state.is_last_call); + } else { + subchannel->method_sink.emplace_back(dma_state.method, argument); } } } -- cgit v1.2.3